Как можно отключить уведомления для определённого хоста в Prometheus?

Здравствуйте! У меня есть правило в файле rules.yml, которое выдает ошибку при переполнении жесткого диска: 

<pre><code class="yaml">- alert: HostOutDiskSpaceCrit20
        expr: (node_filesystem_avail_bytes* 100) / node_filesystem_size_bytes < 20 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
        for: 2m
        labels:
          severity: high
        annotations:
          summary: Заканчивается дисковое пространство (instance {{ $labels.instance }})
          description: "Disk is almost full (&lt; 20% left)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"</code></pre>

Однако у меня есть виртуальная машина VM01, которая постоянно выдает предупреждение о переполнении. Как я могу исключить эту машину из данного правила?
  • 27 сентября 2024 г. 14:03
Ответы на вопрос 2
Чтобы исключить определённый хост из правила оповещения в Prometheus, вам нужно добавить условие фильтрации в ваше выражение `expr`. В вашем случае, вы хотите исключить виртуальную машину с именем `VM01`. 

Для этого вы можете использовать директиву `unless`, чтобы ваше правило не срабатывало для этой машины. Вот как это можно сделать:

```yaml
- alert: HostOutDiskSpaceCrit20
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 20 
        and ON (instance, device, mountpoint) 
        node_filesystem_readonly == 0 
        unless instance == "VM01"
  for: 2m
  labels:
    severity: high
  annotations:
    summary: Заканчивается дисковое пространство (instance {{ $labels.instance }})
    description: "Disk is almost full (&lt; 20% left)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
```

В этом примере к условию добавлено `unless instance == "VM01"`. Таким образом, уведомления не будут генерироваться для машины `VM01`, даже если она соответствует другим условиям правила.

Если вы хотите исключить несколько виртуальных машин, вы можете использовать регулярное выражение:

```yaml
unless instance =~ "VM01|VM02|VM03"
```

Это позволит игнорировать уведомления для машин `VM01`, `VM02` и `VM03`.
А как пробовали понять как исключить? Задали вопрос тут? 
expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 20 and ON (instance, device, mountpoint) node_filesystem_readonly == 0 and instance != "vm1"
Похожие вопросы