Правила алертинга
Yandex Managed Service for Prometheus® позволяет добавить правила вычисления алертов и отправлять уведомления об их срабатывании.
Для использования алертинга:
- Добавьте правила алертинга.
- Настройте Alert Manager для обработки и доставки уведомлений.
В этом разделе описаны особенности работы с правилами алертинга и конфигурацией Alert Manager. Управление файлами см. в разделе Правила записи.
Вы можете настраивать алертинг через консоль управления
Предварительная настройка для работы с API
API представлен набором REST-ресурсов, которые находятся по адресу https://monitoring.api.cloud.yandex.net/prometheus/workspaces/<идентификатор_воркспейса>/extensions/v1/rules.
Чтобы начать выполнять запросы:
- Установите cURL
. - Аутентифицируйтесь в API.
- Создайте воркспейс и скопируйте его идентификатор, чтобы использовать в адресе запросов.
Добавление правил алертинга
Требования к правилам алертинга
В Yandex Managed Service for Prometheus® можно использовать правила алертинга (alerting rules
При описании правил учитывайте особенности:
- Поддерживаются все поля из спецификации
YAML-файла. - Поддерживается шаблонизация
аннотаций с помощью переменных$valueи$labels. - Не поддерживаются итерации и функции.
Пример файла с правилами алертинга
Чтобы проверить работу алертинга, скопируйте код ниже в файл host-cpu-usage-alert.yml.
groups:
- name: CPU_Usage_Alerts
rules:
- alert: HighCPUUsage
expr: 100 * (1 - avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) > 80
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected on {{$labels.instance}}"
description: "CPU usage on instance {{$labels.instance}} has been above 80% for the last 5 minutes."
В примере описано правило CPU_Usage_Alerts с алертом HighCPUUsage. Алерт срабатывает, когда загрузка процессора выше 80% сохраняется более 5 минут. Процент загрузки процессора вычисляется по формуле в поле expr.
Для алерта задана метка severity: critical, которая используется для маршрутизации каналов уведомлений. В конфигурации Alert Manager можно сопоставить каналам определенные метки, чтобы уведомления по разным алертам отправлялись в разные каналы.
Добавление и замена файла с правилами алертинга
- На странице сервиса Monitoring
слева выберите Prometheus. - Выберите или создайте воркспейс.
- Перейдите на вкладку Правила.
- Если у вас еще нет загруженных файлов, нажмите Добавить файл и выберите файл
.ymlс правилами. - Чтобы добавить еще один файл, нажмите Добавить файл.
- Чтобы заменить существующий файл, справа от него нажмите
> Заменить файл.
-
Создайте файл
host-cpu-usage-alert.ymlи закодируйте его содержимое в Base64 согласно RFC 4648 :# cat <<EOF > host-cpu-usage-alert.yml groups: - name: CPU_Usage_Alerts rules: - alert: HighCPUUsage expr: 100 * (1 - avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) > 80 for: 5m labels: severity: critical annotations: summary: "High CPU usage detected on {{$labels.instance}}" description: "CPU usage on instance {{$labels.instance}} has been above 80% for the last 5 minutes." EOF # base64 -iw0 host-cpu-usage-alert.yml Z3JvdXBzOgotIG5hbWU6I****** -
Сохраните результат в JSON-файл:
body.json
{ "name": "host-cpu-usage-alert.yml", "content" : "Z3JvdXBzOgotIG5hbWU6I******" } -
Создайте или замените файл с правилами алертинга:
export IAM_TOKEN=<IAM-токен> curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d "@body.json" \ "https://monitoring.api.cloud.yandex.net/prometheus/workspaces/<идентификатор_воркспейса>/extensions/v1/rules"
После создания правил алертинга они будут вычисляться и создавать метрики ALERTS и ALERTS_FOR_STATE. Для отправки уведомлений настройте Alert Manager.
Следить за статусами алертов можно на отдельной вкладке Prometheus → Алерты в консоли управления
Подробнее о действиях с файлами и вычислении правил см. в разделе Правила записи.
Настройка Alert Manager
Alert Manager
Особенности настройки каналов уведомлений
- Каналы уведомлений из файла конфигурации сопоставляются с каналами уведомлений в Yandex Monitoring, которые заданы в каталоге воркспейса.
- Сейчас поддерживается отправка в каналы Email
, Telegram , SMS и Push. Остальные каналы будут проигнорированы без уведомлений об ошибках. - Канал выбирается согласно правилам маршрутизации
в конфигурации Alert Manager, в секцииroutes. В правилах маршрутизации каналы сопоставляются меткам, заданным в правилах алертинга в секцииlabels. Напримерseverity: critical.
Пример файла конфигурации
В этом примере настроена отправка уведомлений в Telegram, Email, SMS и Push.
global:
resolve_timeout: 5m
# Маршрутизация и группировка алертов
route:
# Получатель по умолчанию
receiver: 'default-receiver'
routes:
# В этот канал отправляются уведомления по алертам с меткой severity="warning"
- receiver: 'warning-receiver'
matchers:
- severity="warning"
# В этот канал отправляются уведомления по алертам с меткой severity="critical"
- receiver: 'critical-receiver'
matchers:
- severity="critical"
receivers:
# Получатель по умолчанию, в этот канал отправляются уведомления по алертам, для которых нет совпадений в секции routes
- name: 'default-receiver'
yandex_monitoring_configs:
# Каналы не указаны, алерты без меток не отправляются
- channel_names: []
# Получатель для алертов с меткой severity="warning", вместо email укажите имя канала, заданного в каталоге воркспейса
- name: 'warning-receiver'
yandex_monitoring_configs:
- channel_names: [ 'email', 'push-channel' ]
# Получатель для алертов с меткой severity="critical", вместо telegram укажите имя канала, заданного в каталоге воркспейса
- name: 'critical-receiver'
yandex_monitoring_configs:
- channel_names: [ 'telegram', 'sms-channel' ]
Подробнее о настройке динамической маршрутизации уведомлений см. в документации Prometheus
Добавление и замена файла конфигурации
- На странице сервиса Monitoring
слева выберите Prometheus. - Выберите или создайте воркспейс.
- Перейдите на вкладку Конфигурация Alert manager.
- Если у вас еще нет загруженного файла конфигурации, нажмите кнопку Загрузить файл конфигурации и выберите файл
.yml. - Чтобы скачать файл, нажмите Скачать.
- Чтобы заменить файл, нажмите Заменить файл.
-
Сохраните конфигурацию в файл
alertmanager.ymlи закодируйте в Base64 согласно RFC 4648 :# cat <<EOF > alertmanager.yml global: resolve_timeout: 5m route: receiver: 'default-receiver' routes: - receiver: 'warning-receiver' matchers: - severity="warning" - receiver: 'critical-receiver' matchers: - severity="critical" receivers: - name: 'default-receiver' yandex_monitoring_configs: - channel_names: [] - name: 'warning-receiver' yandex_monitoring_configs: - channel_names: [ 'email', 'push-channel' ] - name: 'critical-receiver' yandex_monitoring_configs: - channel_names: [ 'telegram', 'sms-channel' ] EOF # base64 -iw0 alertmanager.yml # Z2xvYmFsOgogIHJlc29sdmVfdGltZW91****** -
Сохраните результат в JSON-файл:
alertmanager-body.json
{ "content" : "Z2xvYmFsOgogIHJlc29sdmVfdGltZW91******" } -
Создайте или замените файл конфигурации:
export IAM_TOKEN=<IAM-токен> curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d "@alertmanager-body.json" \ "https://monitoring.api.cloud.yandex.net/prometheus/workspaces/<идентификатор_воркспейса>/extensions/v1/alertmanager"
В случае успешного запроса будет возвращен HTTP-код 204, иначе — текст ошибки. Файл, в котором не удалось найти ни одного соответствия текущим каналам уведомлений в каталоге, не будет принят.
Просмотр алертов
Состояние алертов можно отслеживать в консоли управления
Чтобы просмотреть алерты:
- На странице сервиса Monitoring
слева выберите Prometheus. - Выберите или создайте воркспейс.
- Перейдите на вкладку Алерты и посмотрите списки правил с алертами.
- (Опционально) Настройте фильтрацию алертов по имени и статусу.
Список статусов алертов:
OK— условие алерта не выполняется.PENDING— условие алерта выполняется, но не прошло время из параметраfor.FIRING— условие алерта выполняется и прошло время из параметраfor. Отправляются уведомления.ERROR— ошибка при вычислении правила алерта.