多行日志顺序不对
Multi line log not in the right order
我的日志如下所示:
1613635264 host1 AAA 0.11 0.09 0.12 16 13
1613635264 host1 BBB 0.21 0.23 176141
1613635264 host2 AAA 2.08 1.76 1.38 4 3
1613635264 host2 BBB 6.21 0.12 228981
1613635264 host3 AAA 0.58 1.12 1.75 16 0
1613635264 host3 BBB 4.46 0.11 254346
1613635265 host4 AAA 1.07 1.11 1.38 16 4
1613635265 host5 AAA 18.21 17.97 19.19 5 2
1613635265 host4 BBB 3.18 0.40 105858
1613635265 host5 BBB 64.69 1.08 418177
AAA 和 BBB 行不按顺序排列,但时间戳(第一列)对于这对行是相同的。
是否可以使用 logstash 合并这两行?
像这样:
{
time: 1613635264,
host: host1,
metric1: 0.11
metric2: 0.09
metric3: 0.12
metric4: 16
metric5: 13
metric6: 0.21
metric7: 0.23
metric8: 176141
}
我想在 elasticsearch 中更新相同的文档。
这可能吗?
我找到了解决方案,我设置了一个唯一的 document_id 来匹配 2 对行,设置 doc_as_upsert=true 和 action=update。
output {
elasticsearch {
hosts => ["localhost:9200"]
doc_as_upsert => "true"
action => "update"
document_id => "%{@timestamp}%{hostname}"
}
}
我的日志如下所示:
1613635264 host1 AAA 0.11 0.09 0.12 16 13
1613635264 host1 BBB 0.21 0.23 176141
1613635264 host2 AAA 2.08 1.76 1.38 4 3
1613635264 host2 BBB 6.21 0.12 228981
1613635264 host3 AAA 0.58 1.12 1.75 16 0
1613635264 host3 BBB 4.46 0.11 254346
1613635265 host4 AAA 1.07 1.11 1.38 16 4
1613635265 host5 AAA 18.21 17.97 19.19 5 2
1613635265 host4 BBB 3.18 0.40 105858
1613635265 host5 BBB 64.69 1.08 418177
AAA 和 BBB 行不按顺序排列,但时间戳(第一列)对于这对行是相同的。
是否可以使用 logstash 合并这两行?
像这样:
{
time: 1613635264,
host: host1,
metric1: 0.11
metric2: 0.09
metric3: 0.12
metric4: 16
metric5: 13
metric6: 0.21
metric7: 0.23
metric8: 176141
}
我想在 elasticsearch 中更新相同的文档。 这可能吗?
我找到了解决方案,我设置了一个唯一的 document_id 来匹配 2 对行,设置 doc_as_upsert=true 和 action=update。
output {
elasticsearch {
hosts => ["localhost:9200"]
doc_as_upsert => "true"
action => "update"
document_id => "%{@timestamp}%{hostname}"
}
}