我正在使用elasticsearch + kibana + logstash + filebeat
最新6.4.1来收集和分析Web日志。我的日志列如下:timestamp, http_method, request_uri, http_status, host, user_agent, client_ip, client_port
我已经配置了ELK以在Kibana中显示我的日志。但是现在我想在 session 中查看我的日志。我希望日志行可以按 session 进行分组,并显示在Kibana的Discover
页面中。在我的场景中,具有相同(host, client_ip)
的日志行属于同一 session 。
我希望有这个:
名称,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
当我单击上述 session 之一(例如session1)时,可以在下面的第二张表中看到该 session 的所有记录:
时间戳,http_method,request_uri,http_status,主机,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进行平面索引编制,在文档之间建立层次结构并不容易。我可以为上述两个表创建单独的索引。我知道仪表板可以同时显示两个Discover表。但是我的问题是:
如何链接这两个表?当我单击“ session ”表中的一项时,“日志”表将显示相应的内容吗?
还是有其他方法可以满足我的要求(在Kibana中轻松查看基于 session 的日志)?谢谢。
更新
Log表的索引包含 session 字段,该字段可以是
session1
,session2
等。这两个索引都在我的控制之下。因此,如果需要,我可以添加任何字段。
最佳答案
我要做的是在日志表中添加一个session
字段,其中包含与每个日志行的 session 表中相同的 session 名。那将是您的“加入键”。
然后,您可以创建一个sessions
索引和另一个logs
索引。两个索引都必须具有该session
字段。然后进入Kibana,可以为每个索引创建一个索引模式。
接下来,转到“发现”选项卡并为每个索引模式创建一个保存的搜索,现在您应该有一个名为“Logs”的保存的搜索,还有一个名为“Sessions”的保存的搜索。
最后,转到“仪表板”选项卡并添加您先前创建的两个保存的搜索。在下面的屏幕截图中,您可以看到将鼠标悬停在 session 字段上时可以按该字段进行过滤。如果您点击(例如)session2
,那么两个表都将被相应地过滤,从而实现您所需要的。
关于elasticsearch - 如何使一个发现表链接到仪表板或其他地方的另一个发现表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201662/