Alertmanager
Alertmanager — это компонент экосистемы Prometheus, который управляет срабатыванием и обработкой оповещений. Он играет ключевую роль в системе мониторинга на базе Prometheus, организуя оповещения о различных событиях и аномалиях в работе кластера.
1. Основные функции Alertmanager
-
Маршрутизация оповещений. Вы можете настроить маршруты для оповещений в зависимости от их источников, приоритетов и других метаданных. Это позволяет направлять сообщения в разные команды или сервера в зависимости от типа проблемы.
-
Группировка оповещений. Alertmanager агрегирует схожие оповещения в единую группу, что позволяет уменьшить избыточность и снизить уровень информационного шума. Такая агрегация упрощает обработку инцидентов и повышает эффективность управления системой оповещений.
-
Уведомления. Alertmanager поддерживает интеграцию с различными системами оповещения, такими как электронная почта, Slack, PagerDuty, Telegram и многими другими, что делает его гибким для использования в различных рабочих процессах.
-
Подавление оповещений. Alertmanager позволяет временно скрывать (или подавлять) определенные оповещения, которые находятся в процессе обработки.
-
Управление тишиной (Silence): Функция позволяет временно "заглушать" определенные оповещения, чтобы избежать избыточных уведомлений в случае плановых работ или ожидаемых сбоев.
2. Особенности Alertmanager в Nova Container Platform
2.1. Оповещения в веб-консоли Nova Container Platform
В Nova Container Platform оповещения настроены на странице .
-
В блоке Оповещения видны все текущие проблемы в кластере.
-
В блоке Управление оповещениями видны все правила остановки оповещения. Также можно создать правило для заглушения оповещений.
-
В блоке Правила оповещения видны все настроенные правила для оповещений, включая как предустановленные, так и созданные пользователем.
|
Alertmanager по умолчанию добавляет в настройку AlertmanagerConfig фильтр по имени Namespace, в котором создан ресурс AlertmanagerConfig. Если оповещение было создано через AlertmanagerConfig в Namespace Чтобы фильтр не добавлялся по умолчанию и была возможность настраивать фильтры по нескольким Namespace в одном AlertmanagerConfig, выполните следующие шаги:
|
2.2. Оповещения в Alertmanager
Для Alertmanager в Nova Container Platform создан ресурс Ingress с именем nova-alertmanager-main в Namespace nova-monitoring.
При использовании ссылки из этого ресурса вы попадёте в веб-консоль Alertmanager, где доступны текущие оповещения, настройки Alertmanager и другие функции.
3. Примеры
3.1. Пример создания правила для оповещения
-
В веб-консоли Nova Container Platform перейдите на вкладку , найдите ресурс PrometheusRule, перейдите на вкладку Экземпляры, нажмите на Создать PrometheusRule.
-
В качестве примера используйте следующий манифест:
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: pod-alerts (1) namespace: nova-monitoring (2) spec: groups: - interval: 10m (3) name: pod-status (4) rules: - alert: PodFailed (5) annotations: description: >- Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} has been in Failed state for more than 5 minutes. summary: >- Pod in {{ $labels.namespace }}/{{ $labels.pod }} is in Failed state expr: 'kube_pod_status_phase{phase="Failed"} > 0' (6) for: 5m (7) labels: severity: critical (8) - alert: PodPending (5) annotations: description: >- Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} has been in Pending state for more than 5 minutes. summary: >- Pod in {{ $labels.namespace }}/{{ $labels.pod }} is in Pending state expr: 'kube_pod_status_phase{phase="Pending"} > 0' (6) for: 5m (7) labels: severity: critical (8) - alert: PodUnknown (5) annotations: description: >- Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} has been in Unknown state for more than 5 minutes. summary: >- Pod in {{ $labels.namespace }}/{{ $labels.pod }} is in Unknown state expr: 'kube_pod_status_phase{phase="Unknown"} > 0' (6) for: 5m (7) labels: severity: critical (8)-
Имя ресурса: может быть любым.
-
Namespace: обязательно должно быть тем, что в примере.
-
Интервал: определяет, как часто оцениваются правила в группе.
-
Имя группы оповещений.
-
Название оповещения.
-
PromQL выражение: определяет условие срабатывания данного оповещения.
-
Устанавливается период времени, в течение которого условие должно оставаться истинным, прежде чем сработает оповещение. В данном случае — 5 минут.
-
Метки назначаются оповещениям и позволяют управлять их маршрутизацией в Alertmanager.
-
3.2. Пример настройки оповещения
3.2.1. Пример настройки оповещения c фильтром по умолчанию
В данном примере будет настроено оповещение по электронной почте.
-
Создайте новое Namespace с именем
test. -
(Опционально) Если ваш SMTP-сервер требует авторизации для отправки писем, создайте секрет в Namespace
test, содержащий пароль от почтового ящика отправки оповещений. -
В веб-консоли Nova Container Platform перейдите на вкладку , найдите ресурс AlertmanagerConfig, перейдите на вкладку Экземпляры, нажмите на Создать AlertmanagerConfig.
-
Используйте следующий манифест:
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
name: test-alertmanager-config (1)
namespace: test (2)
spec:
receivers:
- emailConfigs: (3)
- authIdentity: email-notification@test.local
authPassword: (4)
key: pwd
name: email
authUsername: email-notification
from: email-notification@test.local
requireTLS: true
smarthost: 'smtp.test.local:587'
to: test-user@test.local
name: email-receiver
route: (5)
continue: true
groupBy:
- alertname
groupInterval: 5m
groupWait: 30s
receiver: email-receiver
repeatInterval: 10m
-
Имя ресурса: может быть любым.
-
Имя Namespace, для которого будут работать оповещения.
-
Настройка оповещения по электронной почте. Также можно выбрать любой другой способ оповещения, представленный в подсказке на боковой панели.
-
Имя секрета, содержащего пароль от почтового ящика и его ключ.
-
Настройка маршрута. В текущей конфигурации будут приходить все оповещения из Namespace
test.
3.2.2. Пример настройки оповещения без фильтра по умолчанию
В данном примере будет настроено оповещение в Telegram.
-
Создайте новое Namespace с именем
test. -
Создайте секрет в Namespace
test, который будет содержать ID бота Telegram. -
В веб- консоли Nova Container Platform перейдите на вкладку , найдите ресурс AlertmanagerConfig, перейдите на вкладку Экземпляры, нажмите на Создать AlertmanagerConfig.
-
Используйте следующий манифест:
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
name: test-alertmanager-config (1)
namespace: test (2)
spec:
receivers:
- name: telegram-receiver (3)
telegramConfigs:
- apiURL: 'https://api.telegram.org'
botToken: (4)
key: bot_id
name: telegram-bot
chatID: -1234567890 (5)
sendResolved: true (6)
route: (7)
continue: true
groupBy:
- alertname
groupInterval: 5m
groupWait: 30s
matchers: (8)
- matchType: =~
name: namespace
value: ^(nova|kube).*
- matchType: =~
name: severity
value: critical
receiver: telegram-receiver
repeatInterval: 10m
-
Имя ресурса: может быть любым.
-
Имя Namespace.
-
Настройка оповещения в Telegram. Также можно выбрать любой другой способ оповещения, представленный в подсказке на боковой панели.
-
Имя секрета, содержащего пароль ID Telegram-бота.
-
ID Telegram-чата.
-
Будут приходить оповещения о закрытии проблемы.
-
Настройка маршрута.
-
При составлении фильтров можно использовать данные с веб-консоли Alertmanager.