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

  1. Перейдите в веб-интерфейс Zabbix (http://zabbix.example.com).
  2. Добавьте новый прокси:
    • Перейдите в АдминистрированиеПрокси.
    • Нажмите Создать прокси.
    • Введите:
      • Имя: zabbix-proxy
      • Режим: Активный или Пассивный (соответствует ZBX_PROXYMODE).
      • Адрес: IP-адрес прокси-сервера.
    • Сохраните.
  3. Добавьте узлы для мониторинга через прокси:
    • Перейдите в НастройкаУзлы сети.
    • Выберите устройство и укажите Проксиzabbix-proxy.
    • Сохраните.
  4. Добавьте узел для мониторинга самого сервера:
    • Перейдите в НастройкаУзлы сети.
    • Нажмите Создать узел.
    • Введите:
      • Имя: 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! 🚀