У меня есть 5 предупреждений в настройках Prometheus. 3 из них работают как положено. Однако у меня есть 2, которые никогда не срабатывают. Я действительно сбит с толку, и здесь мне нужна помощь.
Итак, 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, я получаю правильные значения. Например, для жесткого диска у меня есть тестовый экземпляр, где 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
И, конечно же, Прометей имеет правильное значение:
Element:
{device="/dev/xvda1",fstype="xfs",instance="Grafana Test",job="ec2_eu_west_1_discovery",mountpoint="/"}
Value:
0.21932882130469517
Я нашел способ заставить правило срабатывать.
Итак, если я изменю выражение с этого:
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.