我在 Prometheus 设置中设置了 5 个警报。其中 3 个按预期工作。但是,有 2 个从未触发过。我真的很困惑,我需要一些帮助。
因此,以下两条规则不是工作有:
alert: CriticalDiskSpace
expr: node_filesystem_free{filesystem!~"^/run(/|$)",fstype!~"tmpfs",job="{{
$labels.job }}"} / node_filesystem_size{job="{{ $labels.job }}"} <
0.25
for: 4m
labels:
severity: critical
annotations:
description: '{{ $labels.instance }} of job {{ $labels.job }} has less than 25%
space remaining.'
summary: Instance {{ $labels.instance }} - Critical disk space usage
alert: CriticalCPULoad
expr: (100
* (1 - avg by(instance) (irate(node_cpu{job="{{ $labels.job }}",mode="idle"}[2m]))))
> 75
for: 2m
labels:
severity: critical
annotations:
description: '{{ $labels.instance }} of job {{ $labels.job }} has Critical CPU load
for more than 2 minutes.'
summary: Instance {{ $labels.instance }} - Critical CPU load
当我在 Prometheus 中手动运行规则时,我得到了正确的值。例如,对于 HDD,我有一个测试实例,其中 FS 为 79%,因此它应该触发。
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 50G 40G 11G 79% /
node_filesystem_free{filesystem!~"^/run(/|$)",fstype!~"tmpfs",fstype!~"rootfs", job="ec2_eu_west_1_discovery"} / node_filesystem_size{job="ec2_eu_west_1_discovery"} < 0.25
当然,Prometheus 具有正确的值:
Element:
{device="/dev/xvda1",fstype="xfs",instance="Grafana Test",job="ec2_eu_west_1_discovery",mountpoint="/"}
Value:
0.21932882130469517
答案1
我找到了一种使规则生效的方法。
因此,如果我改变一下表达方式:
node_filesystem_free{filesystem!~"^/run(/|$)",fstype!~"tmpfs",job="{{
$labels.job }}"} / node_filesystem_size{job="{{ $labels.job }}"} <
0.25
更改为:
node_filesystem_free{filesystem!~"^/run(/|$)",fstype!~"tmpfs"} / node_filesystem_size < 0.25
我收到一条警报。因此,现在我需要了解为什么在规则浏览器中我可以使用 {job="{{ $labels.job }}"},而在 rules.yml 文件中却不能使用。