下面是我的示例日志文件,我正在使用下面的Ruby过滤器来查找给定ID在开始和结束(**是已保存或已修改 ****)之间的经过时间。>
样本日志文件
TIMESTAMP EVENT ID Apr 28, 2020 @ 15:17:22.337 Start 1 Apr 28, 2020 @ 15:17:23.215 Saved 1 Apr 28, 2020 @ 15:17:24.440 Start 2 Apr 28, 2020 @ 15:17:24.964 Saved 2 Apr 28, 2020 @ 15:17:25.359 Modified 2 Apr 28, 2020 @ 16:18:29.587 Start 3 Apr 28, 2020 @ 16:18:31.562 Saved 3 Apr 28, 2020 @ 16:18:31.914 Modified 3 Apr 28, 2020 @ 20:07:52.946 Start 4 Apr 28, 2020 @ 20:07:53.304 Saved 4
Ruby过滤器
ruby { code => " if event.get('Event') == 'Start' @save_the_timestamp = event.get('@timestamp') @save_the_ID = event.get('ID') elsif event.get('LOGLEVEL2') == 'Saved' && event.get('ID') == @save_the_ID event.set('elapsed_time', event.get('@timestamp') - @save_the_timestamp) elsif event.get('LOGLEVEL2') == 'Modified' && event.get('ID') == @save_the_ID event.set('elapsed_time', event.get('@timestamp') - @save_the_timestamp) end " }
使用Ruby过滤器的当前输出
TIMESTAMP EVENT ID elapsed_time Apr 28, 2020 @ 15:17:22.337 Start 1 - Apr 28, 2020 @ 15:17:23.215 Saved 1 0.878 Apr 28, 2020 @ 15:17:24.440 Start 2 - Apr 28, 2020 @ 15:17:24.964 Saved 2 0.524 Apr 28, 2020 @ 15:17:25.359 Modified 2 0.919 Apr 28, 2020 @ 16:18:29.587 Start 3 - Apr 28, 2020 @ 16:18:31.562 Saved 3 1.975 Apr 28, 2020 @ 16:18:31.914 Modified 3 2.327 Apr 28, 2020 @ 20:07:52.946 Start 4 - Apr 28, 2020 @ 20:07:53.304 Saved 4 0.358
但是,我希望有一个给定ID的单个经过时间] >>。这有助于我在Kibana中轻松进行可视化。聚合执行此操作,但将其作为单独的事件进行推送。在给定ID的最后一个事件中是否有任何方法,如下面所需的输出所示。
感谢您的帮助。预先感谢。
所需的输出
TIMESTAMP EVENT ID elapsed_time Apr 28, 2020 @ 15:17:22.337 Start 1 - Apr 28, 2020 @ 15:17:23.215 Saved 1 0.878 Apr 28, 2020 @ 15:17:24.440 Start 2 - Apr 28, 2020 @ 15:17:24.964 Saved 2 - Apr 28, 2020 @ 15:17:25.359 Modified 2 0.919 Apr 28, 2020 @ 16:18:29.587 Start 3 - Apr 28, 2020 @ 16:18:31.562 Saved 3 - Apr 28, 2020 @ 16:18:31.914 Modified 3 2.327 Apr 28, 2020 @ 20:07:52.946 Start 4 - Apr 28, 2020 @ 20:07:53.304 Saved 4 0.358
下面是我的示例日志文件,并且我正在使用下面的Ruby过滤器来查找给定ID示例日志文件TIMESTAMP的开始和结束之间的经过时间(**已保存或已修改)**
只是偶然偶然发现了这个问题。没有更多的上下文,这就是我的想法。查看条件语句,您正在打印已保存或已修改的事件。
根据您的“当前输出”与“所需输出”以及您的条件逻辑,您可以通过为每个ID存储一个已保存或已修改的值的“最高值”来实现您的目标。