【问题标题】:Calculate difference or delta between different events in logstash计算logstash中不同事件之间的差异或增量
【发布时间】:2021-06-04 02:13:41
【问题描述】:

假设我有一个如下所示的日志文件:

# time, count
2016-09-07 23:00:00,    1108731
2016-09-07 23:00:02,    1108733
2016-09-07 23:00:03,    1108734

现在,下一行包含过去发生的所有事件的总和。我想在kibana 中使用它,自然的方法是将count 作为增量数字。

所以我期望的效果是:

# time, count, deltaCount
2016-09-07 23:00:00,    1108731, 0
2016-09-07 23:00:02,    1108733, 2
2016-09-07 23:00:03,    1108734, 1

如何在logstash 中实现这一点。我知道我可以事先编辑这些文件。 谢谢!

【问题讨论】:

    标签: elasticsearch logstash kibana


    【解决方案1】:

    解决方案 #1:编写插件

    一种方法是创建一个插件。同样的问题已解决here。但是,那里发布的过滤器不公开可用,更糟糕的是,它实际上是 5 行代码。

    解决方案 #2:Ruby 代码 sn-p

    我在elastic 论坛上的这个帖子中找到了解决方案:Keeping global variables in LS?!。标题说明了一切。

    长话短说,解决方法如下:

    filter {
        ...
        ruby {
            init => "@@previous_count = -1"
            code => "
                if (@@previous_count == -1)
                    delta = 0
                else 
                    delta = event.get('count') - @@previous_count
                end
                event.set('requests', delta)
    
                # remember event for next time
                @@previous_count = event.get('count')
            "
        }
    }
    

    毕竟没那么难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2022-11-02
      • 2019-11-18
      • 2021-10-15
      • 2021-04-13
      • 1970-01-01
      • 2020-03-25
      相关资源
      最近更新 更多