首页 > 解决方案 > Kibana:我可以将“时间”存储为变量并运行连续搜索吗?

问题描述

我想自动进行一些搜索,步骤如下:

  1. 在 Kibana 中搜索此 ID:"b2c729b5-6440-4829-8562-abd81991e2a0"这将返回一堆日志。在这些日志中,我需要获取第一个和最后一个时间戳:

在此处输入图像描述

  1. 我现在想将这两个数据 FROM: September 3rd 2019, 21:28:22.155, TO:存储September 3rd 2019, 21:28:23.524在 2 个变量中

  2. 在 Kibana 中再次搜索"fail"这两个时间变量之间的单词

如何在不需要复制/粘贴和运行第二个查询的情况下自动化整个过程?

编辑:

短篇小说:我在一家为自动驾驶汽车生产软件的公司工作。 场景:预订被拒绝,我们需要了解原因。
问题出在哪里:我只需要在 3 台不同的机器上监控几秒钟的日志。每个日志是完全分离的,日志之间没有关系,所以我无法在发现中编写查询,我需要运行 3 个分离的查询。

例子:

  1. 预订被拒绝,所以我打开 Chrome 并在“elk-prod.myhost.com”上搜索 BookingID:"b2c729b5-6440-4829-8562-abd81991e2a0"我在 2 秒的范围内返回了十几个日志(FROM: September 3rd 2019, 21:28:22.155,TO: September 3rd 2019, 21:28:23.524)。
  2. 现在我需要知道车上发生了什么,所以我打开一个新的 Chrome 选项卡并在“elk-prod.myhost.com”上搜索 CarID:"Tesla-45-OU"在时间范围 FROM: September 3rd 2019, 21:28:22.155, TO:September 3rd 2019, 21:28:23.524
  3. 现在我需要知道为什么计算匹配的服务器拒绝了预订,所以我打开一个新的 Chrome 选项卡并CalculationMatrix始终在 FROM: September 3rd 2019, 21:28:22.155, TO:时间范围内搜索单词September 3rd 2019, 21:28:23.524

结论:我想停止手动打开 Chrome 标签页并自动化整个过程。我不知道这本书的制作时间,所以我首先需要搜索 BookingID "b2c729b5-6440-4829-8562-abd81991e2a0",然后存储第一个和最后一个日志的时间戳,并根据这些时间戳运行第二个和第三个查询。

我搜索的 3 个日志之间没有关系,因此无法从 Discover 中过滤,我需要自动执行 3 个不同的查询。

标签: regexdebuggingelasticsearchloggingkibana

解决方案


这是我将如何做到的。首先,据我了解,您有三个不同的索引:

  • 一个用于“预订”
  • 一个用于“汽车”
  • 一个用于“匹配”

首先,在 Discover 中,我将创建三个 Saved Search,每个索引模式一个。然后在 Visualize 中,我将在预订保存的搜索上创建一个垂直条形图(date_histogramtimestamp字段上按桶 X 轴,其余部分保持不变)。您将获得按时间分组的所有预订事件的漂亮直方图。最后,我将创建一个仪表板并在其中添加垂直条形图 + 这三个已保存的搜索。

完成后,我将根据您上面描述的过程进行搜索的方式如下:

  1. b2c729b5-6440-4829-8562-abd81991e2a0在顶部过滤器栏中搜索预订 ID 。在条形图直方图(预订)中,您将看到与所选预订相关的所有文件。在该图表上,您可以选择从第一个预订文件发生到最后一个的确切时间段。这将调整顶部的主要时间选择器,并且 Kibana 将“记住”开始/结束时间

  2. 从顶部过滤器中删除预订 ID(因为我们现在知道时间范围并且 Kibana 存储它)。Tesla-45-OU在顶部过滤器栏中搜索。柱状图 + 预订保存搜索 + 匹配保存搜索将为空,但您将在第二个列表中拥有数据,即汽车列表。在其中找到您需要找到的任何内容,然后进行下一步。

  3. 从顶部过滤器中删除汽车 ID 并搜索ComputationMatrix。现在,第三次保存的搜索将显示您需要在该时间范围内查看的任何文档。

我缺乏实际的数据来尝试这一点,但我绝对认为这是可能的,正如我在上面所阐述的那样,可能需要进行一些调整。


推荐阅读