一个日志中的多个模式
Multiple patterns in one log
所以我现在为正在运行的日志编写了几种模式。现在的问题是,我在一个文件中拥有这些具有多种模式的多个日志。 logstash 如何知道它必须对日志中的哪一行使用哪种模式? (我正在使用 grok 进行过滤)如果你们超级好心,能否给我文档的 link,因为我找不到任何关于此的信息:/
您可以为 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/。它可能没有具体解决你的问题,但可以推断。
先写最具体的 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}"
]
}
}
所以我现在为正在运行的日志编写了几种模式。现在的问题是,我在一个文件中拥有这些具有多种模式的多个日志。 logstash 如何知道它必须对日志中的哪一行使用哪种模式? (我正在使用 grok 进行过滤)如果你们超级好心,能否给我文档的 link,因为我找不到任何关于此的信息:/
您可以为 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/。它可能没有具体解决你的问题,但可以推断。
先写最具体的 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}"
]
}
}