
Сервер Zabbix является средством сбора и анализа информации о состоянии оборудования в сети. В данной статье мы рассмотрим процесс его установки и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MySQL 8.4.
Подготовка сервера
Будем считать что у вас уже есть готовый сервер с установленной на него OS Linux CentOS 9 Stream. Перед установкой Zabbix выполняем некоторые подготовительные процедуры.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
sudo dnf install chrony
systemctl enable chronyd
systemctl start chronyd
2. Настройка брандмауэра
Для работы сервера, открываем следующие порты:
firewall-cmd --permanent --add-port={80/tcp,443/tcp,10051/tcp,10050/tcp,10050/udp,10051/udp}
firewall-cmd --reload
* где 80 — порт для http запросов (веб-интерфейс); 443 — для https запросов (веб-интерфейс); 10050 — порты для получения информации от zabbix агентов.
3. SELinux
В данной инструкции выполняется установка Zabbix на сервере с отключенным SELinux.
Для отключения SELinux вводим две команды:
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
Установка MySQL 8.4
Вам необходимо загрузить пакет репозитория MySQL из официального репозитория MySQL. Используйте следующие команды для загрузки и установки пакета репозитория:
sudo dnf install -y http://repo.mysql.com/mysql84-community-release-el9-1.noarch.rpm
После установки пакета репозитория включите репозиторий MySQL 8.4 с помощью следующей команды:
sudo dnf module enable mysql:8.4
Теперь вы можете установить MySQL 8.4 с помощью следующей команды:
sudo dnf install mysql-server
Запустите службу MySQL
sudo systemctl start mysqld
sudo systemctl enable mysqld
Задаем root пароль
mysql
Выполните следующий запрос, заменив слово «пароль» на нужное вам значение:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'пароль';
Примените изменения:
FLUSH PRIVILEGES;
Выйдите из консоли MySQL командой:
quit;
Восстановление пароля
Всякое бывает и поэтому тоже напишу это здесь, может кому и понадобится, останавливаем MySQL следующей командой:
sudo systemctl stop mysqld
Отредактируйте файл /etc/my.cnf
, чтобы запустить службу без проверки прав доступа.
В секцию [mysqld]
добавьте следующую строку:
skip-grant-tables
Должно получиться примерно так:

Сохраните изменения и запустите MySQL сервер
sudo systemctl start mysqld
Снова откройте файл /etc/my.cnf
и удалите добавленную строку. Сохраните изменения.
Подключитесь к MySQL как root без пароля:
mysql
Выберите активную БД:
use mysql;
Перезагрузите таблицы привилегий:
FLUSH PRIVILEGES;
Обновите пароль:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ваш_новый_пароль';
Примените изменения:
FLUSH PRIVILEGES;
Выйдите из MySQL и перезагрузите службу в обычном режиме:
sudo systemctl restart mysqld
Веб-сервер
Для наших целей будем использовать веб-сервер NGINX.
Для его установки необходимо добавить новый репозиторий:
sudo dnf install epel-release
Теперь вводим команду:
sudo dnf install nginx
Запускаем nginx и добавляем его автозапуск:
systemctl start nginx
systemctl enable nginx
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:
PHP и PHP-FPM
Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипы, написанные на нем. Очень важно установить подходящую версию PHP. Мы будем устанавливать PHP 8.0
sudo dnf install php php-fpm php-mysqlnd php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-gettext php-bcmath
Для настройки php, открываем файл /etc/php.ini и редактируем его
date.timezone = "Europe/Moscow"
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
max_input_vars = 10000
Запустим php-fpm:
systemctl enable php-fpm
systemctl start php-fpm
NGINX + PHP
Для того, чтобы NGINX обрабатывал PHP, открываем конфигурационный файл /etc/nginx/nginx.conf и приводим блок server его к виду
server {
listen 80;
listen [::]:80;
server_name _;
set $root_path /usr/share/nginx/html;
root $root_path;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
fastcgi_read_timeout 300;
}
}
где /usr/share/nginx/html — корневой путь хранения скриптов; 9000 — порт php-fpm.
Проверяем настройки nginx:
nginx -t
И перезагружаем его:
systemctl restart nginx
Заходим в каталог хранения настроенного сайта:
cd /usr/share/nginx/html
Создаем файл index.php со следующим содержимым:
<?php phpinfo(); ?>
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам:

Установка и настройка сервера Zabbix
Временно отключаем репозиторий EPEL
sudo dnf config-manager --set-disabled epel
Подключаем репозиторий Zabbix
rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/centos/9/noarch/zabbix-release-latest-7.2.el9.noarch.rpm
sudo dnf clean all
Устанавливаем Zabbix server, frontend и agent
sudo dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
Заходим в MySQL и создаем базу данных и пользователя zabbix
# mysql -uroot -p
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'ваш_пароль';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
Перед импортом данных необходимо добавить некоторые значения в файл /etc/my.cnf в секцию [mysqld]
это необходимо для того, чтобы на следующем шаге не возникало ошибок. Значение подбирается опытным путем, можете начать со 100M
max_allowed_packet = 500M
Далее импортируем структуру базы данных, вам будет предложено ввести пароль для пользователя zabbix который вы создали ранее
zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Далее необходимо отключить опцию log_bin_trust_function_creators после импорта
# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
Откройте и отредактируйте файл /etc/zabbix/zabbix_server.conf
DBPassword=ваш_пароль
Разрешаем автозапуск сервера
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix/ui. Наш веб-сервер работает с каталогом /usr/share/nginx/html. Необходимо изменить.
Снова открываем конфигурационный файл /etc/nginx/nginx.conf и меняем
set $root_path /usr/share/nginx/html;
на
set $root_path /usr/share/zabbix/ui;
Перезапускаем NGINX
systemctl restart nginx
Установка портала для управления Zabbix
Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web.
Обратите внимание, что установка английского языка
(en_US) также включит формат времени/даты США во внешнем интерфейсе.

Убедитесь, что выполнены все обязательные предварительные условия Zabbix.

Введите данные для подключения к базе данных. База данных Zabbix должна быть уже создана.

Ввод имени сервера Zabbix необязателен, однако если вы его введете, оно будет отображаться в строке меню и заголовках страниц. Установите часовой пояс и тему по умолчанию для интерфейса.

Просмотрите список настроек

Завершите установку.

Авторизоваться
Интерфейс Zabbix готов! Имя пользователя по умолчанию Admin , пароль zabbix .
