Шаблоны
Используйте шаблонизацию, чтобы настраивать, форматировать и переиспользовать уведомительные сообщения об оповещениях. Создавайте более гибкие и информативные уведомительные сообщения, включая в них динамическое содержимое: значения метрик, метки и другую контекстную информацию.
В Grafana у вас есть несколько вариантов шаблонизации уведомительных сообщений об оповещениях:
-
- Аннотации добавляют к экземплярам оповещений дополнительную информацию, например
summaryиdescription, для уведомительных сообщений. - Шаблонизируйте аннотации, чтобы отображать значения запроса, значимые для оповещения, например имя сервера или значение запроса порога.
- Аннотации добавляют к экземплярам оповещений дополнительную информацию, например
-
- Метки используются, чтобы отличать один экземпляр оповещения от всех остальных экземпляров.
- Шаблонизируйте метки, чтобы добавить дополнительную метку на основе значения запроса или когда метки из запроса неполны либо недостаточно описательны.
- Избегайте отображения значений запроса в метках, так как это может создать множество экземпляров оповещений — вместо этого используйте аннотации.
-
- Шаблоны уведомлений используются точками контакта для единообразных заголовков и описаний уведомлений.
- Шаблонизируйте уведомления, когда хотите настроить внешний вид и информацию в ваших уведомлениях.
- Избегайте использования шаблонов уведомлений для добавления дополнительной информации к экземплярам оповещений — вместо этого используйте аннотации.
Tip
Практический пример шаблонизации см. в нашем учебнике по началу работы с шаблонизацией.
Эта схема иллюстрирует весь процесс шаблонизации — от запроса меток и шаблонизации сводки оповещения и уведомления до итогового уведомительного сообщения об оповещении.
На этой схеме:
- Запрос правила оповещения возвращает
12345вместе со значениями метокinstanceиjob. - Этот результат запроса нарушает условие правила оповещения, и экземпляр оповещения срабатывает.
- Экземпляр оповещения формирует сводку аннотации, определённую шаблоном, использованным в сводке правила оповещения. В данном случае отображается значение метки
instance:server1. - Alertmanager получает сработавший экземпляр оповещения, включая итоговую сводку аннотации, и определяет точку контакта, которая обработает оповещение.
- Alertmanager использует шаблон уведомления точки контакта для форматирования сообщения, а затем отправляет уведомление в настроенные места назначения — адрес электронной почты.
Шаблонизация аннотаций
Аннотации можно определять в правиле оповещения, чтобы добавлять экземплярам оповещений дополнительную информацию.
При создании правила оповещения Grafana предлагает несколько необязательных аннотаций, таких как description, summary и runbook_url, которые помогают идентифицировать оповещения и реагировать на них. Вы также можете создавать собственные аннотации.
Аннотации — это пары ключ-значение, и их значения могут содержать комбинацию текста и кода шаблона, вычисляемого при срабатывании оповещения.
Аннотации могут содержать обычный текст, но шаблонизировать аннотации следует, если нужно отобразить значения запроса, относящиеся к оповещению, например:
- Показать значение запроса, вызывающее срабатывание оповещения.
- Включить метки, возвращённые запросом, которые идентифицируют оповещение.
- Отформатировать текст аннотации в зависимости от значения запроса.
Вот пример шаблонизации аннотации, объясняющей, где и почему сработало оповещение. В этом случае оповещение срабатывает, когда использование CPU превышает порог, а аннотация summary предоставляет соответствующие сведения.
CPU usage for {{ $labels.instance }} has exceeded 80% ({{ $values.A.Value }}) for the last 5 minutes.
Результат этого шаблона будет таким:
CPU usage for Instance 1 has exceeded 80% (81.2345) for the last 5 minutes.
Реализуйте аннотации, дающие значимую информацию для реагирования на ваши оповещения. Аннотации отображаются в представлении деталей оповещения Grafana и по умолчанию включаются в уведомления.
Подробнее о том, как шаблонизировать аннотации, см. в разделе Шаблонизация аннотаций и меток.
Шаблонизация меток
Метки используются, чтобы отличать один экземпляр оповещения от всех остальных, поскольку набор меток однозначно идентифицирует экземпляр оповещения. Политики уведомлений и silences используют метки для обработки экземпляров оповещений.
Вы также можете шаблонизировать метки на основе результатов запроса. Это полезно, если меток, получаемых из запроса, недостаточно. Например:
- Добавить новую метку, чтобы изменить способ идентификации оповещений и их группировки в разные группы оповещений.
- Добавить новую метку, используемую политиками уведомлений или silences, чтобы управлять обработкой оповещения.
Вот пример шаблонизации новой метки env на основе значения метки из запроса:
{{- if eq $labels.instance "prod-server-1" -}}
production
{{- else if eq $labels.instance "staging-server-1" -}}
staging
{{- else -}}
development
{{- end -}}
Подробнее о том, как шаблонизировать метки, см. в разделе Шаблонизация аннотаций и меток.
Шаблонизация уведомлений
Шаблоны уведомлений позволяют настраивать содержимое ваших уведомлений, например тему письма или текст сообщения в Slack.
Шаблоны уведомлений отличаются от шаблонизации аннотаций и меток следующим образом:
- Шаблоны уведомлений назначаются точке контакта, а не правилу оповещения.
- Если шаблон не указан, точка контакта использует шаблон по умолчанию, включающий соответствующие сведения об оповещении.
- Один и тот же шаблон можно использовать в нескольких точках контакта, что упрощает сопровождение и обеспечивает единообразие.
- Шаблоны уведомлений не следует использовать для добавления дополнительной информации к отдельным оповещениям — для этого используйте аннотации.
- Хотя шаблоны аннотаций/меток и шаблоны уведомлений используют один и тот же язык шаблонизации, доступные переменные и функции различаются. Подробнее см. в справочнике по шаблонам уведомлений и справочнике по шаблонам аннотаций/меток.
Вот пример шаблона уведомления, который суммирует все сработавшие и разрешившиеся оповещения в группе уведомлений:
{{ define "alerts.message" -}}
{{ if .Alerts.Firing -}}
{{ len .Alerts.Firing }} firing alert(s)
{{ template "alerts.summarize" .Alerts.Firing }}
{{- end }}
{{- if .Alerts.Resolved -}}
{{ len .Alerts.Resolved }} resolved alert(s)
{{ template "alerts.summarize" .Alerts.Resolved }}
{{- end }}
{{- end }}
{{ define "alerts.summarize" -}}
{{ range . -}}
- {{ index .Annotations "summary" }}
{{ end }}
{{ end }}
Уведомительное сообщение в точке контакта будет выглядеть так:
1 firing alert(s)
- The database server db1 has exceeded 75% of available disk space. Disk space used is 76%, please resize the disk size within the next 24 hours.
1 resolved alert(s)
- The web server web1 has been responding to 5% of HTTP requests with 5xx errors for the last 5 minutes.
Подробнее см. в разделе Шаблонизация уведомлений.