Перейти к содержанию

Обзор развертывания Zabbix proxy на сервере

Предварительные требования и основные условия

Для развертывания Zabbix Proxy необходим сервер с операционной системой на базе Ubuntu (конкретно совместимой с Ubuntu 22.04 в соответствии с репозиторием пакетов). Процесс установки требует прав root для установки системных пакетов, настройки правил межсетевого экрана и управления службами. Приложение зависит от стандартных системных зависимостей, включая ca-certificates, curl, gnupg и apt-transport-https.

Конфигурация поддерживает три варианта баз данных:

  • SQLite

  • MySQL

  • PostgreSQL

Proxy взаимодействует с центральным сервером Zabbix, определенным переменной zbx_server. По умолчанию внутренний порт прослушивания — 8080, в то время как внешний доступ маршрутизируется через порт 443.

FQDN финальной панели управления

Конечное доступное Полное Указанное Имя Домена (FQDN) для прокси в домене hostkey.in имеет следующий формат:

zabbixproxy<Server ID>.hostkey.in:443

Где <Server ID> — уникальный идентификатор, назначенный конкретному экземпляру сервера.

Структура файлов и каталогов

В процессе развертывания создаются следующие критически важные каталоги и файлы:

  • Файл конфигурации: /etc/zabbix/zabbix_proxy.conf

  • Каталог данных: /var/lib/zabbix

  • Файл базы данных SQLite: /var/lib/zabbix/zabbix_proxy.db

  • Каталог конфигурации Nginx: /root/nginx

  • Файл compose для Nginx: /root/nginx/compose.yml

  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d/zabbixproxy<Server ID>.hostkey.in.conf

  • Том секретов Certbot: /etc/letsencrypt (монтируется внутренне)

Процесс установки приложения

Zabbix Proxy устанавливается с использованием нативных системных пакетов, а не контейнеризованного экземпляра приложения. Версия приложения определяется переменной zbx_version, в настоящее время установленной в значение 7.0.

Шаги установки включают:

  1. Добавление официального репозитория Zabbix для версии 7.0.

  2. Установка конкретного пакета proxy на основе выбранной backend-системы:

    • Для SQLite: zabbix-proxy-sqlite3 и zabbix-sql-scripts.

    • Для MySQL: zabbix-proxy-mysql.

    • Для PostgreSQL: zabbix-proxy-pgsql.

  3. Настройка файла /etc/zabbix/zabbix_proxy.conf с параметрами базы данных и сервера.

  4. Перезапуск службы zabbix-proxy для применения изменений.

Базы данных

Параметры подключения к базе данных определяются в файле /etc/zabbix/zabbix_proxy.conf. Конкретная конфигурация зависит от выбранной backend-системы (zbx_backend).

Конфигурация SQLite

При использовании SQLite в качестве backend-системы, база данных представляет собой локальный файл. | Параметр | Значение | | :--- | :--- | | Тип Backend | sqlite | | Файл базы данных | /var/lib/zabbix/zabbix_proxy.db | | Хост | Н/Д (на основе файла) |

Конфигурация MySQL / PostgreSQL

При использовании MySQL или PostgreSQL прокси подключается к удаленному или локальному экземпляру базы данных, используя следующие учетные данные: | Параметр | Значение | | :--- | :--- | | Имя базы данных | zabbix_proxy | | Пользователь базы данных | zabbix | | Пароль базы данных | zabbix | | Хост базы данных | 127.0.0.1 |

Контейнеры Docker и их развертывание

Хотя сам Zabbix Proxy работает как нативная системная служба, для управления обратным прокси-сервером и SSL-сертификатами через docker compose используются контейнеры Docker.

Конфигурация docker compose находится в /root/nginx/compose.yml и включает следующую службу:

  • Имя службы: nginx

  • Образ: jonasal/nginx-certbot:latest

  • Политика перезапуска: unless-stopped

  • Режим сети: host

  • Переменная окружения: CERTBOT_EMAIL=hkadm@hostkey.com

  • Монтирование томов:

    • nginx_secrets:/etc/letsencrypt (Внешний том для сертификатов)

    • /data/nginx/user_conf.d:/etc/nginx/user_conf.d (Пользовательские конфигурации)

Контейнер запускается командой docker compose up -d в каталоге /root/nginx.

Серверы прокси

Трафик управляется контейнером обратного прокси-сервера Nginx, работающим под образом jonasal/nginx-certbot. Эта настройка обрабатывает терминацию SSL с использованием сертификатов Let's Encrypt.

  • Провайдер SSL: Certbot

  • Путь конфигурации: /data/nginx/user_conf.d/zabbixproxy<Server ID>.hostkey.in.conf

  • Логика маршрутизации:

    • Конфигурация Nginx слушает внешний порт 443.

    • Трафик, соответствующий домену zabbixproxy<Server ID>.hostkey.in, перенаправляется на внутреннюю службу Zabbix Proxy.

    • Внутренний адрес прокси-сервера — http://127.0.0.1:8083.

Примечание: Хотя переменная конфигурации internal_port установлена в значение 8080 в общих переменных, директива обратного прокси-сервера Nginx явно маршрутизирует трафик на порт 8083.

Настройки разрешений

Для каталога данных Zabbix установлены специальные разрешения, чтобы пользователь службы zabbix мог считывать и записывать данные в файл базы данных:

  • Каталог: /var/lib/zabbix

  • Владелец: zabbix

  • Группа: zabbix

  • Мод: 0750

Каталог конфигурации Nginx /root/nginx принадлежит пользователю root с правами 0755.

Доступные порты для подключения

Для развертывания Zabbix Proxy используются следующие порты:

Порт Протокол Описание
8080 TCP Внутренний стандартный listener Zabbix Proxy (конфигурируется в переменных zbx_version).
8083 TCP Внутренний listener, на который ориентируется обратный прокси-сервер Nginx.
443 TCP Внешний доступ HTTPS через контейнер Nginx.

Запуск, остановка и обновление

Служба Zabbix Proxy управляется через диспетчер служб системы (systemd). Имя службы — zabbix-proxy.

  • Запустить службу:

    systemctl start zabbix-proxy
    

  • Остановить службу:

    systemctl stop zabbix-proxy
    

  • Перезапустить службу:

    systemctl restart zabbix-proxy
    

  • Включить службу при загрузке:

    systemctl enable zabbix-proxy
    

Для управления контейнером обратного прокси-сервера используйте следующие команды в каталоге /root/nginx:

  • Запустить контейнеры:

    docker compose up -d
    

  • Остановить контейнеры:

    docker compose down
    

  • Обновить контейнеры:

    docker compose pull
    docker compose up -d
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×