Alertmanager#

Alertmanager - это инструмент, предназначенный для обработки и маршрутизации оповещений. В кластере DropApp он используется вместе с Victoria-metrics-k8s-stack для управления оповещениями, возникающими при отклонениях в работе систем или приложений.

Основные задачи и возможности
  • Прием и обработка оповещений от VictoriaMetrics:

    Alertmanager получает оповещения от сервера VictoriaMetrics, когда выполняются условия, заданные в правилах оповещений.

  • Группировка и дедупликация оповещений:

    Позволяет объединять связанные оповещения в группы и устранять дубликаты, чтобы избежать избыточных оповещений.

  • Настройка маршрутов и фильтрация оповещений:

    Поддерживает гибкую настройку маршрутов доставки оповещений (например, по уровням важности, сервисам или командам).

  • Интеграция с каналами оповещений:

    Может отправлять оповещения через email, Telegram, Webhook и другие каналы связи.

  • Поддержка правил молчания (silences):

    Позволяет временно игнорировать определенные оповещения, например, во время плановых работ или известных инцидентов.

Примечание

Alertmanager является единственным инструментом компонента Alerting и устанавливается с ним по умолчанию.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем alertmanager и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов см. подробнее в разделе «Конфигурации инструментов дополнительных компонентов».

replicaCount - количество реплик Alertmanager#

Параметр

Описание

Значение по умолчанию

replicaCount

Количество реплик контейнера Alertmanager

1

revisionHistoryLimit - ограничение истории ревизий для отката#

Параметр

Описание

Значение по умолчанию

revisionHistoryLimit

Количество старых версий ревизий для возможности отката

10

image - настройки docker-образа Alertmanager#

Параметр

Описание

Значение по умолчанию

image.repository

Репозиторий docker-образа Alertmanager с использованием глобальных переменных

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-prometheus-alertmanager/alertmanager

image.pullPolicy

Политика загрузки образа (IfNotPresent, Always, Never)

IfNotPresent

image.tag

Тег версии образа Alertmanager

v0.28.1

baseURL - базовый URL для внешнего доступа#

Параметр

Описание

Значение по умолчанию

baseURL

Полный внешний URL для доступа к Alertmanager, используется для обратных ссылок

""

extraArgs - дополнительные аргументы командной строки#

Параметр

Описание

Значение по умолчанию

extraArgs.data.retention

Время хранения данных оповещений

120h

extraArgs.web.listen-address

Адрес и порт для прослушивания веб-интерфейса

:9093

extraArgs.web.route-prefix

Префикс маршрута для веб-интерфейса

"/"

extraArgs.cluster.listen-address

Адрес для прослушивания кластерного взаимодействия

""

extraArgs.cluster.peer

Адреса узлов кластера для взаимодействия

None

extraSecretMounts - дополнительные монтирования секретов#

Параметр

Описание

Значение по умолчанию

extraSecretMounts

Дополнительные монтирования секретов (должны быть созданы вручную)

[]

imagePullSecrets - секреты для загрузки образов#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Секреты для загрузки образов из приватных реестров

[]

nameOverride - переопределение имени чарта#

Параметр

Описание

Значение по умолчанию

nameOverride

Переопределение имени чарта

""

fullnameOverride - полное переопределение имени чарта#

Параметр

Описание

Значение по умолчанию

fullnameOverride

Полное переопределение имени чарта

""

namespaceOverride - переопределение namespace#

Параметр

Описание

Значение по умолчанию

namespaceOverride

Переопределение namespace для развертывания ресурсов

""

automountServiceAccountToken - автомонтирование токена сервисного аккаунта#

Параметр

Описание

Значение по умолчанию

automountServiceAccountToken

Автоматическое монтирование токена сервисного аккаунта

True

serviceAccount - настройки сервисного аккаунта#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создать сервисный аккаунт (true/false)

True

serviceAccount.annotations

Аннотации для сервисного аккаунта

{}

priorityClassName - класс приоритета pods#

Параметр

Описание

Значение по умолчанию

priorityClassName

Класс приоритета для pods Alertmanager

""

schedulerName - имя планировщика pods#

Параметр

Описание

Значение по умолчанию

schedulerName

Имя планировщика для pods Alertmanager

""

podSecurityContext - контекст безопасности pod#

Параметр

Описание

Значение по умолчанию

podSecurityContext.fsGroup

ID группы файловой системы

65534

podSecurityContext.seccompProfile.type

Тип профиля seccomp для безопасности

RuntimeDefault

dnsConfig - конфигурация DNS#

Параметр

Описание

Значение по умолчанию

dnsConfig

Конфигурация DNS для pods, включая nameservers, searches, options

{}

hostAliases - псевдонимы хостов в файле hosts#

Параметр

Описание

Значение по умолчанию

hostAliases

Сопоставление IP-адресов на имена хостов в файле hosts pod

[]

securityContext - контекст безопасности контейнера#

Параметр

Описание

Значение по умолчанию

securityContext.capabilities.drop

Удаляемые Linux capabilities

['ALL']

securityContext.readOnlyRootFilesystem

Включение режима readonly для корневой файловой системы

True

securityContext.runAsUser

ID пользователя для запуска контейнера

65534

securityContext.runAsNonRoot

Запуск от имени не-root пользователя

True

securityContext.runAsGroup

ID группы для запуска контейнера

65534

securityContext.allowPrivilegeEscalation

Разрешение эскалации привилегий

False

additionalPeers - дополнительные узлы кластера#

Параметр

Описание

Значение по умолчанию

additionalPeers

Дополнительные узлы для кластеризации Alertmanager

[]

extraInitContainers - дополнительные init-контейнеры#

Параметр

Описание

Значение по умолчанию

extraInitContainers

Дополнительные init-контейнеры для инициализации pod

[]

extraContainers - дополнительные sidecar-контейнеры#

Параметр

Описание

Значение по умолчанию

extraContainers

Дополнительные sidecar-контейнеры в pod

[]

livenessProbe - работоспособность контейнера#

Параметр

Описание

Значение по умолчанию

livenessProbe.httpGet.path

HTTP-путь для работоспособности

/

livenessProbe.httpGet.port

HTTP-порт для работоспособности

http

readinessProbe - проба готовности контейнера#

Параметр

Описание

Значение по умолчанию

readinessProbe.httpGet.path

HTTP-путь для проверки готовности

/

readinessProbe.httpGet.port

HTTP-порт для проверки готовности

http

service - настройки сервиса#

Параметр

Описание

Значение по умолчанию

service.annotations

Аннотации для сервиса

{}

service.labels.app.kubernetes.io/component

Метка компонента приложения

monitoring

service.type

Тип сервиса (ClusterIP, NodePort, LoadBalancer)

ClusterIP

service.port

Порт сервиса для веб-интерфейса

9093

service.clusterPort

Порт для кластерного взаимодействия

9094

service.loadBalancerIP

IP-адрес LoadBalancer (только для типа LoadBalancer)

""

service.loadBalancerSourceRanges

Разрешенные IP-диапазоны для LoadBalancer

[]

service.extraPorts

Дополнительные порты для сервиса

[]

service.ipDualStack.enabled

Включение поддержки dual stack (IPv4/IPv6)

False

service.ipDualStack.ipFamilies

Семейства IP-протоколов

['IPv6', 'IPv4']

service.ipDualStack.ipFamilyPolicy

Политика семейств IP

PreferDualStack

ipDualStack - поддержка двойного стека IP#

Параметр

Описание

Значение по умолчанию

ipDualStack.enabled

Включение поддержки двойного стека IPv4/IPv6

False

ipDualStack.ipFamilies

Список семейств IP-адресов

["IPv6", "IPv4"]

ipDualStack.ipFamilyPolicy

Политика семейства IP-адресов

"PreferDualStack"

servicePerReplica - отдельный сервис для каждой реплики#

Параметр

Описание

Значение по умолчанию

servicePerReplica.enabled

Включение создания сервиса для каждой реплики

False

servicePerReplica.annotations

Аннотации для сервисов реплик

{}

servicePerReplica.loadBalancerSourceRanges

IP-диапазоны для LoadBalancer реплик

[]

servicePerReplica.externalTrafficPolicy

Политика внешнего трафика (Cluster/Local)

Cluster

servicePerReplica.type

Тип сервиса для реплик

ClusterIP

ingress - настройки Ingress для внешнего доступа#

Параметр

Описание

Значение по умолчанию

ingress.enabled

Включение создания Ingress

True

ingress.className

Класс Ingress контроллера

nginx

ingress.annotations

Аннотации для Ingress

{}

ingress.hosts

Список хостов для Ingress

[{'host': 'alertmanager.{{ .Values.global.publicDomain | default "dapp.test" }}', 'paths': [{'path': '/', 'pathType': 'ImplementationSpecific'}]}]

ingress.tls

Настройки TLS для Ingress

[{'secretName': 'ingress-tls', 'hosts': ['alertmanager.{{ .Values.global.publicDomain | default "dapp.test" }}']}]

ingressPerReplica - настройки отдельного Ingress для каждой реплики#

Параметр

Описание

Значение по умолчанию

ingressPerReplica.enabled

Включение создания Ingress для каждой реплики

False

ingressPerReplica.className

Класс Ingress контроллера для реплик

""

ingressPerReplica.annotations

Аннотации для Ingress реплик

{}

ingressPerReplica.labels

Метки для Ingress реплик

{}

ingressPerReplica.hostPrefix

Префикс имени хоста для реплик

alertmanager

ingressPerReplica.hostDomain

Домен для хостов реплик

domain.com

ingressPerReplica.paths

Пути для маршрутизации реплик

['/']

ingressPerReplica.pathType

Тип пути для реплик

ImplementationSpecific

ingressPerReplica.tlsSecretName

Имя TLS-секрета для реплик

""

resources - ограничения ресурсов CPU и памяти#

Параметр

Описание

Значение по умолчанию

resources.limits.cpu

Максимальное количество CPU

100m

resources.limits.memory

Максимальный объем памяти

128Mi

resources.requests.cpu

Запрашиваемое количество CPU

10m

resources.requests.memory

Запрашиваемый объем памяти

32Mi

nodeSelector - селектор узлов#

Параметр

Описание

Значение по умолчанию

nodeSelector

Селектор узлов для размещения pods на определенных узлах

{}

tolerations - tolerations для узлов с taint#

Параметр

Описание

Значение по умолчанию

tolerations

Tolerations для размещения на узлах с taint

[]

affinity - правила привязки#

Параметр

Описание

Значение по умолчанию

affinity

Правила привязки для размещения pods

{}

podAntiAffinity - anti-affinity между pods#

Параметр

Описание

Значение по умолчанию

podAntiAffinity

Anti-affinity между pods (soft/hard/"")

""

podAntiAffinityTopologyKey - ключ топологии для anti-affinity#

Параметр

Описание

Значение по умолчанию

podAntiAffinityTopologyKey

Ключ топологии для anti-affinity

kubernetes.io/hostname

topologySpreadConstraints - ограничения распределения по топологии#

Параметр

Описание

Значение по умолчанию

topologySpreadConstraints

Ограничения распределения pods по топологии

[]

statefulSet - конфигурация StatefulSet#

Параметр

Описание

Значение по умолчанию

statefulSet.annotations

Аннотации для StatefulSet

{}

minReadySeconds

Минимальное время готовности pod

0

podAnnotations - аннотации pods#

Параметр

Описание

Значение по умолчанию

podAnnotations

Аннотации для pods Alertmanager

{}

podLabels - метки pods#

Параметр

Описание

Значение по умолчанию

podLabels

Метки для pods Alertmanager

{}

podDisruptionBudget - настройка ограничения одновременной недоступности pods#

Параметр

Описание

Значение по умолчанию

podDisruptionBudget

Конфигурация объекта podDisruptionBudget для ограничения количества одновременно недоступных pods

{}

command - команда запуска контейнера#

Параметр

Описание

Значение по умолчанию

command

Команда для запуска контейнера

[]

persistence - настройки постоянного хранилища#

Параметр

Описание

Значение по умолчанию

persistence.enabled

Включение постоянного хранилища

False

persistence.accessModes

Режимы доступа к хранилищу

['ReadWriteOnce']

persistence.size

Размер тома хранилища

50Mi

configAnnotations - аннотации конфигурации#

Параметр

Описание

Значение по умолчанию

configAnnotations

Аннотации для ConfigMap с конфигурацией (например, для vault-secrets-webhook)

{}

config - конфигурация Alertmanager#

Параметр

Описание

Значение по умолчанию

config.enabled

Включение создания конфигурации

True

config.global

Глобальные настройки Alertmanager

{}

config.templates

Пути к шаблонам оповещений

['/etc/vm/configs/**/*.tmpl']

config.receivers

Получатели оповещений

[{'name': 'blackhole'}]

config.route.group_wait

Время ожидания группировки оповещений

10s

config.route.group_interval

Интервал между отправками групп оповещений

5m

config.route.receiver

Получатель по умолчанию

blackhole

config.route.repeat_interval

Интервал повторной отправки оповещений

3h

configmapReload - автоматическая перезагрузка конфигурации#

Параметр

Описание

Значение по умолчанию

configmapReload.enabled

Включение автоматической перезагрузки

True

configmapReload.name

Имя контейнера для перезагрузки

configmap-reload

configmapReload.image.repository

Репозиторий образа для перезагрузки конфигурации

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-prometheus-operator/prometheus-config-reloader

configmapReload.image.tag

Тег образа для перезагрузки

v0.81.0

configmapReload.image.pullPolicy

Политика загрузки образа для перезагрузки

IfNotPresent

configmapReload.resources

Ресурсы для контейнера перезагрузки

{}

configmapReload.extraArgs

Дополнительные аргументы для перезагрузки

{}

configmapReload.extraVolumeMounts

Дополнительные монтирования томов

[]

configmapReload.extraEnv

Дополнительные переменные окружения

[]

configmapReload.securityContext.capabilities.drop

Удаляемые capabilities для перезагрузки

['ALL']

configmapReload.securityContext.readOnlyRootFilesystem

Включение режима readonly для корневой файловой системы

True

configmapReload.securityContext.runAsUser

ID пользователя для перезагрузки

65534

configmapReload.securityContext.runAsNonRoot

Запуск от не-root пользователя для перезагрузки

True

configmapReload.securityContext.runAsGroup

ID группы для перезагрузки

65534

templates - шаблоны оповещений#

Параметр

Описание

Значение по умолчанию

templates

Пользовательские шаблоны для форматирования оповещений

[]

extraVolumeMounts - дополнительные монтирования томов#

Параметр

Описание

Значение по умолчанию

extraVolumeMounts

Дополнительные монтирования томов к контейнеру

[]

extraVolumes - дополнительные тома#

Параметр

Описание

Значение по умолчанию

extraVolumes

Дополнительные тома для pod

[]

extraEnv - дополнительные переменные окружения#

Параметр

Описание

Значение по умолчанию

extraEnv

Дополнительные переменные окружения

[]

testFramework - настройки тестового фреймворка#

Параметр

Описание

Значение по умолчанию

testFramework.enabled

Включение создания ресурсов для тестирования

False

testFramework.annotations."helm.sh/hook"

Аннотация для Helm hook

test-success

testFramework.annotations

Аннотации для тестовых ресурсов

{'helm.sh/hook': 'test-success'}

verticalPodAutoscaler - вертикальное автомасштабирование pods#

Параметр

Описание

Значение по умолчанию

verticalPodAutoscaler.enabled

Включение VPA для Alertmanager

False

extraPodConfigs - дополнительная конфигурация pods#

Параметр

Описание

Значение по умолчанию

extraPodConfigs

Дополнительные конфигурации pods, такие как dnsPolicy, hostNetwork

{}