Установка zabbix с помощью docker-compose

Всем привет!

В этой статье я расскажу как можно быстро развернуть Zabbix Server из Docker контейнеров с помощью docker-compose.

Ребята из zabbix создали целый репозиторий, который содержит Dockerfile’ы всевозможных способов установки/запуска zabbix сервер. С помощью них мы и будем «устанавливать» zabbix. Вся прелесть заключается еще в том, что при необходимости вы можете легко переключиться на другую версию, выбрав другую ветку git.

Перед тем, как начать, убедитесь, что у вас установлен docker и docker-compose. Как это сделать я описывал тут и тут. И не забудьте поставить git.

Теперь приступим.

Установка

Склонируйте репозиторий github.com/zabbix/zabbix-docker в директорию opt:

cd /opt/
git clone https://github.com/zabbix/zabbix-docker 

Далее выберите подходящий вам docker-файл (я выбрал docker-compose_v3_alpine_mysql_latest) и запустите его; при желании можно сделать его копию, указав другое имя, чтобы не путаться среди такого большого количества docker-файлов, а так же указать пути до разделов (по умолчанию данные zabbix будут хорониться в директории ./zbx_env/*)

docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

Далее выждав какое-то время вы можете войти в web-интерфейс и приступить к настройке zabbix server.

Настройка systemd сервиса

Казалось бы все, но в случае перезапуска сервера контейнеры не будут запускаться автоматически. Обойти это можно создав systemd — unit который будет запускать docker-compose файл при загрузке системы.

Создаем файл /etc/systemd/system/zabbix-compose.service и вставляем в него следующее содержимое:

[Unit]
Description=Zabbix services with docker-compose
Requires=docker.service
After=docker.service

[Service]
WorkingDirectory=/opt/zabbix-docker/
User=root
Group=docker
Type=oneshot
RemainAfterExit=yes

ExecStartPre=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml down -v

# Compose up
ExecStart=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

# Compose down, remove containers
ExecStop=/usr/local/bin/docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml down

[Install]
WantedBy=multi-user.target

Теперь выполним следующие команды:

systemctl enable zabbix-compose.service
systemctl daemon-reload
systemctl start zabbix-compose.service

Как редактировать параметры zabbix?

Если вам необходимо установить какие-то нестандартные значения параметров, то сделать это можно в env файлах, которые находятся в директории ./env_vars/. К примеру, если мне надо увеличить CacheSize то сделать я это могу в файле env_vars/.env_srv отредактировав значение переменной ZBX_CACHESIZE.

Все. Теперь можно приступить к настройке сервера.

Источники:

  • https://github.com/zabbix/zabbix-docker
  • https://techoverflow.net/2020/10/24/create-a-systemd-service-for-your-docker-compose-project-in-10-seconds/
  • https://github.com/docker/compose/issues/4266
  • https://www.youtube.com/watch?v=ScKlF0ICVYA