我正在使用最新版本的 logstash(7.6.2)。我正在尝试计算在系统中花费的总时间,不包括在 Out2 和 In2 之间花费的时间,即给定 ID的 [(Out3-In1) - (Out2-In2)]。在我的示例数据下方找到时间戳、事件和 ID 列
样本数据
18/May/2015:02:05:10 +0000 In1 100
18/May/2015:02:05:15 +0000 Out1 100
18/May/2015:02:05:26 +0000 In2 100
18/May/2015:02:05:48 +0000 Out2 100
18/May/2015:15:05:08 +0000 In3 100
18/May/2015:16:05:03 +0000 Out3 100
我目前正在使用两个经过函数和 2 个聚合函数,如下所示在配置文件中
配置文件
filter{
grok{
match => {"message" => "%{HTTPDATE:timestamp} %{WORD:Event} %{NUMBER:ID}"}
add_tag => ["%{Event}"]
}
date{
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
elapsed {
start_tag => "In1"
end_tag => "Out3"
unique_id_field => "ID"
}
elapsed {
start_tag => "In2"
end_tag => "Out2"
unique_id_field => "ID"
}
if [Event] == "Out2" {
aggregate {
task_id => "%{ID}"
code => "map['time1'] = (event.get('elapsed_time')*1000).to_i"
map_action => "create"
}
}
if [Event] == "Out3" {
aggregate {
task_id => "%{ID}"
code => "map['time2'] = (event.get('elapsed_time')*1000).to_i - map['time1']; event.set('time1', map['time2'])"
map_action => "update"
end_of_task => true
}
}
}
我能够生成经过时间字段,但无法计算使用 Agreggate 过滤器之间的差异。在我的输出下面找到
有什么我想念的吗?
任何帮助表示赞赏!提前致谢