elasticsearch 计算logstash中不同事件之间的差值或增量,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch 计算logstash中不同事件之间的差值或增量,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch 计算logstash中不同事件之间的差值或增量

elasticsearch 计算logstash中不同事件之间的差值或增量,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,假设我有一个如下所示的日志文件: # 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,

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

# 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
中实现这一点。我知道我可以事先编辑这些文件。 谢谢

解决方案#1:编写插件 一种方法是创建一个插件。同样的问题也解决了。然而,发布在那里的过滤器并不公开,更糟糕的是,它实际上是5行代码

解决方案2:Ruby代码片段 我在
elastic
论坛上找到了一个解决方案:。标题说明了一切

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

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')
        "
    }
}

毕竟没那么难