2015-11-02 102 views
1

我正在尝试使用Kibana来计算两个日志事件之间的持续时间。我遇到的问题是日志没有唯一的标识符。我将不得不根据某些列将它们分组。在发现选项卡中,我将它设置为这样。我搜索了“沟通”和“鼓sw”,并按时间排序结果。Kibana:日志和计算字段之间的持续时间

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。

谢谢!

回答

1

使用经过的{}过滤器,您可以指定一个复杂的模式,它是您的唯一键(如合并两个字段)。

0

我认为使用脚本领域是不可能的,因为:

有使用Lucene表达式时,有一些限制:

Stored fields are not available 

有了这个,我supose,你不能引用的时候,因为是商店没有独特价值的领域。一种解决方案可能是存储每个日期之前的时间。举个例子:

1:2015年9月10日,03:04:41.000通讯失败drum sw 939,你添加了一个营地名称TimeBefore,价值2015年9月10日,03:04:46.0​​00,带脚本的字段:

doc ['Time'] .value-doc ['TimeBefore']。值并将这个阵营保存为不同的时间。

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

运气与Kibana。