Метрики и выражения для правил алертинга

Справочник по написанию выражений для правил алертинга: доступные метрики сервисов и их лейблы, синтаксис фильтрации, примеры выражений на PromQL/MetricsQL и зарезервированные аннотации со ссылками на дашборды.

На этой странице:

Эта страница — справочник для составления выражений в правилах алертинга. О том, как создавать правила в веб-интерфейсе (поля формы, предпросмотр, работа с правилами), см. Настройка оповещений. Обзор модуля алертинга — на странице Алертинг в Proto Observability Platform.

Языки выражений

Proto Observability Platform поддерживает выражения в правилах алертинга, написанные на языках PromQL и MetricsQL.

Правило срабатывает, когда выражение возвращает результат. Например, выражение ... > 100 вернёт серии только для тех сущностей, у которых значение превышает порог 100, — именно по ним и сработает алерт.

Доступные метрики сервисов

Ниже перечислены ключевые метрики сервисов, доступные для правил алертинга. Список не исчерпывающий: в правилах можно использовать любую метрику из хранилища метрик (инфраструктурные, Kubernetes, метрики БД и др.) — полный каталог доступен в Браузере метрик. Кроме того, набор метрик, для которых строится базовая линия, можно расширить через конфигурацию (см. Выявление аномалий → Как добавить метрики).

Ключевые метрики сервисов:

  • services_calls: количество вызовов сервиса за интервал;
  • services_callduration: среднее время отклика сервиса, в миллисекундах;
  • services_errorcallsperc: доля вызовов с ошибками, в процентах (от 0 до 100);
  • services_apdex: значение APDEX сервиса, от 0 до 1 (1 — все запросы обслужены в пределах целевого времени).

Для трёх из этих метрик платформа дополнительно строит ML-базовую линию (прогноз) — метрики с суффиксом _prophet: services_calls_prophet, services_callduration_prophet, services_errorcallsperc_prophet. Значения прогноза различаются по лейблу value_type (например, yhat_upper — верхняя граница нормы). Эти метрики используются встроенными правилами выявления аномалий — см. Выявление аномалий.

Лейблы метрик

Для сервисов доступны следующие лейблы метрик:

  • service: имя сервиса, аналогичное отображаемому имени сервиса в разделе Приложения > Сервисы;
  • service_id: внутренний идентификатор сервиса для генерации ссылки на дашборд (см. Аннотации со ссылками на дашборды);
  • host, service_id_host: хост и его идентификатор, на котором наблюдается сервис (используются в ссылках на дашборды сервера и контейнера).

Синтаксис фильтрации и примеры выражений

Для применения в правилах фильтра по конкретному сервису используйте синтаксис метрика{лейбл="значение"}.

Например, выражение services_callduration{service="credit-bureau-service"} вернёт среднее время отклика сервиса credit-bureau-service в миллисекундах.

Пример выражения для правила (время отклика сервиса больше 100 мс):

avg(services_callduration{service="credit-bureau-service"}) by (service, service_id) > 100

Разбор выражения:

  • services_callduration — метрика: время отклика сервиса (в миллисекундах);
  • {service="credit-bureau-service"} — фильтр по имени сервиса;
  • avg(...) by (service, service_id) > 100 — агрегация по лейблам service и service_id (лейбл service_id нужен, чтобы в аннотациях получить ссылку на дашборд сервиса).

Где посмотреть список метрик

Полный список доступных метрик с поиском доступен в Браузере метрик (Metric Explorer): откройте раздел Метрики > Браузер в главном меню. Введите часть имени метрики в поле поиска — например, services покажет все метрики сервисов.

Браузер метрик (Metric Explorer) Скриншот: Браузер метрик — поиск по каталогу метрик (запрос services).

Браузер метрик также позволяет изучать лейблы метрик, количество временных рядов и строить запросы визуально. Подробнее — в руководстве Браузер метрик и построитель PromQL-запросов.

Аннотации со ссылками на дашборды

Аннотации и лейблы задаются в правиле алертинга (см. Настройка оповещений → Лейблы и аннотации):

  • аннотации позволяют добавлять дополнительные метки к алертам; аннотации приходят в уведомления (Email, Telegram, Webhook и т. д.);
  • лейблы позволяют группировать алерты и используются в политиках маршрутизации алертов.

Зарезервированные ключи (имена) аннотаций формируют кликабельные ссылки на дашборды Proto OBP:

  • dashboard, dashboardService — ссылка на дашборд сервиса. Используйте следующее значение:

    {{ $externalURL }}/dashboard/GENERAL/Service/{{ .Labels.service_id | reReplaceAll "__" "==" | reReplaceAll "_" "=" }}/Proto-General-Service
    
  • dashboardHost — ссылка на дашборд сервера. Используйте следующее значение:

    {{ $externalURL }}/dashboard/OS_LINUX/Service/{{ .Labels.service_id_host }}/Proto-Linux-Service
    
  • dashboardContainer — ссылка на дашборд контейнера. Используйте следующее значение:

    {{ $externalURL }}/dashboard/OS_LINUX/Endpoint/{{ .Labels.service_id_host }}/{{ .Labels.service_id_host }}_{{ .Labels.service_id_container }}/Proto-Linux-Docker
    

Примеры использования аннотаций — ссылок на дашборды:

  • Telegram-уведомления:

    Ссылка на дашборд в Telegram-уведомлении
  • Веб-интерфейс Proto OBP:

    Ссылка на дашборд в веб-интерфейсе