具有多个结束事件的经过时间

问题描述 投票:0回答:1

下面是我的示例日志文件,我正在使用下面的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的开始和结束之间的经过时间(**已保存或已修改)**

logstash logstash-configuration
1个回答
0
投票

只是偶然偶然发现了这个问题。没有更多的上下文,这就是我的想法。查看条件语句,您正在打印已保存或已修改的事件。

根据您的“当前输出”与“所需输出”以及您的条件逻辑,您可以通过为每个ID存储一个已保存或已修改的值的“最高值”来实现您的目标。

© www.soinside.com 2019 - 2024. All rights reserved.