Prometheus: пример использования Alertmanager
Mar 10, 2016 09:50 · 284 words · 2 minute read
Наиболее простой пример использования 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 для применения изменений.