我正在使用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)
属于同一个会话。
我希望有这个:
会话表
名称、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)时,我可以在下面的第二个表中看到该会话的所有记录:
日志表
时间戳、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 表的索引包含会话字段,可以是session1
、session2
等。这两个索引都在我的控制之下。因此,如果需要,我可以添加任何字段。