Alertmanager#

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Параметр

Описание

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

replicaCount

Количество реплик pod

1

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

Параметр

Описание

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

revisionHistoryLimit

Старые ревизии Deployment, сохраняемые для отката

10

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

Параметр

Описание

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

image.repository

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

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

image.pullPolicy

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

IfNotPresent

image.tag

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

v0.31.1

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

Параметр

Описание

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

baseURL

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

""

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 - автомонтирование токена#

Параметр

Описание

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

automountServiceAccountToken

Монтирование токена ServiceAccount в pod

true

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

Параметр

Описание

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

hostUsers

Размещение pod в пользовательском пространстве имен; требует Kubernetes версии 1.25 и выше

false

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

Параметр

Описание

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

serviceAccount.create

Создание ServiceAccount для pod.
Возможные значения: true, false

true

serviceAccount.annotations

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

{}

serviceAccount.name

Имя ServiceAccount; если не задано, а create: true, имя генерируется автоматически

""

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

Параметр

Описание

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

priorityClassName

Имя PriorityClass для pod

""

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

Параметр

Описание

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

schedulerName

Имя Kubernetes-планировщика для расстановки pod

""

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

Параметр

Описание

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

podSecurityContext.fsGroup

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

65534

podSecurityContext.seccompProfile.type

Профиль seccomp для ограничения системных вызовов

RuntimeDefault

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

Параметр

Описание

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

dnsConfig

Конфигурация DNS для pod, включая параметры nameservers, searches, options.
Пример конфигурации:

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

{}

hostAliases - псевдонимы хостов#

Параметр

Описание

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

hostAliases

Статические записи в файл hosts pod, сопоставляющие IP-адреса с именами хостов.
Пример конфигурации:

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

[]

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

Параметр

Описание

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

securityContext.capabilities.drop

Linux-права доступа, удаляемые из контейнера

- ALL

securityContext.readOnlyRootFilesystem

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

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

[]

livenessProbe - проверка жизнеспособности pod#

Параметр

Описание

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

livenessProbe.httpGet.path

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

/

livenessProbe.httpGet.port

Имя порта для проверки жизнеспособности

http

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

Параметр

Описание

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

readinessProbe.httpGet.path

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

/

readinessProbe.httpGet.port

Имя порта для проверки готовности

http

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

Параметр

Описание

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

service.annotations

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

{}

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.
Возможные значения: SingleStack, PreferDualStack, RequireDualStack

"PreferDualStack"

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

Параметр

Описание

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

servicePerReplica.enabled

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

false

servicePerReplica.annotations

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

{}

servicePerReplica.loadBalancerSourceRanges

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

[]

servicePerReplica.externalTrafficPolicy

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

Cluster

servicePerReplica.type

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

ClusterIP

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

Параметр

Описание

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

ingress.enabled

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

false

ingress.className

Класс IngressController

"nginx"

ingress.labels

Метки для Ingress

{}

ingress.annotations

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

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

{}

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

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

ingress.tls

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

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

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

Параметр

Описание

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

ingressPerReplica.enabled

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

false

ingressPerReplica.className

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

"nginx"

ingressPerReplica.annotations

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

{}

ingressPerReplica.labels

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

{}

ingressPerReplica.hostPrefix

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

"alertmanager"

ingressPerReplica.hostDomain

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

{{ include "ingress.domain" . }}

ingressPerReplica.paths

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

„- /“

ingressPerReplica.pathType

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

ImplementationSpecific

ingressPerReplica.tlsSecretName

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

""

ingressPerReplica.tlsSecretPerReplica.enabled

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

false

ingressPerReplica.tlsSecretPerReplica.prefix

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

"alertmanager"

resources - ограничения ресурсов#

Параметр

Описание

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

resources

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

limits:
  cpu: 100m
  memory: 128Mi
requests:
  cpu: 10m
  memory: 32Mi

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

Параметр

Описание

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

nodeSelector

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

{}

tolerations - толерации для узлов с taint#

Параметр

Описание

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

tolerations

Toleration, позволяющие поместить pod на узлы с taint

[]

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

Параметр

Описание

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

affinity

Правила affinity для расстановки pod в кластере

{}

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

Параметр

Описание

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

podAntiAffinity

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

""

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

Параметр

Описание

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

podAntiAffinityTopologyKey

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

kubernetes.io/hostname

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

Параметр

Описание

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

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 - минимальное время готовности pod#

Параметр

Описание

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

minReadySeconds

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

0

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

Параметр

Описание

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

podAnnotations

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

{}

podLabels - метки pod#

Параметр

Описание

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

podLabels

Метки для pod

{}

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

Параметр

Описание

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

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"
slack_api_url: '${vault:secret/data/slack-hook-alerts#URL}'

{}

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

Параметр

Описание

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

config.enabled

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

true

config.global

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

slack_api_url: ''

{}

config.templates

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

- "/etc/vm/configs/**/*.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.89.0

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

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

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

[]

configmapReload.extraEnv

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

- name: FOO
  value: BAR

[]

configmapReload.securityContext.capabilities.drop

Linux-права доступа, удаляемые из перезагрузчика

- 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 - монтирования Volume#

Параметр

Описание

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

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

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

recommenders:
  - name: 'alternative'
updatePolicy:
  updateMode: "Auto"
  minReplicas: 1
resourcePolicy:
  containerPolicies:
    - containerName: '*'
      minAllowed:
        cpu: 100m
        memory: 128Mi
      maxAllowed:
        cpu: 1
        memory: 500Mi
      controlledResources: ["cpu", "memory"]

enabled: false

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

Параметр

Описание

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

extraPodConfigs

Параметры pod, такие как dnsPolicy, hostNetwork

{}

Пример конфигурации:

dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true

serviceMonitor - настройки ServiceMonitor#

Параметр

Описание

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

serviceMonitor.enabled

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

true

serviceMonitor.labels

Метки для ServiceMonitor

{}

serviceMonitor.annotations

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

{}

serviceMonitor.portName

Имя порта Service для сбора метрик

http

serviceMonitor.path

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

/metrics

serviceMonitor.scheme

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

http

serviceMonitor.interval

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

30s

serviceMonitor.scrapeTimeout

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

10s

serviceMonitor.honorLabels

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

true

serviceMonitor.relabelings

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

[]

serviceMonitor.metricRelabelings

Правила фильтрации и трансформации метрик

[]

serviceMonitor.tlsConfig

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

{}

serviceMonitor.additionalEndpoints

Конечные точки сбора метрик

[]