Kibana将两个独立事件联系起来

我已将ELK配置为脱机收集数据,日志文件如下所示:

Info 2015-08-15 09:33:37,522 User 3 connected

Info 2015-08-15 10:03:57,592 User 99 connected

Info 2015-08-15 11:42:37,522 User 99 disconnected

Info 2015-08-15 11:49:12,108 User 3 disconnected

我正在寻找的是时间线上的平均连接时间。

我无法在消息中添加更多信息,特别是无法在断开连接消息中添加连接时间。

回答:

如果要用Logstash加载ES,则可以使用aggregate过滤器来组装相关的离散日志行。这个想法是要注意一个持续时间较长的事件何时开始(即用户已连接),然后disconnected在同一用户的事件通过以下时间结束时结束该事件:(请注意,您的grok模式可能有所不同,但是原理是相同的)

filter {

grok {

match => [ "message", "%{LOGLEVEL:loglevel} %{TIMESTAMP_ISO8601:timestamp} %{WORD:entity} %{INT:userid} %{WORD:status}" ]

}

if [status] == "connected" {

aggregate {

task_id => "%{userid}"

code => "map['started'] = event['timestamp']"

map_action => "create"

}

}

if [status] == "disconnected" {

aggregate {

task_id => "%{userid}"

code => "event['duration'] = event['timestamp'] - map['started']"

map_action => "update"

end_of_task => true

timeout => 86400000

}

}

}

最后,您将获得一个名为duration(以毫秒为单位)的附加字段,然后可以使用该字段在Kibana上绘制以显示平均连接时间。

另请注意,我给了一天的任意超时时间,这可能会也可能不适合您的情况。随意玩。

以上是 Kibana将两个独立事件联系起来 的全部内容, 来源链接: utcz.com/qa/403310.html

回到顶部