我正在尝试使用Kibana来计算两个日志事件之间的持续时间 . 我遇到的问题是日志没有唯一标识符 . 我必须根据某些列对它们进行分组 . 在发现选项卡中,我将其设置为这样 . 我搜索了“通信”和“鼓sw”并按时间排序结果 .
1: September 10th 2015, 03:04:41.000 Communication Failure drum sw 939
2: September 10th 2015, 03:04:46.000 Communication Normal drum sw 939
3: September 10th 2015, 03:28:07.000 Communication Failure drum sw 2305
4: September 10th 2015, 03:28:13.000 Communication Normal drum sw 2305
有没有办法按区(sw)和设备类型(SW)对这些日志进行分组?除此之外,如何创建计算字段以确定事件之间的持续时间?
因此对于前两个,它们之间的持续时间是5秒:例如:(当前时间) - (结束时间)= 5秒 . 这是我在脚本字段中要做的事情吗?
我正在使用最新版本的ELK配置 . Kibana 4.2 elasticsearch和logstash 2.0.0 .
谢谢!
2 回答
使用已过滤的{}过滤器,您可以指定作为唯一键的复杂模式(例如组合两个字段) .
我认为使用脚本字段是不可能的,因为:
使用Lucene表达式时有一些限制:
有了这个,我认为你不能引用时间,因为是一个没有唯一值的商店字段 . 一种解决方案可能是存储每个日期之前的时间 . 一个例子:
1:2015年9月10日,03:04:41.000通信故障鼓sw 939并且您添加了一个名称为TimeBefore的营地名称为2015年9月10日,03:04:46.000,您使用脚本字段:
doc ['Time'] . value-doc ['TimeBefore'] . 值并将此阵营保存为差异时间 .
也许还有其他更好的解决方案,但这是我能想象到的唯一解决方案 .
运气与Kibana .