Шаблоны

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

В Grafana у вас есть несколько вариантов шаблонизации уведомительных сообщений об оповещениях:

  1. Аннотации правила оповещения

    • Аннотации добавляют к экземплярам оповещений дополнительную информацию, например summary и description, для уведомительных сообщений.
    • Шаблонизируйте аннотации, чтобы отображать значения запроса, значимые для оповещения, например имя сервера или значение запроса порога.
  2. Метки правила оповещения

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

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

Tip

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

Эта схема иллюстрирует весь процесс шаблонизации — от запроса меток и шаблонизации сводки оповещения и уведомления до итогового уведомительного сообщения об оповещении.

How templating works
How templating works

На этой схеме:

  1. Запрос правила оповещения возвращает 12345 вместе со значениями меток instance и job.
  2. Этот результат запроса нарушает условие правила оповещения, и экземпляр оповещения срабатывает.
  3. Экземпляр оповещения формирует сводку аннотации, определённую шаблоном, использованным в сводке правила оповещения. В данном случае отображается значение метки instance: server1.
  4. Alertmanager получает сработавший экземпляр оповещения, включая итоговую сводку аннотации, и определяет точку контакта, которая обработает оповещение.
  5. 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 на основе значения метки из запроса:

Go
{{- if eq $labels.instance "prod-server-1" -}}
production
{{- else if eq $labels.instance "staging-server-1" -}}
staging
{{- else -}}
development
{{- end -}}

Подробнее о том, как шаблонизировать метки, см. в разделе Шаблонизация аннотаций и меток.

Шаблонизация уведомлений

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

Шаблоны уведомлений отличаются от шаблонизации аннотаций и меток следующим образом:

  • Шаблоны уведомлений назначаются точке контакта, а не правилу оповещения.
  • Если шаблон не указан, точка контакта использует шаблон по умолчанию, включающий соответствующие сведения об оповещении.
  • Один и тот же шаблон можно использовать в нескольких точках контакта, что упрощает сопровождение и обеспечивает единообразие.
  • Шаблоны уведомлений не следует использовать для добавления дополнительной информации к отдельным оповещениям — для этого используйте аннотации.
  • Хотя шаблоны аннотаций/меток и шаблоны уведомлений используют один и тот же язык шаблонизации, доступные переменные и функции различаются. Подробнее см. в справочнике по шаблонам уведомлений и справочнике по шаблонам аннотаций/меток.

Вот пример шаблона уведомления, который суммирует все сработавшие и разрешившиеся оповещения в группе уведомлений:

Go
{{ 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.

Подробнее см. в разделе Шаблонизация уведомлений.