Обзор развертывания 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.
Шаги установки включают:
-
Добавление официального репозитория Zabbix для версии
7.0. -
Установка конкретного пакета proxy на основе выбранной backend-системы:
-
Для SQLite:
zabbix-proxy-sqlite3иzabbix-sql-scripts. -
Для MySQL:
zabbix-proxy-mysql. -
Для PostgreSQL:
zabbix-proxy-pgsql.
-
-
Настройка файла
/etc/zabbix/zabbix_proxy.confс параметрами базы данных и сервера. -
Перезапуск службы
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.
-
Запустить службу:
-
Остановить службу:
-
Перезапустить службу:
-
Включить службу при загрузке:
Для управления контейнером обратного прокси-сервера используйте следующие команды в каталоге /root/nginx:
-
Запустить контейнеры:
-
Остановить контейнеры:
-
Обновить контейнеры: