Logstash 在基于匹配模式的弹性搜索中,将日志索引为不同的类型(模式)
例如,这里是我的日志文件Logstash 在基于匹配模式的弹性搜索中,将日志索引为不同的类型(模式),logstash,logstash-grok,Logstash,Logstash Grok,例如,这里是我的日志文件 [2016-10-18 12:05:53.228] log example [2016-10-18 11:55:53.228] 19249060-91df-11e6-be68-753fa0e2c729 logg example [2016-10-18 11:35:53.228] 19249060-91ff-11e6-be68-753fa0e2c729 loggg example /api/userbasic/userinfo?requestedUserId=1924
[2016-10-18 12:05:53.228] log example
[2016-10-18 11:55:53.228] 19249060-91df-11e6-be68-753fa0e2c729 logg example
[2016-10-18 11:35:53.228] 19249060-91ff-11e6-be68-753fa0e2c729 loggg example /api/userbasic/userinfo?requestedUserId=19249060-91df-11e6-be68-753fa0e2c729
grok过滤器用于我的日志。在这里,我使用了多种模式
filter {
grok {
match => [
"message","\[%{TIMESTAMP_ISO8601:timestamp1}\] %{WORDS_EX:msg}",
"message","\[%{TIMESTAMP_ISO8601:timestamp2}\] %{UUID:user_id1} %{WORDS_EX:msg2} %{URIPATHPARAM:path}",
"message","\[%{TIMESTAMP_ISO8601:timestamp3}\] %{UUID:user_id2} %{WORDS_EX:msg3}"
]
}
}
现在我想用不同的类型(模式)将日志索引到elasticsearch中,如
日志库/类型1,
日志库/类型2,
日志库/类型3
感谢您的帮助 首先,您的过滤器有一个问题:grok模式会一个接一个地进行计算,当一个模式匹配时,其他模式将不会进行计算,因此需要将该模式从最具体的(具有
%{URIPATHPARAM:path}
的模式)排序到最一般的(具有%{WORDS\u EX:msg}
的模式),如下所示:
然后,您可以使用各种字段的存在/不存在,例如:
if [path] {
elasticsearch {
...
}
} else if [user_id2] {
elasticsearch {
...
}
} else {
elasticsearch {
...
}
}
首先,您的过滤器有一个问题:grok模式被逐个计算,当一个模式匹配时,其他模式将不会被计算,因此该模式需要从最具体的(带有
%{URIPATHPARAM:path}
)到最一般的(带有%{WORDS\u EX:msg}
)排序,如下所示:
然后,您可以使用各种字段的存在/不存在,例如:
if [path] {
elasticsearch {
...
}
} else if [user_id2] {
elasticsearch {
...
}
} else {
elasticsearch {
...
}
}