Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Триггеры
Триггеры (alerting rules) определяют условия создания алертов при отклонении значений метрик от ожидаемых порогов.
Триггеры описываются в группах правил и задаются как элементы массива spec.rules.
Если у правила указано поле alert, оно считается триггером и используется для создания алертов.
Виды групп правил с триггерами
Поддерживаются три типа групп правил, в которых могут быть определены триггеры:
| Тип группы правил | Область видимости | У кого есть доступ |
|---|---|---|
| Системные группы правил (ClusterObservabilityMetricsRulesGroup) | Уровень кластера | Администраторы DKP |
| Проектные группы правил (ObservabilityMetricsRulesGroup) | Уровень проекта (неймспейса) | Пользователи соответствующего проекта |
| Общедоступные (propagated) группы правил (ClusterObservabilityPropagatedMetricsRulesGroup) | Создаются на уровне кластера и автоматически доступны во всех проектах | Пользователи всех проектов |
Описание типов групп правил:
-
Системные группы правил (ClusterObservabilityMetricsRulesGroup) — используются для описания триггеров уровня платформы и компонентов кластера. Создаются и управляются администраторами DKP.
-
Проектные группы правил (ObservabilityMetricsRulesGroup) — используются для описания триггеров, относящихся к конкретному проекту (неймспейсу). Пользователи проекта могут создавать и редактировать их в рамках настроенных прав доступа.
-
Общедоступные (propagated) группы правил (ClusterObservabilityPropagatedMetricsRulesGroup) — создаются на уровне кластера и автоматически становятся доступны во всех проектах.
Дополнительные лейблы алертов, поставляемых с DKP
Модуль observability позволяет добавлять дополнительные лейблы к триггерам алертов, поставляемых с DKP.
Для этого используется ресурс ClusterObservabilityAlertAdditionalLabels.
Дополнительные лейблы применяются только к алертам, созданным с помощью ресурсов ClusterObservabilityMetricsRulesGroup и ClusterObservabilityPropagatedMetricsRulesGroup с лейблом heritage: deckhouse.
Чтобы добавить лейблы к пользовательским алертам, создаваемым с помощью ресурсов ObservabilityMetricsRulesGroup и ClusterObservabilityMetricsRulesGroup, используйте поле spec.rules.labels.
Примеры конфигурации:
-
Добавление лейбла ко всем алертам кластера:
apiVersion: observability.deckhouse.io/v1alpha1 kind: ClusterObservabilityAlertAdditionalLabels metadata: name: all-alerts spec: alertSelector: matchExpressions: - key: alertname operator: Exists additionalLabels: example-label-name: example-label-value -
Добавление лейбла
severity=Infoдля алертов сseverity_level7,8,9:apiVersion: observability.deckhouse.io/v1alpha1 kind: ClusterObservabilityAlertAdditionalLabels metadata: name: severity-info-low-priority spec: alertSelector: matchExpressions: - key: severity_level operator: In values: ["7", "8", "9"] additionalLabels: severity: Info -
Добавление лейбла
team=customдля алертов с указанными именами:apiVersion: observability.deckhouse.io/v1alpha1 kind: ClusterObservabilityAlertAdditionalLabels metadata: name: deckhouse-team-routing spec: alertSelector: matchExpressions: - key: alertname operator: In values: - D8CNIMisconfigured - D8DeckhouseIsNotOnReleaseChannel - D8DeckhouseIsNotOnReleaseChannel additionalLabels: team: custom
Группы триггеров
Группы триггеров используются для логической компоновки правил мониторинга и управления их параметрами на уровне набора правил.
Группы удобны для объединения триггеров, относящихся к одному компоненту, сервису или проекту, а также для применения единого интервала вычисления ко всем правилам группы.
Уведомления
Модуль observability предоставляет механизмы настройки доставки уведомлений об алертах
и разграничения доступа к каналам уведомлений на уровне кластера и проектов.
Поддерживаются следующие каналы доставки:
Email;Telegram;Slack;Webhook;ExpressMessenger.
Параметры подключения зависят от вида канала и настраиваются через соответствующий Kubernetes-ресурс.
Виды каналов уведомлений
Поддерживаются три типа каналов уведомлений:
| Тип каналов | Область видимости | Кто может создавать |
|---|---|---|
| Системные каналы (ClusterObservabilityNotificationChannel) | Уровень кластера | Администраторы DKP |
| Проектные каналы (ObservabilityNotificationChannel) | Уровень проекта (неймспейса) | Пользователи соответствующего проекта |
| Общедоступные (propagated) каналы (ClusterObservabilityPropagatedNotificationChannel) | Создаются на уровне кластера и автоматически доступны во всех проектах | Администраторы DKP |
Описание видов каналов:
-
Системные каналы (ClusterObservabilityNotificationChannel) — используются для доставки уведомлений уровня кластера. Доступны в веб-интерфейсе Deckhouse в разделе «Система» → «Управление системой» → «Мониторинг» → «Настройка уведомлений» → «Каналы уведомлений».
-
Проектные каналы (ObservabilityNotificationChannel) — позволяют настраивать доставку уведомлений в рамках конкретного проекта. Доступны в веб-интерфейсе Deckhouse в соответствующем проекте → «Мониторинг» → «Настройка уведомлений» → «Каналы уведомлений».
-
Общедоступные (propagated) каналы (ClusterObservabilityPropagatedNotificationChannel) — создаются на уровне кластера и автоматически становятся доступными во всех проектах для доставки уведомлений. Для создания используется ресурс ClusterObservabilityPropagatedNotificationChannel или консольная утилита
d8.
Настройка HTTP-клиента Webhook-канала
Для каналов с spec.type: Webhook можно дополнительно настроить параметры исходящих HTTP-запросов в spec.webhook.httpConfig.
Доступны 3 взаимоисключающих варианта аутентификации:
basicAuth;authorization;oauth2.
Обязательные и опциональные поля
- Обязательное поле для Webhook-канала:
spec.webhook.url spec.webhook.httpConfig— опциональный блок- При использовании
oauth2обязательны поляoauth2.clientIdиoauth2.tokenUrl
Помимо аутентификации, в httpConfig доступны:
- параметры транспорта (
enableHttp2,followRedirects); - настройки прокси (
proxyUrl,noProxy,proxyFromEnvironment,proxyConnectHeader); - настройки TLS (
tlsConfig); - пользовательские заголовки (
httpHeaders).
Для OAuth2 есть два уровня настроек:
httpConfig.proxy*иhttpConfig.tlsConfigприменяются к запросам отправки webhook;httpConfig.oauth2.proxy*иhttpConfig.oauth2.tlsConfigприменяются к запросам получения OAuth2-токена.
При использовании полей с файлами (passwordFile, credentialsFile, clientSecretFile)
указанные пути должны быть доступны внутри контейнера Alertmanager.
Пример с basicAuth:
apiVersion: observability.deckhouse.io/v1alpha1
kind: ClusterObservabilityNotificationChannel
metadata:
name: webhook-channel-basic-auth
spec:
type: Webhook
webhook:
url: https://hooks.example/webhook
httpConfig:
basicAuth:
username: notify-user
password: notify-secretПример с authorization:
apiVersion: observability.deckhouse.io/v1alpha1
kind: ClusterObservabilityNotificationChannel
metadata:
name: webhook-channel-authorization
spec:
type: Webhook
webhook:
url: https://hooks.example/webhook
httpConfig:
authorization:
type: Bearer
credentials: opaque-tokenПример с oauth2:
apiVersion: observability.deckhouse.io/v1alpha1
kind: ClusterObservabilityNotificationChannel
metadata:
name: webhook-channel-oauth2
spec:
type: Webhook
webhook:
url: https://hooks.example/webhook
httpConfig:
oauth2:
clientId: my-client
clientSecret: my-secret
tokenUrl: https://idp.example/token
scopes:
- read
- write
endpointParams:
audience: myappПравила уведомлений
Правила уведомлений позволяют определить, по какому каналу должны отправляться уведомления для алерта (или группы алертов).
| Тип правил | Описание | Как настроить |
|---|---|---|
| Системные правила уведомлений | Позволяют настроить правила для отправки системных алертов. Cистемные правила могут использовать только системные каналы уведомлений. Доступны в веб-интерфейсе Deckhouse в разделе «Система» → «Управление системой» → «Мониторинг» → «Настройки уведомлений» → «Правила уведомлений». | Используйте ресурс ClusterObservabilityNotificationPolicy. |
| Проектные правила уведомлений | Позволяют настроить правила для отправки проектных алертов. Проектные правила могут использовать проектные или стандартные кластерные каналы уведомлений, но не системные каналы уведомлений. Доступны в веб-интерфейсе Deckhouse в соответствующем проекте → «Мониторинг» → «Настройки уведомлений» → «Правила уведомлений». | Используйте ресурс ObservabilityNotificationPolicy. |
Отключение уведомлений
В ситуациях, когда уведомления ожидаются заранее (например, при плановых работах или тестировании),
модуль observability позволяет отключить отправку уведомлений для алертов, соответствующих заданным условиям.
| Тип отключений | Описание | Как настроить |
|---|---|---|
| Системные отключения уведомлений | Позволяют настроить правила отключения отправки системных алертов. Доступны в веб-интерфейсе Deckhouse в разделе «Система» → «Управление системой» → «Мониторинг» → «Настройки уведомлений» → «Отключение уведомлений». | Используйте ресурс ClusterObservabilityNotificationSilence. |
| Проектные отключения уведомлений | Позволяют настроить правила отключения отправки проектных алертов. Доступны в веб-интерфейсе Deckhouse в соответствующем проекте → «Мониторинг» → «Настройки уведомлений» → «Отключение уведомлений». | Используйте ресурс ObservabilityNotificationSilence. |
Алерты
Модуль observability обеспечивает разграничение прав доступа к алертам уровня кластера и проектов,
а также позволяет просматривать список активных и завершённых алертов.
Активные алерты разделяются по уровню критичности:
- критические (
critical, S1–S3); - предупреждающие (
warning, S4–S6); - информационные (
info, S7–S9).
При просмотре алерта пользователь может увидеть общую информацию, лейблы, аннотации и график.
Виды алертов
Поддерживаются два типа алертов:
| Тип алертов | Область видимости | У кого есть доступ |
|---|---|---|
| Системные алерты (ClusterObservabilityAlerts) | Уровень кластера | Администраторы DKP |
| Проектные алерты (ObservabilityAlerts) | Уровень проекта (неймспейса) | Пользователи соответствующего проекта |
Описание видов алертов:
-
Системные алерты (ClusterObservabilityAlerts) — относятся к компонентам кластера DKP. Полный список активных и завершенных системных алертов доступен в веб-интерфейсе Deckhouse в разделе «Система» → «Управление системой» → «Мониторинг» → «Активные алерты».
-
Проектные алерты (ObservabilityAlerts) — относятся к ресурсам конкретного проекта (неймспейса). Полный список активных и завершенных проектных алертов доступен в веб-интерфейсе Deckhouse в соответствующем проекте → «Мониторинг» → «Активные алерты».
Алерты DeadMansSwitch и PrometheusUnavailable
DeadMansSwitch
DeadMansSwitch — это служебный алерт, который срабатывает непрерывно, тем самым подтверждая нормальную работу Prometheus и всего пайплайна доставки алертов.
Если DeadMansSwitch перестает поступать, начинает срабатывать алерт PrometheusUnavailable.
По умолчанию алерт DeadMansSwitch отправляется во все настроенные каналы уведомлений, если для них не задана фильтрация по лейблам в политиках уведомлений.
Чтобы не засорять список алертов, DeadMansSwitch скрыт из вывода команды d8 k get clusterobservabilityalerts (list/watch).
Чтобы получить его напрямую, используйте следующую команду:
d8 k get clusterobservabilityalert deadmansswitchОтключение этого алерта не рекомендуется, но при необходимости это можно сделать вручную с помощью параметра deadMansSwitch.enabled в настройках модуля.
При ручном отключении алерт PrometheusUnavailable не создается.
PrometheusUnavailable
PrometheusUnavailable (ранее — MissingDeadMansSwitch) — это алерт, который срабатывает, если DeadMansSwitch не поступает более 2 минут.
Это указывает на проблему в пайплайне доставки алертов. Возможные причины:
- недоступен Prometheus;
- нарушено взаимодействие между Prometheus и Alertmanager;
- иная проблема, препятствующая отправке алертов.
Алерт PrometheusUnavailable является системным и отображается как в веб-интерфейсе Deckhouse, так и в выводе команды d8 k get clusterobservabilityalerts.