Kibana:日志和计算字段之间的持续时间

时间:2015-11-02 23:13:38

标签: logging elasticsearch logstash kibana

我正在尝试使用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。

谢谢!

2 个答案:

答案 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.0​​00中添加了一个名称为TimeBefore的营地名称,您可以使用脚本字段:

doc [' Time']。value-doc [' TimeBefore']。值并将此阵营保存为差异时间。

也许还有其他更好的解决方案,但这是我能想象到的唯一解决方案。

与Kibana一起运气。