Info
Content

Configuration/Alerting rules

Правила алертинга позволяют определять состояния используя prometheus expression language и слать алерты во внешние сервисы

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

Defining alerting rules

Правила алертинга конфигурируются так же как и правила записи

groups:
- name: example
  rules:
  - alert: HighRequestLatency
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
    labels:
      severity: page
    annotations:
      summary: High request latency
  • for - опциональный параметр. Указывает prometheus'у проверять на протяжении указанного периода, то что выражение активно, и только после этого слать алерт. Уже активные, но еще не сработавшие алерты находятся в состоянии ожидания
  • labels - тут можно определить набор лейблов для алерта
  • annotations - тут можно определить набор информационных лейблов, например описание проблемы или полезные ссылки

Templating

Лейблы и аннотации могут быть затемплейчены через console templates
Переменная $labels содержит пары key/value алерт инстанса
Внешние лейблы могут вызываться через $externalLabels
Переменная $value содержит значение

groups:
- name: example
  rules:

  # Alert for any instance that is unreachable for >5 minutes.
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: page
    annotations:
      summary: "Instance {{ $labels.instance }} down"
      description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."

  # Alert for any instance that has a median request latency >1s.
  - alert: APIHighRequestLatency
    expr: api_http_request_latencies_second{quantile="0.5"} > 1
    for: 10m
    annotations:
      summary: "High request latency on {{ $labels.instance }}"
      description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"

Inspecting alerts during runtime

После того как у нас сработал алерт, мы можем получить time series по этому алерту, в метрике хранится состояние проверки
Screenshot_2021_02_02-12_49_03-2021-06-20-at-14aou.png
Screenshot_2021_02_02-12_49_03-2021-06-20-ataaa.png

Time Series ALERTS хранит только активные и ожидающие алерты
На скрине видно что данные перестали писаться в этот временной ряд после того как алерт перешел в ОК
Единица туда пишется просто так, чтобы писать хоть что-то, смысловой нагрузки единица не несет
Screenshot_2021_02_02-12_49_03-2021-06-20-at-14aeo.png

Sending alert notifications

Страница с алертами это хороший способ узнать что сломано прямо сейчас
Но это не полноценное решение для нотификаций
Следующим уровнем нужно добавить суммирование, ограничение скорости уведомлений, приглушение и зависимости алертов
В экосистеме prometheus эту роль занимает alertmanager

Прометеус шлет в алертменеджер все подряд, а алертменеджер отсылает только то что нужно (с учетом зависимостей и прочего)

Прометеус может быть настроен на автодискаверинг доступных алертменеджеров

No Comments
Back to top