我正在使用elasticsearch + kibana + logstash + filebeat
最新的6.4.1来收集和分析Web日志。我的日志列如下:
timestamp, http_method, request_uri, http_status, host, user_agent, client_ip, client_port
我已经配置了ELK以在Kibana中显示我的日志。但是现在我想在会话中查看我的日志。我希望日志行可以按会话进行分组,并显示在Kibana的Discover
页中。在我的情况下,具有相同(host, client_ip)
的日志行属于同一会话。
我希望“带有会话/分组的UI”发现界面可以显示所有会话。当我单击它时,我仍然可以在一个会话中看到日志行。
有可能做到吗?或最佳方法是什么?谢谢。
答案 0 :(得分:1)
Discover显示原始存储的日志条目为原始文档,即使不过滤任何内容,您也可以将搜索保存在Discover上。通过Vizualize,您可以创建小部件,这些小部件可以汇总会话之类的数据。我通常为时间轴制作一个或两个“可视生成器”,为(request_uri,host,user_agent,client_ip)制作一个数据表,为http_status制作一个饼图。借助这些视觉效果,您可以创建仪表板,并包含来自发现的搜索结果。在此仪表板上,您可以搜索和过滤,如果您从发现中添加搜索,则仪表板将显示每个原始数据,但仍将显示。我仅在添加新索引后使用Discover。
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所描述的,可视化效果看起来像这样
答案 1 :(得分:1)
如@sleepyhead所建议,发现并非出于您的目的。您可以从Kibana中的Visualize创建一个数据表(我想您已经完成了)。
接下来,在桶聚合部分中,您可以选择分割行并进行Terms
聚合。在此处选择所需的字段(主机)。然后添加一个子存储桶,然后再次选择分割行,然后选择Terms
聚合,然后选择另一个字段(client_ip)。
这将为两个字段(主机,client_ip)的每个唯一集合在数据表中创建一行,据我所知,这是您所需要的。
默认情况下,只会有一个列(计数),但是,您显然可以通过添加 Metric Aggregations 添加更多列。