Установка Zabbix 4.0 LTS на CentOS 8
Введение
Zabbix — это система мониторинга с открытым исходным кодом для сетевых сервисов, оборудования, серверов и приложений. Zabbix собирает метрики, строит графики, генерирует триггеры и уведомления. Бэкенд Zabbix написан на C, веб-интерфейс — на PHP. Для хранения данных поддерживаются MySQL/MariaDB, PostgreSQL, SQLite и IBM DB2.
Определение: LTS — Long Term Support, версия с долгосрочной поддержкой и патчами безопасности.
Важно: этот гайд рассчитан на CentOS 8 и Zabbix 4.0 LTS. Если у вас другая ОС или версия Zabbix — шаги могут отличаться.
Требования
- Сервер с CentOS 8 (минимум 2 CPU, 2 ГБ ОЗУ для тестовой среды; для продакшна — больше).
- Доступ root или привилегии sudo.
- Базовые знания команд Linux и системного администрирования.
Коротко о сетевых портах: Zabbix Server слушает 10051/tcp, Zabbix Agent — 10050/tcp. Веб-интерфейс использует 80/443.
Что мы сделаем (план)
- Установим Apache (httpd).
- Установим и настроим PHP.
- Установим и настроим MariaDB (БД для Zabbix).
- Добавим репозиторий Zabbix и установим пакеты Zabbix 4.0 LTS.
- Импортируем схему БД и настроим конфигурации.
- Настроим firewalld и SELinux.
- Пройдем начальную веб-установку и сменим пароль admin.
Шаг 1 — Установка Apache httpd
Для веб-интерфейса Zabbix используем Apache (httpd). Установите пакет командой:
dnf install httpdДобавьте httpd в автозагрузку и запустите сервис:
systemctl enable httpd
systemctl start httpdПроверьте, что порт 80 слушается:
netstat -plntuРезультат должен показать слушающий порт 0.0.0.0:80 или аналогично.

Пояснение: netstat может не быть установлен по умолчанию; при необходимости используйте ss -plntu.
Критерии приёмки:
- Сервис httpd запущен и активен.
- Порт 80 находится в состоянии LISTEN.
Шаг 2 — Установка PHP
Zabbix требует PHP с набором расширений. Установите их так:
dnf install php-cli php-common php-devel php-pear php-gd php-mbstring php-mysqlnd php-xml php-bcmathОткройте конфиг PHP:
vim /etc/php.iniИзмените/добавьте параметры (пример):
date.timezone = Asia/Jakarta
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16MСохраните, затем перезапустите Apache:
systemctl restart httpdПроверка: создайте файл /var/www/html/info.php с содержимым и откройте http://

Совет: установите только те расширения, которые действительно нужны — это уменьшает поверхность атаки.
Шаг 3 — Установка и настройка MariaDB
Для Zabbix мы используем MariaDB (совместима с MySQL).
Установите сервер:
dnf install mariadb-serverДобавьте в автозагрузку и запустите:
systemctl enable mariadb
systemctl start mariadbЗапустите скрипт безопасности:
mysql_secure_installationТипичный диалог:
Set a root password? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YСоздайте базу и пользователя для Zabbix (в примере пароль hakase-labs@; используйте сложный пароль в реальной среде):
mysql -u root -p
# Введите пароль root и затем в mysql shell выполните:
create database zabbix;
grant all privileges on zabbix.* to zabbix@'localhost' identified by 'hakase-labs@';
grant all privileges on zabbix.* to zabbix@'%' identified by 'hakase-labs@';
flush privileges;Проверка: подключитесь под пользователем zabbix и попробуйте SHOW TABLES; (до импорта схемы таблиц не будет).

Замечание по безопасности: избыточно давать доступ ‘%’ (всенаправленный доступ) в продакшене; ограничивайте источники подключений по IP.
Шаг 4 — Установка и настройка Zabbix 4.0 LTS
Добавление репозитория Zabbix и установка пакетов
Добавьте RPM-репозиторий Zabbix:
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpmОчистите кэш и проверьте репозитории:
dnf clean all
dnf repolistУстановите сервер и веб-пакеты:
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-agentЕсли dnf выдаёт конфликты — прочитайте вывод и удалите конфликтующие пакеты или решите зависимости.

Импорт схемы базы данных
Перейдите в каталог с документацией пакета и распакуйте схему:
cd /usr/share/doc/zabbix-server-mysql
gunzip create.sql.gzИмпортируйте схему в базу zabbix:
mysql -u root -p zabbix < create.sqlПосле этого таблицы Zabbix появятся в базе.

Настройка zabbix_server.conf
Отредактируйте /etc/zabbix/zabbix_server.conf:
vim /etc/zabbix/zabbix_server.confУкажите хост и пароль БД:
DBHost=localhost
DBPassword=hakase-labs@Сохраните файл и добавьте сервис в автозагрузку:
systemctl enable zabbix-serverНастройка агента zabbix_agentd
Агент должен быть установлен на каждой мониторимой машине. На сервере Zabbix отредактируйте:
vim /etc/zabbix/zabbix_agentd.confУкажите IP сервера Zabbix в полях Server и ServerActive:
Server=10.5.5.50
ServerActive=10.5.5.50Добавьте агент в автозагрузку:
systemctl enable zabbix-agent
Пояснение: если у вас несколько серверов Zabbix или кластер, укажите соответствующие IP/hostnames.
Шаг 5 — Настройка firewalld
Откройте HTTP(S) и порты Zabbix:
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
firewall-cmd --reload
firewall-cmd --list-allПроверка: убедитесь, что порты добавлены и доступны извне (telnet/ss, nmap с другого хоста).

Важно: на серверах-агентах обычно нужен исходящий доступ на 10051/tcp к серверу Zabbix.
Шаг 6 — Настройка SELinux
Если SELinux включён (Enforcing), потребуется настроить дополнительные политики.
Установите утилиты:
dnf install policycoreutils checkpolicy setroubleshoot-serverСоздайте рабочую директорию и файл модуля:
mkdir -p ~/zabbix-selinux
cd ~/zabbix-selinux/
vim zabbix_server_add.teВставьте содержимое модуля (пример):
module zabbix_server_add 1.1;
require {
type zabbix_var_run_t;
type tmp_t;
type zabbix_t;
class sock_file { create unlink write };
class unix_stream_socket connectto;
class process setrlimit;
class capability dac_override;
}
#============= zabbix_t ==============
#!!!! This avc is allowed in the current policy
allow zabbix_t self:process setrlimit;
#!!!! This avc is allowed in the current policy
allow zabbix_t self:unix_stream_socket connectto;
#!!!! This avc is allowed in the current policy
allow zabbix_t tmp_t:sock_file { create unlink write };
#!!!! This avc is allowed in the current policy
allow zabbix_t zabbix_var_run_t:sock_file { create unlink write };
#!!!! This avc is allowed in the current policy
allow zabbix_t self:capability dac_override;Скомпилируйте и установите модуль:
checkmodule -M -m -o zabbix_server_add.mod zabbix_server_add.te
semodule_package -m zabbix_server_add.mod -o zabbix_server_add.pp
semodule -i zabbix_server_add.ppДополнительно задайте булевые флаги:
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_connect_zabbix 1
setsebool zabbix_can_network onПояснение: без этих правил веб-интерфейс и сервер Zabbix могут быть ограничены в сетевых соединениях и доступе к сокетам.

Совет: используйте audit2allow для генерации правил по логам AVC отладки.
Шаг 7 — Первичная веб-настройка Zabbix
Запустите сервисы и проверьте их состояние:
systemctl start zabbix-server
systemctl status zabbix-server
systemctl start zabbix-agent
systemctl status zabbix-agent
systemctl restart httpdОткройте в браузере: http://10.5.5.50/zabbix/ (замените адрес на IP/hostname вашего сервера).
Вы увидите приветственный экран веб-установщика. Нажмите Next Step, убедитесь, что все требования удовлетворены (no errors), затем пропишите параметры БД (user, password, db name). Далее укажите Host для сервера Zabbix и имя хоста/домена.





После успешной установки нажмите Finish. Вход в систему: admin / zabbix (по умолчанию).



Критерии приёмки:
- Успешный вход в веб-интерфейс под admin.
- Дашборд отображает метрики/элементы по умолчанию.
Шаг 8 — Смена пароля admin
Обязательно смените пароль администратора по умолчанию.
В веб-интерфейсе нажмите на иконку пользователя (правый верхний угол) и выберите Change Password. Введите старый пароль и новый.


После обновления используйте новый пароль для входа.
Безопасность и рекомендации после установки
- Обновляйте систему и Zabbix-пакеты регулярно (yum/dnf update).
- Отключите доступ к веб-интерфейсу по HTTP, включите HTTPS (сертификаты Let’s Encrypt или корпоративные).
- Ограничьте доступ к портам 10050/10051 по IP-фильтрам.
- Используйте отдельного пользователя БД с минимальными правами (не root).
- Настройте ротацию логов и резервное копирование базы данных.
Тестовые сценарии и приёмка
- Проверка подключения агента: с сервера Zabbix telnet
10050. Ожидаем соединение. - Проверка отправки активных checks: в логах Zabbix server посмотреть ошибки /var/log/zabbix/zabbix_server.log.
- Веб-интерфейс: авторизация под новым паролем admin.
- Создание простого хоста и проверка шаблона “Template OS Linux” — получение первых метрик.
Критерии приёмки: все тесты пройдены, сотрудники оповещены о завершении установки.
Частые ошибки и их устранение (Runbook)
Проблема: На шаге веб-инсталлятора ошибка подключения к базе.
Действие: проверьте DBHost, DBPassword, права пользователя zabbix, доступность порта 3306, SELinux и firewalld.Проблема: Агент не отвечает.
Действие: проверьте /etc/zabbix/zabbix_agentd.conf (Server, ServerActive), запущен ли агент, открыты ли порты, нет ли локального firewall/iptables.Проблема: SELinux блокирует соединения.
Действие: посмотрите /var/log/audit/audit.log, примените audit2allow или загрузите кастомный модуль (описано выше).Проблема: Ошибки PHP (расширения).
Действие: убедитесь, что установлены php-mbstring, php-gd, php-mysqlnd и другие, перезапустите httpd.
Альтернативные подходы
- База данных: вместо MariaDB можно использовать PostgreSQL (рекомендуется для больших установок). Потребуются пакеты zabbix-server-pgsql и соответствующая схема.
- Веб-сервер: использовать Nginx + PHP-FPM вместо Apache. Потребуется настроить конфигурацию fastcgi для Zabbix frontend.
- Контейнеризация: запускать Zabbix Server/Frontend в Docker/Kubernetes — упрощает масштабирование, но добавляет слои сетевой и персистентной конфигурации.
Режни зрелости развертывания (Maturity levels)
- Уровень 0 — PoC: односерверная установка (Server+DB+Frontend на одном хосте).
- Уровень 1 — Стандарт: отдельный DB-хост, сервер Zabbix и frontend вместе.
- Уровень 2 — Резервирование: репликация БД, кластеризация фронтенда за балансировщиком.
- Уровень 3 — Enterprise: распределённая архитектура, HA, масштабирование проксей и агентов.
Роль‑ориентированные чек‑листы
Администратор (сеть/системы):
- Убедиться в доступности портов 80/443, 10050, 10051.
- Настроить бэкапы БД.
- Настроить мониторинг самого Zabbix.
DBA:
- Подготовить базу данных, правах пользователей, параметры производительности (innodb_buffer_pool_size).
- Настроить резервные копии и восстановление.
Инженер безопасности:
- Настроить HTTPS для веб-интерфейса.
- Минимизировать открытые сервисы.
- Проверить SELinux и применить политики.
Чеклист SOP (короткая инструкция для повтора)
- Установить httpd.
- Установить PHP и нужные расширения, настроить php.ini.
- Установить MariaDB, выполнить mysql_secure_installation.
- Создать БД zabbix и пользователя.
- Добавить репозиторий Zabbix, установить пакеты.
- Импортировать create.sql в БД zabbix.
- Настроить /etc/zabbix/zabbix_server.conf, /etc/zabbix/zabbix_agentd.conf.
- Настроить firewall и SELinux.
- Запустить сервисы, пройти веб-инсталлятор и сменить пароль.
Тестовые кейсы
- При добавлении хоста с IP агента, все элементы данных начинают получать значения в течение 5–10 минут.
- При выключении агента Zabbix генерирует триггер недоступности.
- При росте CPU выше порога приходят уведомления по заранее настроенному медиа-тейпу.
Советы по миграции и совместимости
- При переходе с MySQL на PostgreSQL потребуется экспорт данных и миграция — прямой импорт схемы не поможет.
- Обновление Zabbix: сначала протестируйте upgrade на стенде. Обновления между мажорными версиями требуют проверки совместимости схемы.
Заключение
Вы установили и настроили Zabbix 4.0 LTS на CentOS 8: от Apache и PHP до MariaDB, самого Zabbix и веб-инсталлятора. Далее рекомендуем настроить резервные копии, HTTPS и интеграцию уведомлений (SMTP, Telegram, Slack) и постепенно подключать хосты и шаблоны.
Important: храните пароли в менеджере секретов, а не в открытых скриптах.
Дополнительные ресурсы
- Официальный сайт Zabbix: https://www.zabbix.com/
- Документация по SELinux и audit2allow — для отладки политик.
Резюме
- Установка LAMP и MariaDB.
- Добавление репозитория Zabbix 4.0 и установка пакетов.
- Импорт схемы, конфигурация сервера и агента.
- Настройка firewalld и SELinux.
- Завершение через веб-инсталлятор и смена пароля admin.
Ключевые следующие шаги: включить HTTPS, настроить уведомления и подключить шаблоны мониторинга.
Контакты и ссылки
- Документация Zabbix и официальный сайт: https://www.zabbix.com/
Похожие материалы
Умный выключатель света на Raspberry Pi
Wireless PowerShare на Samsung: как использовать
Форматирование USB в Ubuntu с GParted
Ошибка Invalid MMI Code на Android — как исправить
Штатив: как выбрать и использовать