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

# DevOps # Linux # Виртуализация # Мониторинг # Серверы
Дмитрий Моск — частный мастер
Был ли вам полезен этот скрипт?

Да            Нет