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
有两个问题:
- 您使用文字匹配运算符 (
=
) 而不是正则表达式匹配 (=~
)。
- 您需要将列表放在括号内,否则
\.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
我想通过 node_exporter 监控特定服务,而无需使用 --collector.systemd.unit-include="(foo|bar)\.service"
这应该如何在 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
有两个问题:
- 您使用文字匹配运算符 (
=
) 而不是正则表达式匹配 (=~
)。 - 您需要将列表放在括号内,否则
\.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