Это учебное руководство является продолжением руководства Начало работы с Grafana Alerting — маршрутизация оповещений.
Группировка в Grafana Alerting снижает информационный шум уведомлений, объединяя связанные экземпляры оповещений в одно краткое уведомление. Это полезно для дежурных инженеров, позволяя им сосредоточиться на устранении инцидентов вместо разбора потока уведомлений.
Группировка настраивается с помощью меток в политике уведомлений. Эти метки ссылаются на метки, генерируемые экземплярами оповещений или настраиваемые пользователем.
Политики уведомлений также позволяют определить, как часто отправляются уведомления для каждой группы экземпляров оповещений.
В этом учебном руководстве вы:
- Узнаете, как работает группировка правил оповещения.
- Создадите политику уведомлений для обработки группировки.
- Определите правила оповещения для реального сценария.
- Получите и просмотрите сгруппированные уведомления об оповещениях.
Перед началом работы
Существует несколько способов пройти это учебное руководство.
-
Grafana Cloud
- Пользователям Grafana Cloud не нужно ничего устанавливать. Создайте бесплатную учётную запись.
Перейдите к разделу Как работает группировка правил оповещения.
-
Интерактивная среда обучения
- Кроме того, вы можете попробовать этот пример в нашей интерактивной среде обучения: Начало работы с Grafana Alerting — группировка. Это полностью настроенная среда, в которой уже установлены все зависимости.
-
Grafana OSS
-
Если вы решили запустить стек Grafana локально, убедитесь, что у вас установлены следующие приложения:
-
Docker Compose (входит в состав Docker for Desktop для macOS и Windows)
-
Настройка стека Grafana (пользователи OSS)
Чтобы продемонстрировать наблюдение за данными с помощью стека Grafana, загрузите и запустите следующие файлы.
-
Клонируйте репозиторий среды учебного руководства.
git clone https://github.com/grafana/tutorial-environment.git -
Перейдите в каталог, в который вы клонировали репозиторий:
cd tutorial-environment -
Запустите стек Grafana:
docker compose up -dПри первом запуске
docker compose up -dDocker загружает все необходимые для учебного руководства ресурсы. В зависимости от скорости вашего интернет-соединения это может занять несколько минут.Note
Если на вашей системе уже запущены Grafana, Loki или Prometheus, вы можете увидеть ошибки, потому что Docker-образ пытается использовать порты, которые уже заняты вашими локальными установками. В этом случае остановите службы, а затем снова выполните команду.
Как работает группировка правил оповещения
Группировка уведомлений об оповещениях настраивается с помощью меток и параметров времени:
- Метки связывают правило оповещения с политикой уведомлений и определяют группировку.
- Параметры времени управляют тем, когда и как часто отправляются уведомления.
Типы меток
Зарезервированные метки (по умолчанию):
- Автоматически генерируются Grafana, например
alertname,grafana_folder. - Пример:
alertname="High CPU usage".
Метки, настраиваемые пользователем:
- Добавляются вручную в правило оповещения.
- Пример:
severity,priority.
Метки запросов:
- Возвращаются запросом источника данных.
- Пример:
region,service,environment.
Параметры времени
Group wait: время до отправки первого уведомления. Group interval: время между уведомлениями для группы. Repeat interval: время до повторной отправки уведомлений для неизменной группы.
Оповещения с одинаковыми значениями меток группируются вместе, а параметры времени определяют частоту уведомлений.
Более подробно см.:
Реальный пример группировки оповещений в действии
Сценарий: наблюдение за распределённым приложением
Вы отслеживаете такие метрики, как использование CPU, загрузка памяти и сетевая задержка, в нескольких регионах. Некоторые из этих правил оповещения включают метки, например region: us-west и region: us-east. Если несколько правил оповещения срабатывают в этих регионах, это может привести к потоку уведомлений.
Как управлять группировкой
Чтобы группировать уведомления о правилах оповещения:
- Определите метки: используйте метки
region,metricилиinstanceдля категоризации оповещений. - Настройте политики уведомлений:
- Группируйте оповещения по метке запроса «region».
- Пример:
- Уведомления об оповещениях для
region: us-westотправляются команде Западного побережья. - Уведомления об оповещениях для
region: us-eastотправляются команде Восточного побережья.
- Уведомления об оповещениях для
- Укажите параметры времени отправки уведомлений, чтобы управлять их частотой.
- Пример:
- Параметр Group interval: определяет, как часто отправляются обновления для одной и той же группы оповещений. По умолчанию этот интервал установлен в 5 минут, но вы можете настроить его на меньшее или большее значение в зависимости от ваших потребностей.
- Пример:
Настройка группировки правил оповещения
Политика уведомлений
Следуя приведённому выше примеру, политики уведомлений создаются для маршрутизации экземпляров оповещений, имеющих метку региона, в конкретную точку контакта. Цель — получать одно консолидированное уведомление на регион. Чтобы продемонстрировать, как работает группировка, уведомления об оповещениях для команды Восточного побережья не группируются. Что касается времени, для этого региона определяется конкретное расписание. Эта настройка переопределяет параметры родительской политики для точной настройки поведения для конкретных меток (то есть регионов).
-
Войдите в Grafana:
- Пользователи Grafana Cloud: войдите через Grafana Cloud.
- Пользователи OSS: перейдите на http://localhost:3000.
-
Перейдите к политикам уведомлений:
- Перейдите в Alerts & IRM > Alerting > Notification Policies.
-
Добавьте дочернюю политику:
-
В политике по умолчанию нажмите + New child policy.
-
Label:
region -
Operator:
= -
Value:
us-westЭта метка сопоставляет правила оповещения, где метка региона равна us-west.
-
-
Выберите точку контакта:
- Выберите Webhook.
Если у вас нет точек контакта, добавьте точку контакта.
-
Включите Continue matching:
- Включите Continue matching subsequent sibling nodes, чтобы оценка продолжалась даже после совпадения одной или нескольких меток (например, метки региона).
-
Переопределите параметры группировки:
-
Переключите Override grouping.
-
Group by: добавьте
regionв качестве метки. Удалите все существующие метки.Group by объединяет оповещения с одинаковой меткой группировки в одно уведомление. Например, все оповещения с
region=us-westбудут объединены в одно уведомление, что упрощает управление и снижает утомление от оповещений.
-
-
Задайте собственное время:
-
Переключите Override general timings.
-
Group interval:
2m. Это гарантирует, что последующие уведомления для одной и той же группы оповещений будут отправляться с интервалом 2 минуты. Хотя по умолчанию используется 5 минут, здесь мы выбрали 2 минуты, чтобы обеспечить более быструю обратную связь в демонстрационных целях.Параметры времени управляют тем, как часто отправляются уведомления, и помогают сбалансировать своевременность оповещений и минимизацию шума.
-
-
Сохраните и повторите:
- Повторите описанные выше действия для
region = us-east, но без переопределения параметров группировки и времени. Используйте другую конечную точку webhook в качестве точки контакта.
Эти вложенные политики должны маршрутизировать экземпляры оповещений, где метка региона равна us-west или us-east. Только команда региона us-west должна получать сгруппированные уведомления об оповещениях.
Note
Сопоставители меток объединяются с помощью логического оператора
AND. Это означает, что для связывания правила с политикой должны быть выполнены все сопоставители. Если вы попытаетесь использовать один и тот же ключ метки (например, region) с разными значениями (например, us-west и us-east), условие не будет совпадать, потому что для одного ключа логически невозможно иметь несколько значений одновременно.Однако
region!=us-east && region=!us-westможет совпадать. Например, оно совпадёт с набором меток, гдеregion=eu-central. Кроме того, для одинаковых ключей меток используйте сопоставители регулярных выражений (например,region=~us-west|us-east). - Повторите описанные выше действия для
Создание правила оповещения
В этом разделе мы настроим правило оповещения на основе нашего примера наблюдения за приложением.
- Перейдите в Alerts & IRM > Alerting > Alert rules.
- Нажмите + New alert rule.
Ввод имени правила оповещения
Сделайте его коротким и описательным, так как оно отображается в вашем уведомлении об оповещении. Например, High CPU usage - Multi-region.
Определение запроса и условия оповещения
В этом разделе мы используем параметры по умолчанию для создания правила оповещения под управлением Grafana. Параметры по умолчанию позволяют определить запрос, выражение (используется для обработки данных — поле WHEN в интерфейсе) и условие, которое должно быть выполнено для срабатывания оповещения (в режиме по умолчанию это порог).
Grafana включает тестовый источник данных, который создаёт имитированные данные временных рядов. Этот источник данных включён в демонстрационную среду данного учебного руководства. Если вы работаете в Grafana Cloud или на собственном локальном экземпляре Grafana, вы можете добавить источник данных через меню Connections.
-
В раскрывающемся меню выберите источник данных TestData.
-
В поле Scenario выберите CSV Content.
-
Скопируйте следующие CSV-данные:
-
Выберите TestData в качестве источника данных.
-
Установите Scenario в CSV Content.
-
Используйте следующие CSV-данные:
region,cpu-usage,service,instance us-west,35,web-server-1,server-01 us-west,81,web-server-1,server-02 us-east,79,web-server-2,server-03 us-east,52,web-server-2,server-04 us-west,45,db-server-1,server-05 us-east,77,db-server-2,server-06 us-west,82,db-server-1,server-07 us-east,93,db-server-2,server-08
Возвращаемые данные имитируют источник данных, возвращающий несколько временных рядов, каждый из которых приводит к созданию экземпляра оповещения для этого конкретного временного ряда.
-
-
В разделе Alert condition:
- Оставьте
Lastв качестве значения функции приведения (WHEN) иIS ABOVE 75в качестве порогового значения. Это значение, выше которого должно срабатывать правило оповещения.
- Оставьте
-
Нажмите Preview alert rule condition, чтобы выполнить запросы.
Он должен вернуть 5 рядов в состоянии Firing: два сработавших экземпляра из региона us-west и три из региона us-east.
Добавление папок и меток
- В поле Folder нажмите + New folder и введите имя. Например:
Multi-region alerts. Эта папка будет содержать наши правила оповещения.
Настройка поведения оценки
Каждое правило оповещения назначается группе оценки. Вы можете назначить правило оповещения существующей группе оценки или создать новую.
- В поле Evaluation group and interval введите имя. Например:
Multi-region group. - Выберите Evaluation interval (как часто оцениваются оповещения). Выберите
1m. - Установите pending period равным
0s(ноль секунд), чтобы правило оповещения срабатывало сразу после выполнения условия (это минимизирует время ожидания для демонстрации). - Установите Keep firing for равным
0s, чтобы оповещение прекращало срабатывать сразу после того, как условие перестало выполняться.
Настройка уведомлений
Выберите, кто должен получать уведомление при срабатывании правила оповещения.
-
Выберите Use notification policy.
-
Нажмите Preview routing, чтобы убедиться в правильности сопоставления.
В предварительном просмотре должно быть видно, что метка региона из нашего источника данных успешно сопоставляется с политиками уведомлений, созданными ранее, благодаря настроенному нами сопоставителю меток.
-
Нажмите Save rule and exit.
Создание второго правила оповещения
Повторите описанные выше действия, чтобы создать второе правило оповещения, которое срабатывает при высоком использовании памяти.
-
Дублируйте правило оповещения, нажав More > Duplicate.
-
Назовите его
High Memory usage - Multi-region. -
Используйте приведённые ниже CSV-данные, чтобы имитировать источник данных, возвращающий использование памяти.
region,memory-usage,service,instance us-west,42,cache-server-1,server-09 us-west,88,cache-server-1,server-10 us-east,74,api-server-1,server-11 us-east,90,api-server-1,server-12 us-west,53,analytics-server-1,server-13 us-east,81,analytics-server-2,server-14 us-west,77,analytics-server-1,server-15 us-east,94,analytics-server-2,server-16 -
Нажмите Save rule and exit.
Получение сгруппированных уведомлений об оповещениях
Теперь, когда правила оповещения настроены, вы должны получать уведомления об оповещениях в точках контакта всякий раз, когда оповещения срабатывают.
Когда настроенное правило оповещения обнаруживает использование CPU или памяти выше 75 % в нескольких регионах, оно оценивает метрику каждую минуту. Если условие сохраняется, уведомления группируются, при этом Group wait составляет 30 секунд перед отправкой первого оповещения. Последующие уведомления для одной и той же группы оповещений отправляются с интервалом 2 минуты (только для экземпляров оповещений US-west), что увеличивает частоту сгруппированных уведомлений об оповещениях. Последующие уведомления для экземпляров US-east отправляются с интервалом по умолчанию 5 минут. Если условие сохраняется в течение длительного периода, Repeat interval в 4 часа гарантирует повторную отправку оповещения только в том случае, если проблема сохраняется.
В результате наши политики уведомлений должны маршрутизировать три уведомления: одно сгруппированное уведомление, объединяющее экземпляры оповещений и CPU, и памяти из региона us-west, и два отдельных уведомления с экземплярами оповещений из региона us-east.
Пример сгруппированных уведомлений:
{
"receiver": "US-West-Alerts",
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertname": "High CPU usage - Multi-region",
"grafana_folder": "Multi-region alerts",
"instance": "server-05",
...
{
"status": "firing",
"labels": {
"alertname": "High Memory usage - Multi-region",
"grafana_folder": "Multi-region alerts",
"instance": "server-10",
},
...}
Детали экземпляров оповещений CPU и памяти, сгруппированных в одно уведомление для точки контакта us-west.
{
"receiver": "US-East-Alerts",
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertname": "High CPU usage - Multi-region",
"grafana_folder": "Multi-region alerts",
"instance": "server-03",
"region": "us-east",
"service": "web-server-2"
...}}}
Детали экземпляров оповещений CPU, сгруппированных в отдельное уведомление для точки контакта us-east.
{
"receiver": "US-East-Alerts",
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertname": "High memory usage - Multi-region",
"grafana_folder": "Multi-region memory alerts",
"instance": "server-12",
"region": "us-east"
...}}}
Детали экземпляров оповещений памяти, сгруппированных в отдельное уведомление для точки контакта us-east.
Заключение
Настроив политики уведомлений и используя метки (такие как region), вы можете группировать уведомления об оповещениях по определённым критериям и маршрутизировать их в соответствующие команды. Точная настройка параметров времени — включая групповое ожидание, групповой интервал и интервал повторения — дополнительно снижает шум и гарантирует, что уведомления остаются действенными, не перегружая дежурных инженеров.
Дополнительно в Grafana Alerting: шаблонизация уведомлений об оповещениях
Tip
В руководстве Начало работы с Grafana Alerting: шаблонизация уведомлений об оповещениях вы узнаете, как использовать шаблоны для создания настраиваемых и кратких уведомлений.