Обработка правил оповещения
На этой странице
По умолчанию оповещения маршрутизируются в кластер мониторинга VictoriaMetrics, находящийся в кластере управления. Вы можете увидеть сработавшие оповещения в интерфейсе клиентского кластера в разделе Оповещения/Просмотр оповещений.
Для настройки дополнительной маршрутизации необходимо создать получателей и маршруты. При необходимости добавления интервалов времени, в которые оповещения приходить не будут, задайте временные интервалы и укажите их в маршрутах.
Получатели
Скриншот
Страница “Получатели” представляет собой таблицу с полями:
- Имя получателя (есть возможность фильтрации по имени)
- Тип (есть выбор из ограниченного списка: default, webhook, email, telegram).
На странице есть возможность добавить нового получателя или удалить ранее созданный.
Получатель с названием devnull имеет тип default, создается по умолчанию и не может быть удален или изменен. Он блокирует отправку оповещений. При добавлении нового получателя тип default недоступен для выбора.
- Имя получателя (обязательное поле)
- Тип получателя: webhook, email, telegram;
В зависимости от выбранного типа получателя набор полей для конфигурации будет разным.
Webhook
Используется для отправки сообщений в сервисы агрегации уведомлений, service-desk, task-manager.
- Имя пользователя (необязательное поле. Используется для авторизации в паре с паролем. Не требуется при использовании Bearer-токена.);
- Пароль (необязательное поле. Используется для авторизации в паре с именем пользователя. Не требуется при использовании Bearer-токена.);
- Bearer-токен (необязательное поле. Используется для авторизации. Не требуется при использовании имени пользователя и пароля);
- URL-прокси;
- Отправлять решенные: инициирует отправку сообщения о том, что оповещение перестало быть актуальным. По умолчанию: да;
- Максимальное количество оповещений, отправляемых в одном сообщении webhook: Максимальное количество предупреждений, отправляемых на одно сообщение веб-перехватчика. При значении 0 - включаются все оповещения;
- URL-адрес (обязательное поле): эндпоинт для отправки HTTP-запросов;
- Использовать TLS: да/нет (по умолчанию нет); При необходимости настроить безопасное соединение дополнительно необходимо ввести:
- Имя сервера (обязательное поле);
- Файл сертификата УЦ (обязательное поле) CAFile Файл сертификата удостоверяющего центра в формате base64;
- Файл сертификата клиента (обязательное поле) Файл сертификата клиента в формате base64;
- Файл ключа клиента (обязательное поле) Файл ключа клиента в формате base64;
- Нужно ли отключить проверку сертификата (по умолчанию нет);
Обратите внимание! Файл сертификата должен содержать:
``` ----BEGIN CERTIFICATE---- и ----END CERTIFICATE---- ```По завершении настройки получателя необходимо настроить, какие оповещения будут отправляться по этому каналу. Для этого в разделе Кластер/Оповещения/Маршруты настройте отправку оповещений по этому каналу. При необходимости выберите лейблы уведомлений, которые будут служить фильтром для отправки по заданному каналу.
Пример настройки webhook
- Загрузите в кластер управления манифесты объектов
Deployment
,Service
,VMRule
с помощью импорта манифестов.
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-webhook
namespace: monitoring
labels:
app: demo-webhook
spec:
replicas: 1
selector:
matchLabels:
app: demo-webhook
template:
metadata:
creationTimestamp: null
labels:
app: demo-webhook
spec:
terminationGracePeriodSeconds: 30
automountServiceAccountToken: false
containers:
- name: demo-webhook
image: quay.io/mgoerens/demo-webhook-receiver-alertmanager:0.0.1
imagePullPolicy: IfNotPresent
env:
- name: PORT
value: "8080"
livenessProbe:
httpGet:
path: /healthz
port: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
resources:
limits:
cpu: 10m
memory: 30Mi
requests:
cpu: 10m
memory: 30Mi
securityContext:
capabilities:
drop:
- ALL
allowPrivilegeEscalation: false
Service
apiVersion: v1
kind: Service
metadata:
name: demo-webhook
namespace: monitoring
labels:
app: demo-webhook
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: demo-webhook
VMRule
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
labels:
app: demo-webhook
role: user
name: example-alert
namespace: victoria-metrics
spec:
groups:
- concurrency: 1
interval: 1m
labels:
ruletype: alert
name: example
rules:
- alert: ExampleAlert
expr: vector(1)
type: prometheus
-
В кластере, для которого необходимо настроить алертинг, перейдите в раздел Кластер/Оповещения/Получатели, создайте получателя с типом webhook. В поле
URL-адрес
введите значение:http://demo-webhook.monitoring.svc/webhook
. В качестве имени получателя укажитеdemo-webhook
. Остальные поля оставьте незаполненными. Сохраните внесенные изменения. -
В разделе Кластер/Оповещения/Маршруты настройте отправку оповещений по этому каналу. При необходимости выберите лейблы уведомлений, которые будут служить фильтром для отправки по заданному каналу.
-
В неймспейсе
monitoring
кластера управления перейдите к просмотру пода с именемdemo-webhook
. Откройте окно просмотра логов контейнера. В случае корректной настройки в логах будут сообщения сработавших алертов в кластере.
Скриншот
Telegram
Для настройки отправки оповещений в telegram необходимо:
- Создать telegram-бота. Обратите внимание, токен бота выдается однократно при создании через @BotFather.
- Определить получателя: это может быть отправка пользователю или в чат группе пользователей.
Когда бот и получатели определены, в графическом интерфейсе настройте получателя:
- Telegram API URL (имеет дефолтное значение, необязательно для заполнения)
- Формат сообщения: Markdown, Markdownv2, HTML (по умолчанию HTML);
- Токена бота, от имени которого будет отправляться оповещение;
- Идентификатор чата (индивидуального или группового). Узнать идентификатор можно, стартовав из требуемого чата диалог в боте: https://t.me/userinfobot
- Отправлять решенные: инициирует отправку сообщения о том, что оповещение перестало быть актуальным. По умолчанию: да;
- Отключить уведомления: сообщения будут приходить без звукового уведомления (по умолчанию нет);
- Шаблон уведомления в текстовом формате. Если шаблон не заполнить, то будет приходить сообщение по стандартному шаблону оператора, например:
Пример оповещения без настройки шаблона
Alerts Firing: Labels:
- alertname = example
- alertgroup = warning
- cluster = clustername
- ruletype = alert
- severity = warning Annotations:
- description = demo
- summary = demo Source: http://vmalert-vmalert-503055269-6467fdc88f-5srrs:8080/vmalert/alert?group_id=13440678846293985821&alert_id=946083850580454XXX
Кроме того, вы можете настроить шаблон непосредственно в поле шаблона. Так, например, чтобы вывести информацию о дате и времени срабатывания, уровне критичности и описании, можно использовать шаблон непосредственно в поле “Шаблон уведомления в текстовом формате “:
Пример настройки шаблона
{{ define "telegram.message" }}
{{ if eq .Status "firing" }}🔥{{ else }}✅{{ end }} *[{{ .Status | toUpper }}] {{ .CommonLabels.alertname }}*
{{ range .Alerts }}
*Severity:* {{ .Labels.severity | title }}
*Summary:* {{ .Annotations.summary }}
*Time:* {{ .StartsAt.Format "2006-01-02 15:04:05 UTC" }}
{{ if .Annotations.description }}*Description:* {{ .Annotations.description }}
{{ end -}}
{{ if .Annotations.runbook }}[Runbook]({{ .Annotations.runbook }})
{{ end -}}
{{ end }}
{{ end }}
{{ template "telegram.message" . }}
Тогда оповещение будет иметь вид:
Пример оповещения по шаблону из примера выше
🔥 [FIRING] TargetDown
Severity: Warning Summary: One or more targets are unreachable. Time: 2025-06-20 03:20:30 UTC
Description: 50% of the vector/ targets in logging namespace are down.
- Использовать TLS: да/нет (по умолчанию нет);
Учетные данные для отправки (НЕОБЯЗАТЕЛЬНО): пара “Имя пользователя”/“Пароль” или “Bearer-токен”.
- Имя пользователя (необязательное поле. Используется для авторизации в паре с паролем. Не требуется при использовании Bearer-токена.);
- Пароль (необязательное поле. Используется для авторизации в паре с именем пользователя. Не требуется при использовании Bearer-токена.);
- Bearer-токен (необязательное поле. Используется для авторизации. Не требуется при использовании имени пользователя и пароля);
При необходимости настроить безопасное соединение дополнительно необходимо ввести:
- Имя сервера (обязательное поле);
- Файл сертификата УЦ (обязательное поле) CAFile Файл сертификата удостоверяющего центра в формате base64;
- Файл сертификата клиента (обязательное поле) Файл сертификата клиента в формате base64;
- Файл ключа клиента (обязательное поле) Файл ключа клиента в формате base64;
- Нужно ли отключить проверку сертификата (по умолчанию нет);
По завершении настройки получателя необходимо настроить, какие оповещения будут отправляться по этому каналу. Для этого в разделе Кластер/Оповещения/Маршруты настройте отправку оповещений по этому каналу. При необходимости выберите лейблы уведомлений, которые будут служить фильтром для отправки по заданному каналу.
В зависимости от провайдера вашей почты, потребуется заполнить данные. Так, например, Gmail обязательно требует авторизационные данные.
- Идентификатор авторизации: необходим для SMTP авторизации с использованием PLAIN.
- Имя пользователя: необходимо для SMTP авторизации с использованием CRAM-MD5, LOGIN или PLAIN. Если авторизация не используется, оставьте поле незаполненным.
- Пароль: необходим для SMTP авторизации с использованием CRAM-MD5, LOGIN или PLAIN. Если авторизация не используется, оставьте поле незаполненным.
- Секрет авторизации: необходим для SMTP авторизации с использованием CRAM-MD5. Если авторизация с CRAM-MD5 не используется, оставьте поле незаполненным.
- E-mail получателя: целевой e-mail-адрес для получения оповещений.
- Служебные заголовки, состоящие из имени заголовка и тела заголовка;
- Hostname для идентификации SMTP-сервера (Необязательное);
- Шаблон уведомления в формате HTML
- Отправлять решенные: инициирует отправку сообщения о том, что оповещение перестало быть актуальным. По умолчанию: да;
- SMTP сервер (обязательное поле).
Обратите внимание! Для получения оповещений по e-mail:
- на стороне сервера должны быть открыты порты 25 и/или 587 для SMTP, 465 для SMTPS;
- при централизованном алертинге в кластере управления платформы “Штурвал” не установлено ограничений на выход по перечисленным портам;
- при локальном алертинге в клиентском кластере платформы “Штурвал” не установлено ограничений на выход по перечисленным портам.
Пример настройки отправки уведомления на devmail
- Подготовьте файл конфигурации maildev:
Манифест файла конфигурации maildev
image:
registry: mirror.gcr.io
repository: maildev/maildev
pullPolicy: IfNotPresent
# tag: "2.2.1"
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
ingress:
annotations:
cert-manager.io/cluster-issuer: <ваше значение параметра>
enabled: true
className: "nginx"
hosts:
- host: <ваше значение параметра>
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: maildev-ingress-tls
hosts:
- <ваше значение параметра>
Параметр | Описание | Тип данных | По умолчанию |
---|---|---|---|
cert-manager.io/cluster-issuer |
Имя Clusterissuer кластера управления | string | corp-acme |
host |
Хост будущего maildev.Формируется по принципу maildev.имя-кластера-управления.<base_domain>. | string | maildev.apps.ip-XX-XX-XXX-XXX.shturval.link |
- Установите devmail с полученным файлом конфигурации в неймспейс
monitoring
кластера управления.
Команда для установки devmail
Не забудьте в конце команды вместо ИМЯ-ФАЙЛА-КОНФИГУРАЦИИ вписать имя, с которым вы сохранили конфигурационный файл!
helm upgrade --install -n monitoring maildev https://github.com/christianknell/helm-charts/releases/download/maildev-1.3.4/maildev-1.3.4.tgz -f ИМЯ-ФАЙЛА-КОНФИГУРАЦИИ
В случае, если настройка корректна, в неймспейсе monitoring
кластера управления появится Pod с префиксом maildev.
Скриншот
- В кластере, для которого требуется настроить отправку оповещения на почту, в разделе Кластер/Оповещения/Получатели создайте получателя с типом “email”.
Заполните отправителя, получателя. Пропишите SMTP сервер: maildev-smtp.monitoring.svc:1025
.
Если настройка верна, то по адресу, указанному в качестве хоста в конфигурационном файле (https://maildev.имя-кластера-управления.<base_domain>/#/) будет доступен maildev.
- В разделе Кластер/Оповещения/Маршруты настройте отправку оповещений по этому каналу. При необходимости выберите лейблы уведомлений, которые будут служить фильтром для отправки по заданному каналу.
Скриншот
Если настройка оказалось верной, то на devmail вы увидите уведомление следующего вида
Скриншот
Временные интервалы
Скриншот
На странице временных интервалов вы можете определить интервалы месяцев, дней месяца, дней недели и часовых диапазонов для заглушения отправки оповещений. Эти интервалы используются в конфигурации маршрутов. Интервалы, охватывающие несколько смежных элементов времени, будут объединены в диапазоны. Для выделения можно использовать шифт. Кнопка “Выбрать всё” выбирает все элементы, повторное нажатие снимает выбор. Если в созданной конфигурации не задано ни одного значения, то это равнозначно выбранным всем значениям. Например, если вы указали дни недели, но не выбрали месяцы, то эти дни недели будут равнозначно выбраны в каждом месяце.
Блокировка оповещений
Скриншот
Определите, по каким критериям отправка оповещений должна быть заблокирована. Для этого введите:
- Ключи лейблов оповещений (equel): ключи самих оповещений, не правил оповещений. Это могут быть: alertname, env, severity, namespace и др.
- По каким значениям лейблов отправлять оповещения (target_matchers) - целевые лейблы оповещений, при совпадении значений которых, оповещения будут отправлены.
- Не отправлять при наличии оповещений со значениями целевых лейблов (source_matchers) - оповещения с этими значениями в лейблах внутри группы не будут отправлены по - маршруту, пока есть нерешенные оповещения с целевыми лейблами
Маршруты
Скриншот
Все маршруты формируются в одном конфигурационном файле. Первым заполняется корневой маршрут, далее настраиваются подмаршруты.
- Получатель: выберите получателя из списка получателей. По умолчанию выбран дефолтный получатель.
- Время ожидания до отправки первичных оповещений по группе: какой временной лаг должен пройти до первоначальной отправки оповещений. Может быть необходим для отбрасывания ложных срабатываний.
- Время ожидания до отправки обновленных оповещений по группе: какой временной лаг должен пройти до отправки изменений по ранее отправленному оповещению.
- Время ожидания до повторной отправки оповещений по группе: какой временной лаг должен пройти до повторной отправки ранее отправленных оповещений.
- Совпадающие лейблы оповещений маршрутизации: выбрать лейблы для отправки по маршруту
- Ключи совпадающих лейблов оповещений для группировки: по каким ключам сгруппировать оповещения среди выбранных в совпадающих лейблах.
- Интервалы блокировки оповещения: выберите из ранее созданных интервалов, когда нужно приостанавливать отправку оповещений по маршруту.
Подмаршруты конфигурируют более детальную маршрутизацию оповещений среди групп, выбранных в корневом маршруте. В подмаршруте необходимо определить, требуется ли продолжить обработку оповещений одной группы в других подмаршрутах. Группа определяется в корневом маршруте.