如何将系统名称的静态列表与 Loki/Grafana 中的日志进行匹配以查找不活动的系统?

问题描述 投票:0回答:1

我正在与 Loki/Grafana 合作,并尝试修改当前标识被视为“离线”的系统的查询。如果系统在过去 7 天内发送过日志但在最近 5 分钟内没有发送过日志,则系统被视为离线。但是,我想更改此逻辑,将过去 5 分钟内活动的系统与固定列表进行比较,并显示属于列表一部分但在过去 5 分钟内未发送日志的系统。

系统的固定列表通过 promtail 以 JSON 文件形式提供给 Loki/Grafana,如下所示:

{
  "allSystems": ["mrs2-14", "mrs2-11", "mrs2-103"],
  "totalCount": 3
}

我可以使用以下查询在 Grafana 中查询此 JSON 数据:

{job="mrs_system_info"} |= ``

我需要交叉引用系统的静态列表和日志,以确定哪些系统在过去 5 分钟内没有报告。我当前用来查找“离线”系统的查询是:

count by(system) (count_over_time({job="mrs_error_list"} |~ "" [7d]))
unless
count by(system) (count_over_time({job="mrs_error_list"} |~ "" [5m]))

如何更改此查询以检查 JSON 数据中的 allSystems 数组而不是最近 7 天的日志?

我希望最终输出显示 allSystems 数组中但在过去 5 分钟内未发送日志的系统列表。

任何关于如何使用 Loki/Grafana 正确实现此逻辑的建议将不胜感激。

grafana grafana-loki grafana-variable promtail logql
1个回答
0
投票

我使用了markalex的解决方案,这样我就能够使用相同的查询

© www.soinside.com 2019 - 2024. All rights reserved.