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)属于同一个会话。

我希望有这个:


  1. 会话表

    名称、client_ip、主机

    session1,www.google.com,1.2.3.4

    session2, www.bing.com, 5.6.7.8

    session3, www.google.com, 4.3.2.1


当我单击上述会话之一(例如 session1)时,我可以在下面的第二个表中看到该会话的所有记录:


  1. 日志表

    时间戳、http_method、request_uri、http_status、host、user_agent、client_ip、client_port

    20181105, 21:33:17.773, POST, /index.html, 200, www.google.com, chrome 59, 1.2.3.4, 1234

    20181105, 21:33:18.773, POST, /abc.html, 200, www.google.com, chrome 59, 1.2.3.4, 1234

    20181105, 21:33:19.773, POST, /index.html, 404, www.google.com, chrome 59, 1.2.3.4, 5678


我知道 Elasticsearch 做平面索引,文档之间有层次结构并不容易。我可以为上述两个表创建单独的索引。我知道 Dashboard 可以同时显示两个 Discover 表。但我的问题是:

如何链接这两个表?当我点击Session表中的一项时,Log表会显示相应的内容?

或者有没有其他方法可以满足我的要求(在 Kibana 中轻松查看基于会话的日志)?谢谢。


更新

Log 表的索引包含会话字段,可以是session1session2等。这两个索引都在我的控制之下。因此,如果需要,我可以添加任何字段。

4

1 回答 1

1

我要做的是session在日志表中添加一个字段,该字段包含与每个日志行的会话表中相同的会话名称。那将是您的“加入密钥”。

然后,您可以创建一个sessions索引和另一个logs索引。两个索引都必须具有该session字段。然后进入 Kibana,可以为每个索引创建一个索引模式。

接下来,转到 Discover 选项卡并为每个索引模式创建一个已保存的搜索,您现在应该有一个名为“Logs”的已保存搜索和另一个名为“Sessions”的搜索。

最后,前往仪表板选项卡并添加您之前创建的两个已保存搜索。在下面的屏幕截图中,您可以看到将鼠标悬停在会话字段上时,您可以按该字段进行过滤。如果你点击 (eg) session2,那么两个表都会被相应地过滤,从而达到你所需要的。

在此处输入图像描述

于 2018-11-08T05:05:58.750 回答