我正在运行 node_exporter 并想创建一个 grafana 仪表板,但我不确定要搜索文档的哪些概念。我想显示一个主机列表,其中包含一个 systemd 单元列表,其状态由标签“活动”、“非活动”或“失败”表示,颜色为绿色、灰色和红色。
我一直在寻找使用 systemd 管理 grafana 或 prometheus 的方法,例如 here 或者我发现了一个没有代码存储库链接的旧仪表板 here
这是我要构建的图片:
这是我从 node_exporter 获得的与给定服务相关的指标类型的示例,在本例中为 foo.service:
vagrant@srv0:~$ curl -s localhost:9100/metrics | grep systemd | grep foo.servicenode_systemd_unit_state{name="foo.service",state="activating",type="simple"} 0
node_systemd_unit_state{name="foo.service",state="active",type="simple"} 1
node_systemd_unit_state{name="foo.service",state="deactivating",type="simple"} 0
node_systemd_unit_state{name="foo.service",state="failed",type="simple"} 0
node_systemd_unit_state{name="foo.service",state="inactive",type="simple"} 0
Status Panel 插件可能会帮助您实现您想要的。我正在使用它(连同 Discrete,用于警报历史记录)来显示每个环境(生产、阶段和测试)中所有服务的状态。
我有 2 个模板变量,
$environment
和 $service
,我正在重复一行,其中包含一个离散面板和每个 $environment
值的多个状态面板。在行内,我为每个值重复状态面板 $service
。在状态面板本身,颜色取决于是否有警报触发(类似于您的状态集),我还列出了一些指标,例如 QPS 和中值延迟。
如您的示例所示,节点导出器为 {name,state,instance}(和其他字段)的每个组合创建一个唯一的时间序列。
使用最新版本的 Grafana (8.4),使用“表格”面板类型和过滤很容易完成接近您的目标的事情。要创建仅包含失败作业的表,请使用像
node_systemd_unit_state{state="failed"}
这样的“即时”查询。添加转换以按值过滤以大于或等于1
,使用字段覆盖隐藏您不关心的任何列,然后为state
列设置“单元格显示模式”覆盖.这将导致失败的单元列表。
要显示所有单元,即使是那些没有失败的单元,您可能需要进行一些其他类型的转换……也许是“分组依据”或“减少”?我不确定。
这就是我如何在没有插件的情况下实现类似的东西(Grafana v9.4.3):
node_systemd_unit_state{name=~"nginx.service|fail2ban.service|meilisearch.service|node_exporter.service|promtail.service",instance="$source"} == 1
Table
并键入Instant
.name
和 status
之外,我隐藏了所有内容。我还为 name
列添加了覆盖以将类型更改为 auto
所以它会保持默认颜色。最终结果: