如果不匹配某个值,是否可以使用 Logstash 来 remove_field?
Is it possible to use Logstash to remove_field if it does not match a certain value?
我们想通过删除不包含“_log”的字段来使用 Logstash 过滤日志。 remove_field
语法可用,但仅适用于删除符合特定条件的字段。
filter {
grok {
remove_field => [ "log_" ]
}
}
# This works for removing the log_ field, we want to remove everything that does NOT match log_.
是否也可以删除不符合特定条件的字段?
我们尝试使用正则表达式来实现这一点,但它不起作用(是否在某处记录了您不能使用正则表达式?)。删除所有 other 字段也是一种选择,但需要更多的努力。我们希望有人可以帮助我们过滤所有不包含 "log_".
的字段
其中一种方法是..
- 标记不符合条件的字段(使用
tag_on_failure
)
- 删除上面标记的字段
示例:-
grok {
match => ["log_"]
tag_on_failure => ["_todelete"]
}
然后
grok {
remove_tag => [ "_todelete" ]
}
正则表达式应该有效:
filter {
if [field] !~ /pattern/ {
mutate {
remove_field => [ "field" ]
}
}
}
我们想通过删除不包含“_log”的字段来使用 Logstash 过滤日志。 remove_field
语法可用,但仅适用于删除符合特定条件的字段。
filter {
grok {
remove_field => [ "log_" ]
}
}
# This works for removing the log_ field, we want to remove everything that does NOT match log_.
是否也可以删除不符合特定条件的字段?
我们尝试使用正则表达式来实现这一点,但它不起作用(是否在某处记录了您不能使用正则表达式?)。删除所有 other 字段也是一种选择,但需要更多的努力。我们希望有人可以帮助我们过滤所有不包含 "log_".
的字段其中一种方法是..
- 标记不符合条件的字段(使用
tag_on_failure
) - 删除上面标记的字段
示例:-
grok {
match => ["log_"]
tag_on_failure => ["_todelete"]
}
然后
grok {
remove_tag => [ "_todelete" ]
}
正则表达式应该有效:
filter {
if [field] !~ /pattern/ {
mutate {
remove_field => [ "field" ]
}
}
}