Перейти к основному содержимому

ALIMUSAEV — IT и 1С

C:\> type \instructions\linux\razvernut-zabbix-server-cherez-docker.md

Развернуть Zabbix-сервер через docker

НАЗНАЧЕНИЕ

Необходимо развернуть систему мониторинга Zabbix через docker.

ПРИМЕНЕНИЕ

Для мониторинга клиентских ПК, других серверов и роутеров с помощью Zabbix-agent.

**Для справки:** Zabbix — must have в системе мониторинга, его выбирают все серьезные компании так или иначе, вдобавок он бесплатен. Пусть и сложнее, но решает задачу по мониторингу ИТ-инфраструктуры. Его можно развернуть на любом дистрибутиве с нуля, но официально поддерживаемый дистрибутив — это **AlmaLinux**, на базе которой и собраны готовые образы.

УСЛОВИЕ

  • Debian-based дистрибутивы Linux в качестве хоста (можно и другие);

  • Доступность портов 10051 и 8080 (или другого, если планируется сменить порт).

ШАГИ

  1. Провести первичные действия (за «#» будет комментарий к каждому действию):
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin nginx #установить docker, связанные с ним утилиты и веб-сервер nginx

sudo usermod -aG docker $USER && newgrp docker #дать самому себе права к docker

mkdir ~/zabbix && cd ~/nextcloud #создать папку zabbix и переходим на нее сразу

nano docker-compose.yml #создать конфигурацию docker для Zabbix и открываем
  1. Составить конфигурацию в docker-compose.yml:
services:
  mysql:
    container_name: zabbix-mysql
    image: mysql:8.0
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix_srv
      MYSQL_PASSWORD: PASSWORD
      MYSQL_ROOT_PASSWORD: RootPASSWORD
    volumes:
      - ./mysql-data:/var/lib/mysql
    restart: unless-stopped

  zabbix-server:
    container_name: zabbix-server
    image: zabbix/zabbix-server-mysql:7.4-alpine-latest
    environment:
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix_srv
      MYSQL_PASSWORD: PASSWORD
      MYSQL_ROOT_PASSWORD: RootPASSWORD
    ports:
      - 10051:10051
    depends_on:
      - mysql
    restart: unless-stopped

  zabbix-web:
    container_name: zabbix-web
    image: zabbix/zabbix-web-nginx-mysql:7.4-alpine-latest
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix_srv
      MYSQL_PASSWORD: PASSWORD
      MYSQL_ROOT_PASSWORD: RootPASSWORD
      PHP_TZ: Europe/Moscow
    ports:
      - 8080:8080
    depends_on:
      - zabbix-server
      - mysql
    restart: unless-stopped

  zabbix-agent:
    container_name: zabbix-agent
    image: zabbix/zabbix-agent2:7.4-alpine-latest
    environment:
      ZBX_HOSTNAME: Services VM
      ZBX_SERVER_HOST: zabbix-server
      ZBX_ACTIVE_ALLOW: 'true'
      ZBX_SERVER_PORT: '10051'
    volumes:
      - /:/rootfs:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
    privileged: true
    depends_on:
      - zabbix-server
    restart: unless-stopped

После сохранить и выйти;

Порядок действий таков:

  1. Запустить docker:
docker compose up -d

Для выключения docker, если нужно править конфиги, ввести следующее:

docker compose down

РЕЗУЛЬТАТ

Все, сервер Zabbix развернут, остается лишь начать производить первоначальные настройки в веб-конфигураторе.

ТИПОВЫЕ ОШИБКИ

❌ Проблема: не установился docker, выдалась ошибка.

✅ Решение: проверить конфиг docker-compose.yml на наличие опечаток.


❌ Проблема: не дает отредактировать файл docker-compose.yml или запустить docker.

✅ Решение: нет прав — либо выполнять через sudo, либо от root.


❌ Проблема: не заходит на веб-конфигуратор — ничего не грузится.

✅ Решение: проверить состояние docker и его конфигурацию — возможно, что порт не тот или достаточно перезапустить контейнер.