Перейти к основному содержимому
Версия: 2.0 (WIP)

Alertmanager HA

Создание кластера высокой доступности (HA)

Для организации отказоустойчивой конфигурации alertmanager необходимо настроить переменные окружения для сервиса на каждом узле, где он будет функционировать. Переменные окружения предпочтительно настраивать в данном случае в файле docker-compose.additional.yml:

Настройка сервисов, работающих на разных узлах Docker Engine

docker-compose.additional.yml
services:
alertmanager:
container_name: alertmanager-1
environment:
ALERTMANAGER_CMD_ARGS: >
--cluster.listen-address=0.0.0.0:9094
--cluster.peer=alertmanager-2:9094
--cluster.peer=alertmanager-3:9094
REDIS_HOST: redis
REDIS_PORT: 6379
ports:
- "9094:9094"
подсказка

где, alertmanager-2:9094 и alertmanager-3:9094 - указываются IP-адреса соседних узлов с контейнером Alertmanager.

Данную процедуру повторить на всех узлах, изменяя имя контейнера container_name и список пиров в ALERTMANAGER_CMD_ARGS.

Настройка сервисов, работающих на одном узле Docker Engine

Также возможен запуск нескольких экземпляров alertmanager на одном узле:

docker-compose.additional.yml
services:
alertmanager: # Отключаем встроенный сервис alertmanager профилем never
profiles: !override [never]
alertmanager-1: # Запускаем экземпляры AM в режиме кластера
extends:
file: docker-compose.deps.yml
service: alertmanager
container_name: alertmanager-1
environment:
ALERTMANAGER_CMD_ARGS: >
--cluster.listen-address=0.0.0.0:9094
--cluster.peer=alertmanager-2:9094
--cluster.peer=alertmanager-3:9094
REDIS_HOST: redis
REDIS_PORT: 6379
alertmanager-2:
extends:
file: docker-compose.deps.yml
service: alertmanager
container_name: alertmanager-2
environment:
ALERTMANAGER_CMD_ARGS: >
--cluster.listen-address=0.0.0.0:9094
--cluster.peer=alertmanager-1:9094
--cluster.peer=alertmanager-3:9094
REDIS_HOST: redis
REDIS_PORT: 6379
alertmanager-3:
extends:
file: docker-compose.deps.yml
service: alertmanager
container_name: alertmanager-3
environment:
ALERTMANAGER_CMD_ARGS: >
--cluster.listen-address=0.0.0.0:9094
--cluster.peer=alertmanager-1:9094
--cluster.peer=alertmanager-2:9094
REDIS_HOST: redis
REDIS_PORT: 6379

Изменение источника конфигурации для Alertmanager

В примере выше, в файле docker-compose.additional.yml для сервисов alertmanager указаны переменные окружения:

  • REDIS_HOST
  • REDIS_PORT

Данные переменные следует указывать, если узел Redis, который распространяет конфигурацию сервисов, находится на другом узле.

Пример для распределенной конфигурации приложения, где узлы alertmanager запущены на разных машинах, а основные сервисы Pamir запущены на отдельном экземпляре Docker Engine

Настройка Redis на центральном сервере Pamir (его IP-адрес, например, 192.168.100.1):

docker-compose.additional.yml
services:
redis:
ports:
- "6379:6379"
примечание

Redis также возможно сконфигурировать в режиме балансировки нагрузки TCP.

Руководство по настройке описано здесь.

Настройка AM на отдельно взятом узле (его IP-адрес, например, 192.168.100.11):

docker-compose.additional.yml
services:
alertmanager:
environment:
REDIS_HOST: 192.168.100.1
REDIS_PORT: 6379
к сведению

Применение всех внесенных параметров в файлы docker-compose.additional.yml, либо другие env-файлы осуществляется командой:

pamirctl start # Можно указать конкретные сервисы через пробел, в таком случае будут перезапущены только указанные сервисы.

Связанные разделы