如何在 Dashboard 或其他地方让一个 discover table link 到另一个 discover table?
How to make one discover table link to another discover table in Dashboard or elsewhere?
我正在使用 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)
的日志行属于同一个会话。
我希望有这个:
届会table
名称,client_ip,主机
会话 1,www.google.com,1.2.3.4
会话 2,www.bing.com,5.6.7.8
会话 3,www.google.com,4.3.2.1
当我点击上面的其中一个session(例如session1)时,我可以在下面的第二个table中看到该session的所有记录:
日志table
时间戳,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 做平面索引,在文档之间建立层次结构并不容易。我可以为上述两个 table 创建单独的索引。我知道 Dashboard 可以同时显示两个 Discover table。但我的问题是:
如何link这两个table?当我点击Sessiontable中的一项时,Logtable会显示相应的内容?
或者有没有其他方法可以满足我的要求(在 Kibana 中轻松查看基于会话的日志)?谢谢。
更新
Logtable的索引包含session字段,可以是session1
、session2
等,这两个索引都在我的控制之下。所以我可以根据需要添加任何字段。
我要做的是在日志 table 中添加一个 session
字段,每个日志行包含与会话 table 中相同的会话名称。那将是你的 "join key".
然后,您可以创建一个 sessions
索引和另一个 logs
索引。两个索引都必须具有 session
字段。然后进入Kibana,可以为每个索引创建一个索引模式。
接下来,转到“发现”选项卡并为每个索引模式创建一个已保存的搜索,您现在应该有一个名为 "Logs" 的已保存搜索和另一个名为 "Sessions".
的已保存搜索
最后,转到“仪表板”选项卡并添加您之前创建的两个已保存搜索。在下面的屏幕截图中,您可以看到将鼠标悬停在会话字段上时,您可以按该字段进行过滤。如果您单击(例如)session2
,那么两个 table 都会相应地进行过滤,从而实现您所需要的。
我正在使用 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)
的日志行属于同一个会话。
我希望有这个:
届会table
名称,client_ip,主机
会话 1,www.google.com,1.2.3.4
会话 2,www.bing.com,5.6.7.8
会话 3,www.google.com,4.3.2.1
当我点击上面的其中一个session(例如session1)时,我可以在下面的第二个table中看到该session的所有记录:
日志table
时间戳,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 做平面索引,在文档之间建立层次结构并不容易。我可以为上述两个 table 创建单独的索引。我知道 Dashboard 可以同时显示两个 Discover table。但我的问题是:
如何link这两个table?当我点击Sessiontable中的一项时,Logtable会显示相应的内容?
或者有没有其他方法可以满足我的要求(在 Kibana 中轻松查看基于会话的日志)?谢谢。
更新
Logtable的索引包含session字段,可以是session1
、session2
等,这两个索引都在我的控制之下。所以我可以根据需要添加任何字段。
我要做的是在日志 table 中添加一个 session
字段,每个日志行包含与会话 table 中相同的会话名称。那将是你的 "join key".
然后,您可以创建一个 sessions
索引和另一个 logs
索引。两个索引都必须具有 session
字段。然后进入Kibana,可以为每个索引创建一个索引模式。
接下来,转到“发现”选项卡并为每个索引模式创建一个已保存的搜索,您现在应该有一个名为 "Logs" 的已保存搜索和另一个名为 "Sessions".
的已保存搜索最后,转到“仪表板”选项卡并添加您之前创建的两个已保存搜索。在下面的屏幕截图中,您可以看到将鼠标悬停在会话字段上时,您可以按该字段进行过滤。如果您单击(例如)session2
,那么两个 table 都会相应地进行过滤,从而实现您所需要的。