ELK - 使用 Logstash 过滤数据
ELK - Filtering data with Logstash
我正在试验 ELK 堆栈,到目前为止一切顺利。我有一个小问题要解决。
我有一个来自 filebeat 的名为 'message' 的字段。该字段内是一个包含用于记录数据的字符串。
有时该消息字段可能包含此行:
successfully saved with IP address: [142.93.111.8] user: [testuser@some.com]
我想应用过滤器,因此 logstash 将其发送到 Elastic Search:
successfully saved with IP address: [] user: [testuser@some.com]
这是我目前在 Logstash 配置中的配置:
input {
beats {
port => "5043"
codec => json
}
}
filter {
if [message] =~ /IP address:/{
mutate { add_tag => "whats happening" }
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
还有一件事引起了我的注意。 ELK 能够在 Filebeat 级别和 Logstash 级别进行文本过滤。哪一个是最常见的场景?是不是Filebeat过滤更合适?
我找到了适合我的情况的正确解决方案:
mutate {
gsub => ["message", "address: \[(.*?)]", "address:[not indexable]"]
}
希望有人会发现它有用。
我正在试验 ELK 堆栈,到目前为止一切顺利。我有一个小问题要解决。 我有一个来自 filebeat 的名为 'message' 的字段。该字段内是一个包含用于记录数据的字符串。 有时该消息字段可能包含此行:
successfully saved with IP address: [142.93.111.8] user: [testuser@some.com]
我想应用过滤器,因此 logstash 将其发送到 Elastic Search:
successfully saved with IP address: [] user: [testuser@some.com]
这是我目前在 Logstash 配置中的配置:
input {
beats {
port => "5043"
codec => json
}
}
filter {
if [message] =~ /IP address:/{
mutate { add_tag => "whats happening" }
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
还有一件事引起了我的注意。 ELK 能够在 Filebeat 级别和 Logstash 级别进行文本过滤。哪一个是最常见的场景?是不是Filebeat过滤更合适?
我找到了适合我的情况的正确解决方案:
mutate {
gsub => ["message", "address: \[(.*?)]", "address:[not indexable]"]
}
希望有人会发现它有用。