gpt4 book ai didi

elasticsearch - Kibana 连接两个独立的事件

转载 作者:行者123 更新时间:2023-11-29 02:51:24 25 4
gpt4 key购买 nike

我将 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 上绘图以显示平均连接时间。

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

关于elasticsearch - Kibana 连接两个独立的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34652075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com