Zabbix Proxy в Docker Compose
📌 Описание
Этот проект позволяет развернуть Zabbix Proxy и Zabbix Agent в контейнерах Docker с использованием Docker Compose. Прокси помогает разгрузить Zabbix Server и организовать мониторинг удалённых узлов за nat, а агент позволяет мониторить сам сервер, на котором развернут Proxy.
📦 Требования
- Docker и Docker Compose
- Zabbix Server (уже настроенный и работающий)
Проверьте установку Docker:
docker --version
docker-compose --version
Если Docker не установлен, установите его:
sudo apt update
sudo apt install docker.io docker-compose -y
🚀 Установка и запуск
1️⃣ Создайте рабочую директорию
mkdir /opt/zabbix-proxy && cd /opt/zabbix-proxy
2️⃣ Создайте файл .env
Создайте файл с переменными окружения:
vim .env
Добавьте рекомендуемые переменные:
ZABBIX_VERSION=ubuntu-7.0-latest
ZBX_HOSTNAME=zabbix-proxy
ZBX_SERVER_HOST=zabbix.example.com # Укажите адрес Zabbix-сервера
ZBX_DEBUGLEVEL=3
ZBX_PROXYMODE=0 # 0 - активный прокси, 1 - пассивный
ZBX_PROXYCONFIGFREQUENCY=60
ZBX_STARTPOLLERS=5
ZBX_STARTPOLLERSUNREACHABLE=3
ZBX_STARTTRAPPERS=5
ZBX_STARTPINGERS=5
ZBX_CACHESIZE=16M
ZBX_HISTORYCACHESIZE=32M
ZBX_HISTORYINDEXCACHESIZE=16M
ZBX_TIMEOUT=4
ZBX_AGENT_HOSTNAME=zabbix-agent
ZBX_AGENT_SERVER=zabbix-proxy # Укажите адрес Zabbix-сервера
ZBX_AGENT_ACTIVE_SERVER=zabbix-proxy
3️⃣ Создайте файл docker-compose.yml
vim docker-compose.yml
Скопируйте и вставьте следующий код:
services:
zabbix-proxy:
image: zabbix/zabbix-proxy-sqlite3:${ZABBIX_VERSION}
container_name: zabbix-proxy
restart: unless-stopped
env_file:
- .env
volumes:
- ./db_data:/var/lib/zabbix/db_data
- ./zabbix_proxy_data:/var/lib/zabbix
ports:
- "10051:10051"
networks:
- zabbix-network
user: "root"
dns:
- 8.8.8.8
- 1.1.1.1
healthcheck:
test: ["CMD-SHELL", "pgrep zabbix_proxy || exit 1"]
interval: 30s
timeout: 10s
retries: 5
zabbix-agent:
image: zabbix/zabbix-agent:${ZABBIX_VERSION}
container_name: zabbix-agent
hostname: "monitoring"
environment:
ZBX_HOSTNAME: "zabbix-proxy"
ZBX_DEBUGLEVEL: 4
ZBX_ENABLEREMOTECOMMANDS: 1
ZBX_SERVER_HOST: ${ZBX_AGENT_SERVER}
ZBX_SERVER_ACTIVE: ${ZBX_AGENT_SERVER_ACTIVE}
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/frontend_hacks:/usr/share/zabbix/local/
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
privileged: true
depends_on:
- zabbix-proxy
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pgrep zabbix_agentd || exit 1"]
interval: 30s
timeout: 10s
retries: 5
networks:
- zabbix-network
networks:
zabbix-network:
driver: bridge
4️⃣ Запустите контейнеры
docker-compose up -d
Проверьте, работают ли Zabbix Proxy и Agent:
docker ps
Просмотр логов:
docker logs -f zabbix-proxy
docker logs -f zabbix-agent
🔗 Настройка подключения к Zabbix Server
- Перейдите в веб-интерфейс Zabbix (
http://zabbix.example.com
). - Добавьте новый прокси:
- Перейдите в
Администрирование
→Прокси
. - Нажмите
Создать прокси
. - Введите:
- Имя:
zabbix-proxy
- Режим:
Активный
илиПассивный
(соответствуетZBX_PROXYMODE
). - Адрес:
IP-адрес прокси-сервера
.
- Имя:
- Сохраните.
- Перейдите в
- Добавьте узлы для мониторинга через прокси:
- Перейдите в
Настройка
→Узлы сети
. - Выберите устройство и укажите
Прокси
→zabbix-proxy
. - Сохраните.
- Перейдите в
- Добавьте узел для мониторинга самого сервера:
- Перейдите в
Настройка
→Узлы сети
. - Нажмите
Создать узел
. - Введите:
- Имя:
zabbix-agent
- Интерфейсы: Добавьте агент с IP
zabbix-agent
. - Прокси:
zabbix-proxy
.
- Имя:
- Сохраните.
- Перейдите в
🎯 Проверка работы
На сервере Zabbix выполните команду:
zabbix_proxy -R config_cache_reload
В Zabbix → Администрирование
→ Прокси
статус должен быть ОК
.
📌 Полезные команды
Перезапуск контейнеров:
docker-compose restart
Остановка контейнеров:
docker-compose down
docker-compose down -v
Удаление контейнеров и данных:
rm -rf /opt/zabbix-proxy
✅ Теперь ваш Zabbix Proxy и Zabbix Agent успешно работают в Docker и отправляют данные на Zabbix Server! 🚀