Docker-compose для развертывания сервера мониторинга Zabbix
В нашем примере будет развернут сервер мониторинга Zabbix с поддержкой СУБД mariadb.
Подготовка системы
Пример файла docker-compose.yml
Описание compose-файла
Запуск контейнеров
Сценарий для Zabbix Proxy
Подготовка
Выполним предварительные действия. Предполагается, что мы будем хранить наш файл docker-compose в каталоге /opt/zabbix.
Создаем каталог:
mkdir /opt/zabbix
Перейдем в него:
cd /opt/zabbix
Создаем файл docker-compose.yml:
vi docker-compose.yml
Мы готовы к написанию сценария.
Docker-compose
Пример нашего файла compose:
- version: "3.9"
- services:
- zabbix-mariadb:
- image: mariadb
- container_name: zabbix-mariadb
- hostname: zabbix-mariadb
- restart: unless-stopped
- environment:
- TZ: "Europe/Moscow"
- MYSQL_ROOT_USER: root
- MYSQL_ROOT_PASSWORD: secret
- MYSQL_DATABASE: zabbix
- MYSQL_USER: zabbix
- MYSQL_PASSWORD: zabbixpass
- networks:
- - default
- volumes:
- - /opt/zabbix/mariadb/data:/var/lib/mysql
- zabbix-server:
- image: zabbix/zabbix-server-mysql
- container_name: zabbix-server
- hostname: zabbix-server
- restart: unless-stopped
- environment:
- TZ: "Europe/Moscow"
- DB_SERVER_HOST: zabbix-mariadb
- MYSQL_USER: zabbix
- MYSQL_PASSWORD: zabbixpass
- networks:
- default:
- ipv4_address: 172.28.0.254
- depends_on:
- - zabbix-mariadb
- zabbix-web:
- image: zabbix/zabbix-web-nginx-mysql
- container_name: zabbix-web
- hostname: zabbix-web
- restart: unless-stopped
- environment:
- TZ: "Europe/Moscow"
- DB_SERVER_HOST: zabbix-mariadb
- MYSQL_USER: zabbix
- MYSQL_PASSWORD: zabbixpass
- ZBX_SERVER_HOST: zabbix-server
- PHP_TZ: "Europe/Moscow"
- ports:
- - 8080:8080
- - 8443:8443
- networks:
- - default
- depends_on:
- - zabbix-mariadb
- - zabbix-server
- networks:
- default:
- ipam:
- driver: default
- config:
- - 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.