Шаблонизация аннотаций и меток

Вы можете использовать шаблоны для настройки сообщений оповещений и уведомлений, включая динамические данные из запросов правил оповещений.

В Grafana Alerting вы можете шаблонизировать сообщения оповещений двумя способами.

  1. Шаблонизация аннотаций и меток: в определении правила оповещения вы можете шаблонизировать аннотации и метки, чтобы включать в оповещение дополнительную информацию из данных запроса, добавляя значимые детали на основе результатов запроса.
  2. Шаблонизация уведомлений: вы можете шаблонизировать уведомления, чтобы управлять содержимым и внешним видом ваших уведомлений.

Как работает шаблонизация

На этой схеме вы можете увидеть различия между двумя типами шаблонов.

How templating works

Более подробное объяснение этой схемы см. в разделе Введение в шаблоны.

Оба типа шаблонов написаны на системе шаблонизации Go. Однако важно понимать, что переменные и функции, используемые в шаблонах уведомлений, отличаются от используемых в шаблонах аннотаций и меток.

  1. Шаблонизация аннотаций и меток: эти шаблоны добавляют дополнительную информацию к отдельным экземплярам оповещений. Переменные шаблона вроде $labels и $values представляют данные запроса оповещения отдельного экземпляра оповещения.
  2. Шаблонизация уведомлений: шаблоны уведомлений форматируют содержимое уведомления для группы оповещений. Переменные вроде .Alerts включают все сработавшие и разрешившиеся оповещения в уведомлении.

Шаблонизация аннотаций

Аннотации добавляют дополнительную информацию к экземплярам оповещений и часто используются, чтобы помочь идентифицировать оповещение и подсказать дежурным, как устранить проблему.

Аннотации — это пары ключ-значение, определённые в правиле оповещения. Они могут содержать обычный текст или код шаблона, вычисляемый при срабатывании оповещения.

Grafana включает несколько необязательных аннотаций, таких как description, summary и runbook_url, которые можно редактировать в правиле оповещения. Вы также можете создавать свои пользовательские аннотации. Например, вы можете создать новую аннотацию с именем location, чтобы сообщать местоположение системы, вызвавшей оповещение.

Вот пример аннотации summary, объясняющей, почему сработало оповещение, с использованием обычного текста.

CPU usage has exceeded 80% for the last 5 minutes.

Однако если вы хотите отображать в аннотациях динамические значения запроса, вам нужно использовать код шаблона. Типичные случаи использования включают:

  • Отображение значения запроса, вызвавшего срабатывание оповещения.
  • Выделение информации о метках, идентифицирующих оповещение, например среды, экземпляра или региона.
  • Предоставление конкретных инструкций на основе значений запроса.
  • Настройку ссылок на runbook в зависимости от меток запроса.
  • Включение контактной информации на основе меток запроса.

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

CPU usage for {{ $labels.instance }} has exceeded 80% ({{ $values.A.Value }}) for the last 5 minutes.

В качестве альтернативы вы можете использовать функцию index для вывода значений запроса.

CPU usage for {{ index $labels "instance" }} has exceeded 80% ({{ index $values "A" }}) for the last 5 minutes.

Результат аннотации будет следующим.

CPU usage for Instance 1 has exceeded 80% (81.2345) for the last 5 minutes.

Как шаблонизировать аннотацию

Выполните следующие шаги, чтобы шаблонизировать аннотацию.

  1. Перейдите в Alerts & IRM -> Alert rules -> создайте или отредактируйте правило оповещения.
  2. Прокрутите вниз до раздела Configure notification message.
  3. Вставьте ваш шаблон в соответствующее поле аннотации (summary, description, runbook_url, custom).

Предпросмотр шаблонов аннотаций

Вы можете шаблонизировать аннотации при создании или редактировании правила оповещения.

An alert rule templating the annotation summary

Для тестирования и предпросмотра шаблонов аннотаций используются два распространённых метода:

  1. Запустите оповещение и просмотрите состояние экземпляра оповещения в интерфейсе Grafana, где отображаются все аннотации экземпляра оповещения.
  2. Используйте шаблон уведомления, отображающий все аннотации, затем посмотрите предпросмотр шаблона уведомления с использованием экземпляра оповещения.

Шаблонизация меток

Набор меток экземпляра оповещения используется для уникальной идентификации этого оповещения среди всех остальных экземпляров оповещений.

Метки определяют, как оповещения маршрутизируются и управляются для уведомлений, что делает их проектирование ключевым для эффективности вашей системы оповещений.

Метки могут возвращаться из запроса правила оповещения, например метка pod в запросе Kubernetes Prometheus. Вы также можете определить дополнительные метки в правиле оповещения, чтобы предоставить дополнительную информацию для обработки оповещений.

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

Шаблонизируйте метки, когда меток, возвращаемых вашими запросами, недостаточно. Например:

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

Вот пример шаблонизации метки severity на основе значения запроса.

Go
{{ if (gt $values.A.Value 90.0) -}}
critical
{{ else if (gt $values.A.Value 80.0) -}}
high
{{ else if (gt $values.A.Value 60.0) -}}
medium
{{ else -}}
low
{{- end }}

В этом примере значение метки severity определяется значением запроса, а возможные варианты — critical, high, medium или low. Затем вы можете использовать метку severity, чтобы изменить их уведомления — например, отправлять оповещения critical немедленно или маршрутизировать оповещения low конкретной команде для дальнейшего рассмотрения.

Примечание: Экземпляр оповещения уникально идентифицируется своим набором меток.

  • Избегайте отображения значений запроса в метках, так как это может создать множество экземпляров оповещений — по одному на каждый отдельный набор меток. Вместо этого используйте аннотации для значений запроса.
  • Если значение шаблонизированной метки меняется, оно сопоставляется с другим экземпляром оповещения, а предыдущий экземпляр считается устаревшим. Все детали см. в этом примере использования динамических меток.

Как шаблонизировать метку

Выполните следующие шаги, чтобы шаблонизировать метку.

  1. Перейдите в Alerts & IRM -> Alert rules -> создайте или отредактируйте правило оповещения.
  2. Прокрутите вниз до раздела Configure labels and notifications.
  3. Нажмите + Add labels.
  4. Введите key, идентифицирующий метку.
  5. Вставьте ваш шаблон в поле value.

Предпросмотр шаблонов меток

Вы можете шаблонизировать значения меток при создании или редактировании правила оповещения.

Чтобы посмотреть предпросмотр значений меток, выберите Use notification policy, а затем нажмите Preview routing.

Routing preview displays label values

Дополнительная информация

Дополнительные сведения о том, как шаблонизировать правила оповещений, см. в:

Tip

Практический пример шаблонизации см. в нашем учебнике по началу работы с шаблонизацией.