0

我正在使用elasticsearch + kibana + logstash + filebeat最新的 6.4.1 来收集和分析网络日志。我的日志列如下:

timestamp, http_method, request_uri, http_status, host, user_agent, client_ip, client_port

我已将 ELK 配置为在 Kibana 中显示我的日志。但现在我想查看我的会话日志。我希望日志行可以按会话分组并显示在 Kibana 的Discover页面中。在我的场景中,相同的日志行(host, client_ip)属于同一个会话。

我希望带有会话/分组 UI 的 Discover 可以显示所有会话。当我单击它时,我仍然可以看到一个会话中的日志行。

有可能做到吗?或者最好的方法是什么?谢谢。

4

2 回答 2

1

Discover 将日志条目显示为存储的原始文档,您可以将搜索保存在 Discover 上,即使不过滤任何内容。通过 Vizualize,您可以创建小部件,这些小部件可以像会话一样聚合数据。我通常为时间线制作一两个“可视化构建器”,为(request_uri、host、user_agent、client_ip)制作一个数据表,为 http_status 制作一个饼图。使用这些视觉效果,您可以创建仪表板并包含来自发现的搜索结果。在此仪表板上,您可以搜索和过滤,如果您从发现添加搜索,仪表板将显示每个仍将显示的原始数据。我只在添加新索引后使用发现。

https://www.elastic.co/guide/en/kibana/current/visualize.html

https://www.elastic.co/guide/en/kibana/current/dashboard.html

如果您真的希望索引包含 host/client_ip 作为聚合,则必须在将数据存储到 elasticsearch 之前对数据进行分组。仪表板听起来是个更好的主意。

编辑:正如 Waleed Ali 所描述的,可视化可能看起来像这样

在此处输入图像描述

于 2018-11-05T11:13:28.687 回答
1

正如@sleepyhead 所建议的那样,Discover 不是您正在寻找的目的。您可以从 Kibana 中的 Visualize 创建一个数据表(我猜,您已经完成了)。

接下来,在Bucket Aggregations部分,您可以选择Split Rows并选择TermsAggregation。在那里选择您想要的字段(主机)。然后添加一个子存储桶,然后再次选择拆分行,然后Terms选择聚合,然后选择另一个字段 (client_ip)。

这将在您的数据表中为两个字段(主机、client_ip)的每个唯一集创建一行,据我了解您的问题和评论,这是您所需要的。

默认情况下,只会有一个列 (Count),但是,您显然可以通过添加Metric Aggregations来添加更多列。

于 2018-11-08T09:45:40.987 回答