Модуль 4: Observability & Security

Установка системы мониторинга Zabbix 6.4 LTS: Нативно в ОС и в Docker

1. Что такое Zabbix и из чего состоит система?

Zabbix — это универсальная система мониторинга enterprise-уровня с открытым исходным кодом. Она позволяет в реальном времени отслеживать состояние серверов, виртуальных машин, сетевого оборудования, приложений и баз данных, а также своевременно оповещать администраторов об инцидентах.

Архитектура Zabbix состоит из трех ключевых компонентов:

  • Zabbix Server: Ядро системы, выполняющее сбор метрик (по SNMP, агентам, ICMP, HTTP), обработку правил обнаружения проблем, калькуляцию триггеров и отправку оповещений.
  • База данных (PostgreSQL / MySQL): Хранилище исторической информации (метрики, события, алерты), а также всей конфигурации узлов сети и пользователей.
  • Веб-интерфейс (Zabbix Frontend): Панель управления на PHP/Nginx для визуализации графиков, настройки узлов, просмотра текущих триггеров и распределения прав доступа.
Сравнение вариантов установки:
  • Нативная установка (Bare-metal / Native): Службы запускаются прямо в ОС из системных репозиториев (`apt`). Обеспечивает максимальную производительность, прямой доступ к системным ресурсам и простоту администрирования на отдельном сервере.
  • Контейнеризация (Docker Compose): Компоненты упакованы в изолированные контейнеры. Упрощает миграцию между серверами, обновление версий и изоляцию окружений.

2. Способ 1: Нативная установка Zabbix 6.4 в Ubuntu/Debian

Рассмотрим пошаговый процесс установки Zabbix Server с СУБД PostgreSQL и веб-сервером Nginx напрямую в операционную систему.

Шаг 2.1. Подключение официального репозитория Zabbix

# Скачиваем и устанавливаем deb-пакет репозитория Zabbix 6.4
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo apt update

Шаг 2.2. Установка серверов, веб-интерфейса и PostgreSQL

sudo apt install -y zabbix-server-pgsql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts postgresql

Шаг 2.3. Создание базы данных и импорт схемы

Выполните настройки базы данных PostgreSQL:

# Входим в консоль PostgreSQL и создаем пользователя/БД
sudo -u postgres psql -c "CREATE USER zabbix WITH PASSWORD 'DB_SECURE_PASSWORD';"
sudo -u postgres psql -c "CREATE DATABASE zabbix OWNER zabbix;"

# Импортируем начальную схему и данные Zabbix
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Шаг 2.4. Конфигурация и запуск служб

Укажите пароль от БД в файле /etc/zabbix/zabbix_server.conf:

DBPassword=DB_SECURE_PASSWORD

Запустите и добавьте службы в автозагрузку:

sudo systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
sudo systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm

3. Способ 2: Развертывание Zabbix 6.4 в Docker Compose

Альтернативный метод — запуск всех компонентов системы в контейнерах Docker.

Шаг 3.1. Создание каталога и файла .env

mkdir -p /opt/zabbix && cd /opt/zabbix

cat << 'EOF' > .env
POSTGRES_USER=zabbix
POSTGRES_PASSWORD=DB_SECURE_PASSWORD
POSTGRES_DB=zabbix
ZBX_SERVER_HOST=zabbix-server
PHP_TZ=Europe/Kyiv
EOF

Шаг 3.2. Файл конфигурации docker-compose.yml

version: '3.8'

services:
  zabbix-db:
    image: postgres:15-alpine
    container_name: zabbix-db
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - zabbix_db_data:/var/lib/postgresql/data
    networks:
      - zabbix-net

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:ubuntu-6.4-latest
    container_name: zabbix-server
    restart: always
    ports:
      - "10051:10051"
    environment:
      DB_SERVER_HOST: zabbix-db
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    depends_on:
      - zabbix-db
    networks:
      - zabbix-net

  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:ubuntu-6.4-latest
    container_name: zabbix-web
    restart: always
    ports:
      - "8080:8080"
    environment:
      DB_SERVER_HOST: zabbix-db
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: ${PHP_TZ}
    depends_on:
      - zabbix-db
      - zabbix-server
    networks:
      - zabbix-net

volumes:
  zabbix_db_data:

networks:
  zabbix-net:
    driver: bridge

Запустите контейнеры командой:

docker compose up -d

4. Авторизация и первичная настройка безопасности

Учетные данные по умолчанию:
URL веб-интерфейса: http://<IP_СЕРВЕРА>/ (при нативной установке) или http://<IP_СЕРВЕРА>:8080 (при запускe в Docker)
Логин: Admin
Пароль: zabbix
Важно: Первым делом после успешной авторизации измените стандартный пароль встроенного администратора Admin в разделе меню User settings → Profile → Change password.