作者:傅雪莱_ | 来源:互联网 | 2023-05-22 14:58
所以我现在写了几个正在运行的日志模式.现在的情况是,我在一个文件中有多个日志,多个模式.logstash如何知道它必须用于日志中哪一行的模式?(我使用grok进行过滤)如果你们是超级友善的,你能给我链接到文档,因为我无法找到任何关于此的内容:/
1> Magnus Bäck..:
你可以为你的grok过滤器使用多种模式,
grok {
match => ["fieldname", "pattern1", "pattern2", ..., "patternN"]
}
并且它们将按顺序应用但是a)它不是性能方面的最佳选择; b)您可能希望以不同方式处理不同类型的日志,因此我建议您根据消息的类型或标签使用条件:
if [type] == "syslog" {
grok {
match => ["message", "your syslog pattern"]
}
}
在输入插件中设置类型.
当前发布的Logstash版本的文档位于http://logstash.net/docs/1.4.2/.它可能没有具体解决您的问题,但可以推断出来.
2> BornToCode..:
首先编写最具体的grok并使用以下语法:
grok {
match => {
"message" => [
#Most specific grok:
"%{TIMESTAMP_ISO8601:temp_date}%{SPACE}%{LOGLEVEL:log_level}%{UUID:user_id}",
#Less specific:
"%{TIMESTAMP_ISO8601:temp_date}%{SPACE}%{GREEDYDATA:log_message}"
]
}
}