当前位置: 首页 > 面试题库 >

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

拓拔玺
2023-03-14
问题内容

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

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



 类似资料:
  • 我的任务是比较一些当前时期的日志和旧的日志。例如——本周日志和前一周日志。但是当我创建这样的第二个轴时 我有一个空的部分,因为我所有的xAx都是“时间”类型的,并且点的时间不一样(这是绝对正常的行为)。我有这种情况 但是我需要制作独立的轴,例如:顶部轴开始于30sep,结束于3oct底部轴开始于7oxt,结束于10oct,它们的长度都相同 我试着创造这样的斧头 但是如果没有“ticks”属性,我会

  • 好了,这里是第一次用到NutDao的关联关系了, 打开User类,加入2行 @One(target=UserProfile.class, field="id", key="userId") protected UserProfile profile; 自然的,为其添加Getter/Setter

  • 发现问题! 假如按照上一讲的制作方法,设定了对话框的话,实际执行游戏时,会是下面的效果: 人物姓名占用了原本对话的第一行位置,并且把对话挤到第二行了。这当然可以通过调整对话框的文字显示范围来修改,但是只做这样的修改的话,名字和对话永远是对齐的,并且距离也是固定的。有没有什么办法作出“姓名和对话分开”的效果呢?答案当然是肯定的,只不过需要一点努力~ 将姓名与对话显示分离 这个修改没有图形界面,不过也

  • 问题内容: 我已经研究了很多关于Java线程的教程,但是找不到答案。 我的问题是:如何同时运行两个独立的线程? 我的情况是:我有两个任务; 保存一些数据到数据库 在移动设备上发送推送通知。 由于这两个任务是独立的,因此我想同时执行它们。 我尝试使用具有两个线程的线程池,但是问题是数据库任务很快完成,但是发送推送通知需要一些时间。 因此,当一个任务完成而另一个任务仍未完成时,它将引发异常。 我的代码

  • 如何使用gcc 7.2.0在64位DebianLinux上的C中创建两个独立的随机数生成器(无需加密安全)?两个RNG中的一个应该使用,而另一个应该使用命令行参数初始化以创建可重复的实验。下面的示例将为同一个RNG播种两个不同的值,这将如何工作有两个不同的可能的调用? 这样做的目的是,我使用一个RNG动态生成问题实例,在所有实验运行中都应该是相同的,因此在所有程序重新启动时遵循相同的种子。第二个R