微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多行日志的顺序不正确

如何解决多行日志的顺序不正确

我有一个看起来像这样的日志:

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}"
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?