我有一个日志文件,例如:
2015-12-05 05:00:51 preffix1_sent 1
2015-12-05 05:00:52 preffix2_sent 2
2015-12-05 05:00:53 preffix1_received 1
2015-12-05 05:00:54 preffix2_received 2
我想知道特定事件花了多少时间。我在logstash中使用经过时间的插件,如下所示:
....
grok {
patterns_dir => "path"
match => {
"message" => "%{TIMESTAMP:logtime}, %{EVENT:event}, %{SPLIT:ID}"
}
}
filter{
if [event] == "(.)*sent" {
if [event] == "preffix1(.)*" {
kv {
add_tag => [ "preffix1_sent" ]
}
} else if [event] == "preffix2(.)*" {
kv {
add_tag => [ "preffix2_sent" ]
}
} else if [event] == "(.)*received" {
if [event] == "preffix1(.)*" {
kv {
add_tag => [ "preffix1_received" ]
}
} else if [event] == "preffix2(.)*" {
kv {
add_tag => [ "preffix2_received" ]
}
}
}
}
filter{
elapsed {
start_tag => "preffix1_sent"
end_tag => "preffix1_received"
unique_id_field => "ID"
new_event_on_match => false
}
}
filter{
elapsed {
start_tag => "preffix2_sent"
end_tag => "preffix2_received"
unique_id_field => "ID"
new_event_on_match => false
}
}
....
如果我理解" kv"的使用,我不确定我的嵌套if语句的语法是否正确。我是logstash的新手。但是,我无法使用此配置在kibana中找到任何标记。我哪里弄错了? 感谢
答案 0 :(得分:1)
几条评论:
这些改变可能会让你走上正轨。
对于一些未经请求的建议,请查看您的工作流程。首先,使用grok应用正则表达式来创建三个字段。然后在执行add_field之前再次使用其中一个(2-3次)。试试这个:
不仅更多" grok-ish",而且在应用于大型数据集时会更快。