我正在使用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)
的日志行属于同一会话。
我希望有这个:
会话表
名称,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,主机,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表。但是我的问题是:
如何链接这两个表?当我单击“会话”表中的一项时,“日志”表将显示相应的内容吗?
还是有其他方法可以满足我的要求(在Kibana中轻松查看基于会话的日志)?谢谢。
更新
“日志”表的索引包含会话字段,该字段可以为session1
,session2
等。这两个索引都在我的控制之下。因此,我可以根据需要添加任何字段。
答案 0 :(得分:1)
我要做的是在日志表中添加一个session
字段,其中包含与每个日志行的会话表中相同的会话名。那将是您的“加入键”。
然后,您可以创建一个sessions
索引和另一个logs
索引。两个索引都必须具有该session
字段。然后进入Kibana,可以为每个索引创建一个索引模式。
接下来,转到“发现”选项卡,并为每个索引模式创建一个保存的搜索,现在您应该有一个名为“日志”的保存搜索,以及另一个名为“会话”的保存搜索。
最后,转到“仪表板”选项卡,并添加您先前创建的两个保存的搜索。在下面的屏幕截图中,您可以看到,将鼠标悬停在会话字段上时,可以按该字段进行过滤。如果您点击(例如)session2
,则将对这两个表进行相应过滤,从而实现所需的功能。