Прометей предупреждает о значении ниже порога - PullRequest
0 голосов
/ 22 апреля 2020

Мы используем предупреждение Prometheus (и экспортер узла), чтобы проверить, не хватает ли памяти на узле.

Проблема: во многих случаях я получаю предупреждение со значением $, которое ниже порогового значения в выражении.

Выражение:

alert: GettingOutOfMemory
expr: max(sum
  by(instance) ((((node_memory_MemTotal_bytes) - (node_memory_MemFree_bytes + node_memory_Buffers_bytes
  + node_memory_Cached_bytes)) / (node_memory_MemTotal_bytes)) * 100)) >= 90
for: 5m
labels:
  severity: warning
annotations:
  description: Docker Swarm node {{ $labels.instance }} memory usage is at {{ humanize $value}}%.
  summary: Memory is getting low for Swarm node '{{ $labels.node_name }}'

Я получаю сообщения о том, что нам не хватило памяти, например, на 83%. Так что это значение $ value. Это явно ниже 90% порога.

Почему я получаю это предупреждение, даже если значение $ ниже порога?

Как я могу восстановить это правило предупреждений Прометея, чтобы получать уведомления только тогда, когда значение $ превышает пороговое значение?

1 Ответ

0 голосов
/ 25 апреля 2020

Проверим правильность выражения. По крайней мере, экземпляр метки аннотации неправильный, потому что используется max ().

Следующее выражение дает лучшие результаты:

 - alert: high_memory_load
    expr: (sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) ) / sum(node_memory_MemTotal_bytes) * 100 > 85
    for: 30s
    labels:
      severity: warning
    annotations:
      summary: "Server memory is almost full"
      description: "Docker host memory usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...