我正在尝试使用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秒:Ex :(当前时间) - (结束时间)= 5秒。这是我在脚本字段中要做的事情吗?
我正在使用最新版本的ELK配置。 Kibana 4.2 elasticsearch和logstash 2.0.0。
谢谢!
答案 0 :(得分:1)
使用已过滤的{}过滤器,您可以指定一个复杂模式,它是您的唯一键(例如组合两个字段)。
答案 1 :(得分:0)
我认为使用脚本字段是不可能的,因为:
使用Lucene表达式时存在一些限制:
Stored fields are not available
有了这个,我认为你不能引用时间,因为是一个没有唯一值的商店字段。一种解决方案可能是存储每个日期之前的时间。一个例子:
1:2015年9月10日,03:04:41.000通讯故障鼓sw 939,您在2015年9月10日03:04:46.000中添加了一个名称为TimeBefore的营地名称,您可以使用脚本字段:
doc [' Time']。value-doc [' TimeBefore']。值并将此阵营保存为差异时间。
也许还有其他更好的解决方案,但这是我能想象到的唯一解决方案。
与Kibana一起运气。