Prometheus: пример использования Alertmanager

Mar 10, 2016 09:50 · 284 words · 2 minute read prometheus monitoring

Наиболее простой пример использования alertmanager в системе мониторинга Prometheus — получение предупреждений о доступном свободном месте на жестких дисках.

Давайте разберемся, как с помощью функции predict_linear() получать полезные и своевременные предупреждения!

Чаще всего предупреждения о заканчивающемся свободном месте на жестких дисках приходят когда диск заполнен на 80-90%. Иногда можно настроить получение уведомлений при оставшемся свободном месте объемом, например, 10 гигабайт. Эти подходы хороши когда жесткие диски на серверах заполняются постепенно и медленно, но что делать если вдруг диск начинает заполняться экспоненциально?

Функция predict_linear() в системе мониторинга Prometheus позволяет получить предупреждение когда диск будет заполнен, например, в течении 4 часов.

Примечание. Несложно догадаться, что название функции происходит от английского to predict — предсказывать.

Выглядеть это будет примерно так:

ALERT DiskWillFillIn4Hours
  IF predict_linear(node_filesystem_free{job='node'}[1h], 4*3600) < 0
  FOR 5m
  LABELS {
    severity="page"
  }

Рассмотрим данный пример подробнее. В первой строке

ALERT DiskWillFillIn4Hours

начало описания уведомления и его название. Вторая строка — самая важная

IF predict_linear(node_filesystem_free{job='node'}[1h], 4*3600) < 0

Выражение node_filesystem_free{job='node'}[1h] вычисляет динамику заполнения диска за последний час и с помощью predict_linear() прогнозирует заполненность диска на следующие 4 часа (4 * 3600 секунд), и если свободного места предположительно остается меньше 0, то будет отправлено предупреждение.

Примечание. Способ отправки предупреждения будет зависеть от ваших индивидуальных настроек alertmanager - это может быть письмо или смс-сообщение.

Строка

FOR 5m

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

Все это можно поместить в файл правил (назовем его node.rules) и дописать путь к этому файлу в конфиг Prometheus (prometheus.yml):

global:
  scrape_interval: "15s"
 
# Paths are relative to the configuration file.
rule_files:
  - path/to/node.rules
 
scrape_configs:
  - 
  - 
  -

Не забываем перезапустить Prometheus для применения изменений.

tweet Share