Alertmanager HA
Создание кластера высокой доступности (HA)
Для организации отказоустойчивой конфигурации alertmanager необходимо настроить переменные окружения
для сервиса на каждом узле, где он будет функционировать. Переменные окружения предпочтительно настраивать
в данном случае в файле docker-compose.additional.yml:
Настройка сервисов, работающих на разных узлах Docker Engine
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 на одном узле:
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_HOSTREDIS_PORT
Данные переменные следует указывать, если узел Redis, который распространяет конфигурацию сервисов, находится на другом узле.
Пример для распределенной конфигурации приложения, где узлы alertmanager запущены на разных машинах, а основные сервисы Pamir запущены на отдельном экземпляре Docker Engine
Настройка Redis на центральном сервере Pamir (его IP-адрес, например, 192.168.100.1):
services:
redis:
ports:
- "6379:6379"
Redis также возможно сконфигурировать в режиме балансировки нагрузки TCP.
Руководство по настройке описано здесь.
Настройка AM на отдельно взятом узле (его IP-адрес, например, 192.168.100.11):
services:
alertmanager:
environment:
REDIS_HOST: 192.168.100.1
REDIS_PORT: 6379
Применение всех внесенных параметров в файлы docker-compose.additional.yml, либо другие env-файлы осуществляется командой:
pamirctl start # Можно указать конкретные сервисы через пробел, в таком случае будут перезапущены только указанные сервисы.