Prometheus 警报未触发

Prometheus 警报未触发

我在 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 文件中却不能使用。

相关内容