Node_exporter node_systemd_unit_state

Node_exporter node_systemd_unit_state

我想通过 node_exporter 监控特定服务,而无需使用 --collector.systemd.unit-include="(foo|bar)\.service"

将它们指向 node_exporter 服务

这应该如何在 prometheus 配置中定义?

我在尝试

- name: Services monitoring
rules:
- alert: Service is down
 expr: node_systemd_unit_state{name="ubrokerd|besclient|boksm|collectd|crond|ldapauth|network|NetworkManager|sshd|tomcat|ubrokerd|nginx|node_exporter\.service", state="inactive"} == 1
 for: 0m
 labels:
   severity: warning
 annotations:
   summary: service is down on host {{ $labels.instance }}
   description: "Service is down"

但这似乎不起作用 - 如果任何服务出现故障,则不会触发警报

您的 expr 有两个问题:

  1. 您使用文字匹配运算符 (=) 而不是正则表达式匹配 (=~)。
  2. 您需要将列表放在括号内,否则 \.service 仅适用于最后一项。

试试这个:

 expr: node_systemd_unit_state{name=~"(ubrokerd|besclient|boksm|collectd|crond|ldapauth|network|NetworkManager|sshd|tomcat|ubrokerd|nginx|node_exporter)\.service", state="inactive"} == 1