Alertmanager#

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

Основные задачи и возможности
  • Прием оповещений: получение уведомлений от VictoriaMetrics при срабатывании заданных правил (alerting rules).

  • Группировка и дедупликация: объединение связанных оповещений и устранение дубликатов для предотвращения избыточных уведомлений.

  • Маршрутизация и фильтрация: гибкое распределение оповещений по каналам связи на основе меток (например, по уровню критичности, сервису или команде).

  • Интеграция с каналами доставки: отправка оповещений через Email, Telegram, вебхук и другие каналы связи.

  • Поддержка правил молчания (silences): временное отключение уведомлений для заданных оповещений (например, на время плановых работ или известных инцидентов).

Примечание

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

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

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

replicaCount – количество реплик pod#

Параметр

Описание

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

replicaCount

Количество реплик pod инструмента

1

revisionHistoryLimit – количество сохраняемых ресурсов для отката#

Параметр

Описание

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

revisionHistoryLimit

Количество предыдущих версий ресурса, сохраняемых для отката

10

image – параметры контейнерного образа#

Параметр

Описание

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

image.repository

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

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

image.pullPolicy

Политика загрузки образа.
Возможные значения: Always, IfNotPresent, Never

IfNotPresent

image.tag

Тег образа контейнера

v0.33.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

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

~

extraSecretMounts – дополнительные монтирования Secret#

Параметр

Описание

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

extraSecretMounts

Монтирования Secret, создаваемых вручную в пространстве имен.
Пример конфигурации:

- name: secret-files
  mountPath: /etc/secrets
  subPath: ""
  secretName: alertmanager-secret-files
  readOnly: true

[]

imagePullSecrets – Secret для загрузки образов контейнера#

Параметр

Описание

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

imagePullSecrets

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

[]

nameOverride – переопределение базового имени ресурсов чарта#

Параметр

Описание

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

nameOverride

Переопределение базового имени ресурсов чарта для генерации имен

""

fullnameOverride – полное переопределение имени для всех ресурсов чарта#

Параметр

Описание

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

fullnameOverride

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

""

namespaceOverride – переопределение пространства имен#

Параметр

Описание

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

namespaceOverride

Переопределение пространства имен вместо значения по умолчанию

""

automountServiceAccountToken – автомонтирование токена ServiceAccount в pod#

Параметр

Описание

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

automountServiceAccountToken

Включение автоматического монтирования токена ServiceAccount в pod

true

hostUsers – использование пространства имен пользователей#

Параметр

Описание

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

hostUsers

Размещение pod в пользовательском пространстве имен

false

serviceAccount – настройки ServiceAccount#

Параметр

Описание

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

serviceAccount.create

Создание ServiceAccount для pod

true

serviceAccount.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

serviceAccount.name

Имя ServiceAccount (генерируется автоматически, если не указано и serviceAccount.create: true)

""

priorityClassName – имя класса приоритета pod#

Параметр

Описание

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

priorityClassName

Имя PriorityClass для pod

""

schedulerName – имя планировщика pod#

Параметр

Описание

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

schedulerName

Имя планировщика (scheduler) для pod

""

podSecurityContext – параметры контекста безопасности pod#

Параметр

Описание

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

podSecurityContext.fsGroup

Идентификатор группы файловой системы для pod

65534

podSecurityContext.seccompProfile.type

Тип профиля seccomp

RuntimeDefault

dnsConfig – пользовательская конфигурация DNS для pod#

Параметр

Описание

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

dnsConfig

Пользовательская конфигурация DNS для pod.
Пример конфигурации:

nameservers:
  - 1.2.3.4
searches:
  - ns1.svc.cluster-domain.example
  - my.dns.search.suffix
options:
  - name: ndots
    value: "2"
  - name: edns0

{}

hostAliases – псевдонимы хостов для pod#

Параметр

Описание

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

hostAliases

Список псевдонимов хостов для добавления в /etc/hosts.
Пример конфигурации:

- ip: "127.0.0.1"
  hostnames:
    - "foo.local"
    - "bar.local"
- ip: "10.1.2.3"
  hostnames:
    - "foo.remote"
    - "bar.remote"

[]

securityContext – параметры контекста безопасности контейнера#

Параметр

Описание

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

securityContext.capabilities.drop

Список возможностей (capabilities), отзываемых у контейнера

- ALL

securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

true

securityContext.runAsUser

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

65534

securityContext.runAsNonRoot

Запуск контейнера от имени пользователя без административных полномочий

true

securityContext.runAsGroup

GID группы для контейнера

65534

securityContext.allowPrivilegeEscalation

Активация разрешения на эскалацию привилегий в контейнере

false

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

Параметр

Описание

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

additionalPeers

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

[]

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

Параметр

Описание

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

extraInitContainers

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

[]

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

Параметр

Описание

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

extraContainers

Список дополнительных sidecar-контейнеров в pod

[]

containerPortName – имя порта контейнера#

Параметр

Описание

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

containerPortName

Имя порта контейнера, используемое для проверки работоспособности и готовности

http

livenessProbe – параметры проверки работоспособности#

Параметр

Описание

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

livenessProbe.httpGet.path

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

/

livenessProbe.httpGet.port

Имя порта для проверки работоспособности (должен совпадать с containerPortName)

http

readinessProbe – параметры проверки готовности#

Параметр

Описание

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

readinessProbe.httpGet.path

HTTP-путь, используемый при проверке готовности

/

readinessProbe.httpGet.port

Имя порта, используемого при проверке готовности

http

service – настройки Service#

Параметр

Описание

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

service.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

service.labels.app.kubernetes.io/component

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

monitoring

service.type

Тип Service.
Возможные значения: ClusterIP, NodePort, LoadBalancer

ClusterIP

service.port

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

9093

service.clusterPort

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

9094

service.loadBalancerIP

IP-адрес для Service типа LoadBalancer

""

service.loadBalancerSourceRanges

CIDR-диапазоны исходных IP-адресов для LoadBalancer

[]

service.extraPorts

Порты, открываемые на Service

[]

service.ipDualStack.enabled

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

false

service.ipDualStack.ipFamilies

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

["IPv6", "IPv4"]

service.ipDualStack.ipFamilyPolicy

Политика выбора семейства IP.
Возможные значения: PreferDualStack, RequireDualStack, SingleStack

"PreferDualStack"

servicePerReplica – Service для каждой реплики#

Параметр

Описание

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

servicePerReplica.enabled

Создание Service для каждой реплики StatefulSet

false

servicePerReplica.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

servicePerReplica.loadBalancerSourceRanges

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

[]

servicePerReplica.externalTrafficPolicy

Политика маршрутизации внешнего трафика.
Возможные значения: Cluster, Local

Cluster

servicePerReplica.type

Тип Service для реплик

ClusterIP

serviceMonitor – параметры ServiceMonitor#

Параметр

Описание

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

serviceMonitor.enabled

Создание ServiceMonitor для сбора метрик

true

serviceMonitor.namespace

Пространство имен для ServiceMonitor

""

serviceMonitor.additionalLabels

Метки, добавляемые ко всем создаваемым ресурсам

{}

serviceMonitor.interval

Интервал сбора метрик

"30s"

serviceMonitor.scrapeTimeout

Настройка тайм-аута сбора метрик

"10s"

serviceMonitor.path

HTTP-путь для сбора метрик

/metrics

serviceMonitor.scheme

Протокол для сбора метрик

"http"

serviceMonitor.tlsConfig

TLS-настройки для подключения к эндпоинту сбора метрик

{}

serviceMonitor.bearerTokenFile

Путь к файлу с bearer-токеном для аутентификации при сборе метрик

""

serviceMonitor.basicAuth

Настройки базовой аутентификации для подключения к эндпоинту сбора метрик

{}

serviceMonitor.honorLabels

Сохранение меток источника при сборе метрик

true

serviceMonitor.metricRelabelings

Правила фильтрации и преобразования меток, применяемые к собранным метрикам

[]

serviceMonitor.relabelings

Правила фильтрации и преобразования меток, применяемые к целям сбора до начала сбора метрик

[]

ingress – настройки Ingress для маршрутизации внешнего трафика#

Параметр

Описание

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

ingress.enabled

Создание Ingress-ресурса для внешнего доступа

false

ingress.className

Класс IngressController

"nginx"

ingress.labels

Метки для Ingress

{}

ingress.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам.
Пример конфигурации:

kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"

{}

ingress.hosts

Хосты с путями маршрутизации

- host: 'alertmanager.{{ include "ingress.domain" . }}'
  paths:
    - path: /
      pathType: ImplementationSpecific

ingress.tls

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

- secretName: ingress-tls
  hosts:
    - 'alertmanager.{{ include "ingress.domain" . }}'

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

Параметр

Описание

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

ingressPerReplica.enabled

Создание Ingress для каждой реплики

false

ingressPerReplica.className

Класс IngressController для реплик

"nginx"

ingressPerReplica.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

ingressPerReplica.labels

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

{}

ingressPerReplica.hostPrefix

Префикс имен хостов; итоговое имя формируется как prefix-replicaNumber.domain

"alertmanager"

ingressPerReplica.hostDomain

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

'{{ include "ingress.domain" . }}'

ingressPerReplica.paths

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

- /

ingressPerReplica.pathType

Тип пути.
Возможные значения: Exact, ImplementationSpecific, Prefix

ImplementationSpecific

ingressPerReplica.tlsSecretName

Имя Secret с TLS-сертификатом для Ingress реплик

""

ingressPerReplica.tlsSecretPerReplica.enabled

Secret с TLS-сертификатом для каждой реплики

false

ingressPerReplica.tlsSecretPerReplica.prefix

Префикс имен TLS-Secret; итоговое имя: prefix-replicaNumber

"alertmanager"

route – параметры маршрута Gateway API#

Параметр

Описание

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

route.main.enabled

Включение ресурса HTTPRoute для Gateway API

false

route.main.apiVersion

Версия API Gateway (по умолчанию gateway.networking.k8s.io/v1)

""

route.main.kind

Тип ресурса (по умолчанию HTTPRoute)

""

route.main.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

{}

route.main.labels

Метки, добавляемые ко всем создаваемым ресурсам

{}

route.main.parentRefs

Ссылки на родительские ресурсы.
Пример конфигурации:

- name: contour
  sectionName: http

[]

route.main.hostnames

Хосты для маршрутизации HTTP-запросов.
Пример конфигурации:

- alertmanager.domain.com

[]

route.main.additionalRules

Дополнительные правила маршрутизации

[]

route.main.filters

Фильтры для HTTP-запросов

[]

route.main.matches

Условия сопоставления запросов для ресурса HTTPRoute

- path:
    type: PathPrefix
    value: /

route.main.httpsRedirect

Включение перенаправления HTTP-запросов на HTTPS

false

resources – запросы и лимиты ресурсов контейнера#

Параметр

Описание

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

resources.limits.cpu

Ограничение ресурсов CPU для контейнера

100m

resources.limits.memory

Ограничение ресурсов памяти для контейнера

128Mi

resources.requests.cpu

Запрашиваемые ресурсы CPU для контейнера

10m

resources.requests.memory

Запрашиваемые ресурсы памяти для контейнера

32Mi

nodeSelector – селектор узлов для планирования pod#

Параметр

Описание

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

nodeSelector

Селектор узлов для планирования pod

{}

tolerations – параметры Toleration для pod#

Параметр

Описание

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

tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

affinity – настройки правил привязки pod к узлам#

Параметр

Описание

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

affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

podAntiAffinity – anti-affinity между pod#

Параметр

Описание

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

podAntiAffinity

Политика anti-affinity для предотвращения размещения реплик на одном узле.
Возможные значения: hard, soft, ""

""

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

Параметр

Описание

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

podAntiAffinityTopologyKey

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

kubernetes.io/hostname

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

Параметр

Описание

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

topologySpreadConstraints

Ограничения топологии для равномерного распределения pod по зонам доступности и узлам.
Пример конфигурации:

- maxSkew: 1
  topologyKey: failure-domain.beta.kubernetes.io/zone
  whenUnsatisfiable: DoNotSchedule
  labelSelector:
    matchLabels:
      app.kubernetes.io/instance: alertmanager

[]

statefulSet – настройки StatefulSet#

Параметр

Описание

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

statefulSet.annotations

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

{}

minReadySeconds – минимальное время в состоянии Ready#

Параметр

Описание

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

minReadySeconds

Время в состоянии Ready, после которого pod считается доступным

0

podAnnotations – аннотации pod#

Параметр

Описание

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

podAnnotations

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

{}

podLabels – метки pod#

Параметр

Описание

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

podLabels

Метки для pod

{}

podDisruptionBudget – настройки PodDisruptionBudget#

Параметр

Описание

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

podDisruptionBudget

Настройки PodDisruptionBudget для ограничения количества одновременно недоступных pod.
Пример конфигурации:

maxUnavailable: 1
minAvailable: 1

{}

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

Параметр

Описание

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

command

Переопределение команды запуска контейнера

[]

persistence – параметры постоянного хранилища#

Параметр

Описание

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

persistence.enabled

Создание PersistentVolumeClaim вместо emptyDir

false

persistence.annotations

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

{}

persistence.labels

Метки для PersistentVolumeClaim

{}

persistence.accessModes

Режимы доступа к тому

- ReadWriteOnce

persistence.size

Размер запрашиваемого тома

50Mi

persistence.emptyDir

Настройки emptyDir-тома при отключенном постоянном хранилище

{}

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

Параметр

Описание

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

configAnnotations

Набор аннотаций, применяемых к ресурсу ConfigMap с конфигурацией.
Пример конфигурации:

# Для интеграции с vault-secrets-webhook
vault.security.banzaicloud.io/vault-role: "admin"
vault.security.banzaicloud.io/vault-addr: "https://vault.vault.svc.cluster.local:8200"
vault.security.banzaicloud.io/vault-skip-verify: "true"
vault.security.banzaicloud.io/vault-path: "kubernetes"

{}

config – основная конфигурация#

Параметр

Описание

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

config.enabled

Создание конфигурации

true

config.global

Глобальные настройки.
Пример конфигурации:

slack_api_url: ''

{}

config.templates

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

- "/etc/vm/configs/**/*.tmpl"
- '/etc/alertmanager/*.tmpl'

config.receivers

Получатели оповещений.
Пример конфигурации:

- name: blackhole
  slack_configs:
    - channel: '@you'
      send_resolved: true
- 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.92.1

configmapReload.image.pullPolicy

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

IfNotPresent

configmapReload.resources

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

{}

configmapReload.livenessProbe

Настройка проверки работоспособности перезагрузчика.
Пример конфигурации:

httpGet:
  path: /healthz
  port: 8080
  scheme: HTTP

{}

configmapReload.readinessProbe

Настройка проверки готовности перезагрузчика.
Пример конфигурации:

httpGet:
  path: /healthz
  port: 8080
  scheme: HTTP

{}

configmapReload.extraArgs

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

{}

configmapReload.extraVolumeMounts

Монтирования Volume для перезагрузчика.
Пример конфигурации:

- name: extras
  mountPath: /usr/share/extras
  readOnly: true

[]

configmapReload.extraEnv

Переменные окружения для перезагрузчика.
Пример конфигурации:

- name: FOO
  value: BAR

[]

configmapReload.securityContext.capabilities.drop

Список capabilities для удаления

- ALL

configmapReload.securityContext.readOnlyRootFilesystem

Монтирование корневой файловой системы в режиме «только для чтения»

true

configmapReload.securityContext.runAsUser

UID пользователя перезагрузчика

65534

configmapReload.securityContext.runAsNonRoot

Запуск перезагрузчика от имени пользователя без административных полномочий

true

configmapReload.securityContext.runAsGroup

GID группы перезагрузчика

65534

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

Параметр

Описание

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

templates

Шаблоны для форматирования сообщений оповещений в виде ConfigMap.
Пример конфигурации:

alertmanager.tmpl: |-

{}

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

Параметр

Описание

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

extraVolumeMounts

Монтирования Volume к основному контейнеру.
Пример конфигурации:

- name: extras
  mountPath: /usr/share/extras
  readOnly: true

[]

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

Параметр

Описание

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

extraVolumes

Volume для pod.
Пример конфигурации:

- name: extras
  emptyDir: {}

[]

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

Параметр

Описание

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

extraEnv

Переменные окружения для основного контейнера.
Пример конфигурации:

- name: FOO
  value: BAR

[]

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

Параметр

Описание

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

testFramework.enabled

Включение ресурсов Helm-теста

false

testFramework.annotations

Аннотации для тестовых ресурсов.
Пример конфигурации:

"helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
"helm.sh/hook": test-success

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

Параметр

Описание

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

verticalPodAutoscaler.enabled

Использование VerticalPodAutoscaler для Alertmanager

false

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

Параметр

Описание

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

extraPodConfigs

Параметры pod, такие как dnsPolicy, hostNetwork.
Пример конфигурации:

dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true

{}