Docker-compose для развертывания сервера мониторинга Zabbix

В нашем примере будет развернут сервер мониторинга Zabbix с поддержкой СУБД mariadb.

Подготовка

Выполним предварительные действия. Предполагается, что мы будем хранить наш файл docker-compose в каталоге /opt/zabbix .

Создаем каталог:

mkdir /opt/zabbix

Перейдем в него:

cd /opt/zabbix

Создаем файл docker-compose.yml:

vi docker-compose.yml

Мы готовы к написанию сценария.

Docker-compose

Пример нашего файла compose:

  1. version: «3.9»
  2. services:
  3. zabbix-mariadb:
  4. image: mariadb
  5. container_name: zabbix-mariadb
  6. hostname: zabbix-mariadb
  7. restart: unless-stopped
  8. environment:
  9. TZ: «Europe/Moscow»
  10. MYSQL_ROOT_USER: root
  11. MYSQL_ROOT_PASSWORD: secret
  12. MYSQL_DATABASE: zabbix
  13. MYSQL_USER: zabbix
  14. MYSQL_PASSWORD: zabbixpass
  15. networks:
  16. — default
  17. volumes:
  18. — /opt/zabbix/mariadb/data:/var/lib/mysql
  19. zabbix-server:
  20. image: zabbix/zabbix-server-mysql
  21. container_name: zabbix-server
  22. hostname: zabbix-server
  23. restart: unless-stopped
  24. environment:
  25. TZ: «Europe/Moscow»
  26. DB_SERVER_HOST: zabbix-mariadb
  27. MYSQL_USER: zabbix
  28. MYSQL_PASSWORD: zabbixpass
  29. networks:
  30. default:
  31. ipv4_address: 172.28.0.254
  32. depends_on:
  33. — zabbix-mariadb
  34. zabbix-web:
  35. image: zabbix/zabbix-web-nginx-mysql
  36. container_name: zabbix-web
  37. hostname: zabbix-web
  38. restart: unless-stopped
  39. environment:
  40. TZ: «Europe/Moscow»
  41. DB_SERVER_HOST: zabbix-mariadb
  42. MYSQL_USER: zabbix
  43. MYSQL_PASSWORD: zabbixpass
  44. ZBX_SERVER_HOST: zabbix-server
  45. PHP_TZ: «Europe/Moscow»
  46. ports:
  47. — 8080:8080
  48. — 8443:8443
  49. networks:
  50. — default
  51. depends_on:
  52. — zabbix-mariadb
  53. — zabbix-server
  54. networks:
  55. default:
  56. ipam:
  57. driver: default
  58. config:
  59. — subnet: 172.28.0.0/16

Описание сценария

Кратко опишем, что выполнит наш сценарий. Подробнее про работу с docker-compose можно прочитать в инструкции Шпаргалка по работе с docker-compose .

1 Версия docker-compose файла. От нее зависит то, какие директивы мы можем использовать. Лучше прописывать более актуальную версию, но некоторые опции могут быть недоступны и их нужно будет заменить. Однако, с версии docker-compose 1.27.0 является опциональной.
5 — 20 Поднимаем сервер баз данных из образа mariadb.
14 — 16 Создаем базу данных, а также логин и пароль для подключения к ней.
19 — 20 Храним данные СУБД на хостовой машине в каталоге /opt/zabbix/mariadb/data.
22 — 36 Запускаем сервер zabbix.
29 — 31 Прописываем данные для подключения к базе mariadb.
34 Для сервера укажем статический IP-адрес.
38 — 57 Веб-интерфейс для управления мониторингом zabbix (Zabbix Frontend).
45 — 47 Прописываем данные для подключения к СУБД.
48 Указываем адрес сервера Zabbix. В нашем случае имя сервиса с контейнером zabbix-server.
59 — 64 Описываем сеть. В нашем примере это нужно для использования подсети 172.28.0.0/16. Подсеть может быть любой.

Запуск

Находясь в каталоге с файлом docker-compose, выполним команду:

docker-compose up -d

При первом запуске система загрузит необходимые образы и запустит контейнеры.

Посмотреть состояние контейнеров можно командой:

docker ps

В нашем примере веб-интерфейс будет доступен по порту 8080. Для проверки можно ввести команду:

curl http://localhost:8080

Также мы можем открыть браузер на любом компьютере в сети и перейти по адресу http://<IP-адрес хоста docker>:8080 . Мы должны увидеть окно запроса логина и пароля. Для входа используем стандартные данные — логин: Admin (с большой буквы) и пароль: zabbix .

Zabbix Proxy

Если нам нужно развернуть Zabbix Proxy, используем такой сценарий:

mkdir /opt/zabbix-proxy

cd /opt/zabbix-proxy

vi docker-compose.yml

services:

zabbix-proxy-4:
image: zabbix/zabbix-proxy-mysql:alpine-4.0-latest
container_name: zabbix-proxy-4
hostname: zabbix-proxy-4
restart: unless-stopped
environment:
TZ: «Europe/Moscow»
DB_SERVER_HOST: zabbix-proxy-mariadb-4
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
ZBX_HOSTNAME: «zabbix-proxy-4»
ZBX_SERVER_HOST: «zabbix-server-name»
depends_on:
— zabbix-proxy-mariadb-4
ports:
— 10051:10051
networks:
— default

zabbix-proxy-mariadb-4:
image: mariadb
container_name: zabbix-proxy-mariadb-4
hostname: zabbix-proxy-mariadb-4
restart: unless-stopped
environment:
TZ: «Europe/Moscow»
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: secret123Zabbix
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbixpass
networks:
— default
volumes:
— /opt/zabbix-proxy/mariadb/data:/var/lib/mysql

* в данном примере мы поднимим Zabbix Proxy версии 4. Список официальных docker-образов можно посмотреть на сайте Zabbix .

EnglishRussianUkrainian