Шаблонизация аннотаций и меток
Вы можете использовать шаблоны для настройки сообщений оповещений и уведомлений, включая динамические данные из запросов правил оповещений.
В Grafana Alerting вы можете шаблонизировать сообщения оповещений двумя способами.
- Шаблонизация аннотаций и меток: в определении правила оповещения вы можете шаблонизировать аннотации и метки, чтобы включать в оповещение дополнительную информацию из данных запроса, добавляя значимые детали на основе результатов запроса.
- Шаблонизация уведомлений: вы можете шаблонизировать уведомления, чтобы управлять содержимым и внешним видом ваших уведомлений.
Как работает шаблонизация
На этой схеме вы можете увидеть различия между двумя типами шаблонов.
Более подробное объяснение этой схемы см. в разделе Введение в шаблоны.
Оба типа шаблонов написаны на системе шаблонизации Go. Однако важно понимать, что переменные и функции, используемые в шаблонах уведомлений, отличаются от используемых в шаблонах аннотаций и меток.
- Шаблонизация аннотаций и меток: эти шаблоны добавляют дополнительную информацию к отдельным экземплярам оповещений. Переменные шаблона вроде
$labelsи$valuesпредставляют данные запроса оповещения отдельного экземпляра оповещения. - Шаблонизация уведомлений: шаблоны уведомлений форматируют содержимое уведомления для группы оповещений. Переменные вроде
.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.
Как шаблонизировать аннотацию
Выполните следующие шаги, чтобы шаблонизировать аннотацию.
- Перейдите в Alerts & IRM -> Alert rules -> создайте или отредактируйте правило оповещения.
- Прокрутите вниз до раздела Configure notification message.
- Вставьте ваш шаблон в соответствующее поле аннотации (
summary,description,runbook_url,custom).
Предпросмотр шаблонов аннотаций
Вы можете шаблонизировать аннотации при создании или редактировании правила оповещения.
Для тестирования и предпросмотра шаблонов аннотаций используются два распространённых метода:
- Запустите оповещение и просмотрите состояние экземпляра оповещения в интерфейсе Grafana, где отображаются все аннотации экземпляра оповещения.
- Используйте шаблон уведомления, отображающий все аннотации, затем посмотрите предпросмотр шаблона уведомления с использованием экземпляра оповещения.
Шаблонизация меток
Набор меток экземпляра оповещения используется для уникальной идентификации этого оповещения среди всех остальных экземпляров оповещений.
Метки определяют, как оповещения маршрутизируются и управляются для уведомлений, что делает их проектирование ключевым для эффективности вашей системы оповещений.
Метки могут возвращаться из запроса правила оповещения, например метка pod в запросе Kubernetes Prometheus. Вы также можете определить дополнительные метки в правиле оповещения, чтобы предоставить дополнительную информацию для обработки оповещений.
Как и аннотации, метки — это пары ключ-значение, которые могут содержать обычный текст или код шаблона, вычисляемый при срабатывании оповещения.
Шаблонизируйте метки, когда меток, возвращаемых вашими запросами, недостаточно. Например:
- Новая метка на основе значения запроса может по-другому сгруппировать подмножество оповещений, изменяя способ отправки уведомлений.
- Новая метка на основе значения запроса может использоваться в политике уведомлений, чтобы изменить точку контакта для уведомления.
Вот пример шаблонизации метки severity на основе значения запроса.
{{ 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 конкретной команде для дальнейшего рассмотрения.
Примечание: Экземпляр оповещения уникально идентифицируется своим набором меток.
- Избегайте отображения значений запроса в метках, так как это может создать множество экземпляров оповещений — по одному на каждый отдельный набор меток. Вместо этого используйте аннотации для значений запроса.
- Если значение шаблонизированной метки меняется, оно сопоставляется с другим экземпляром оповещения, а предыдущий экземпляр считается устаревшим. Все детали см. в этом примере использования динамических меток.
Как шаблонизировать метку
Выполните следующие шаги, чтобы шаблонизировать метку.
- Перейдите в Alerts & IRM -> Alert rules -> создайте или отредактируйте правило оповещения.
- Прокрутите вниз до раздела Configure labels and notifications.
- Нажмите + Add labels.
- Введите key, идентифицирующий метку.
- Вставьте ваш шаблон в поле value.
Предпросмотр шаблонов меток
Вы можете шаблонизировать значения меток при создании или редактировании правила оповещения.
Чтобы посмотреть предпросмотр значений меток, выберите Use notification policy, а затем нажмите Preview routing.
Дополнительная информация
Дополнительные сведения о том, как шаблонизировать правила оповещений, см. в:
Tip
Практический пример шаблонизации см. в нашем учебнике по началу работы с шаблонизацией.