В нашей статье мы рассмотрим процесс установки Zabbix версии 5 на CentOS 8 и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MariaDB/MySQL. Данная инструкция является обновлением инструкции по установке Zabbix 4 на CentOS 7.
Подготовка системы
Перед установкой Zabbix настроим корректное время, брандмауэр и отключим систему безопасности SELinux.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
dnf install chrony
systemctl enable chronyd –now
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 в CentOS.
Для отключения SELinux вводим две команды:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* первая команда отключает SELinux для текущей загрузки сервера, вторая — перманентно.
Установка веб-сервера
Управление сервером Zabbix будет осуществляться посредством веб-интерфейса. Для этого необходимо установить и настроить веб-сервер, СУБД и PHP.
СУБД
В данному инструкции мы будем использовать сервер баз данных mariadb.
Для установки вводим:
dnf install mariadb-server
Разрешаем автозапуск сервера баз данных и запускаем mariadb:
systemctl enable mariadb –now
Задаем пароль для суперпользователя СУБД:
mysqladmin -u root password
* после ввода команды система потребует ввести пароль два раза.
Веб-сервер
Для наших целей будем использовать веб-сервер NGINX. Для его установки вводим команду:
dnf install nginx
Запускаем nginx и разрешаем его автозапуск:
systemctl enable nginx –now
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:
PHP и PHP-FPM
Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипы, написанные на нем. На момент написания инструкции веб-интерфейс Zabbix Server работал под php версии 5.4. Если установить на CentOS PHP 7, при установке zabbix-web возникнут проблемы.
Устанавливаем php и необходимые компоненты:
dnf install php php-fpm php-mysqli
Для настройки php, открываем файл:
vi /etc/php.ini
Редактируем следующие параметры:
date.timezone = “Europe/Moscow”
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
* где:
- date.timezone — задаем временную зону для PHP.
- max_execution_time — максимальное время работы скрипта. В данном примере, если он не успеет отработать за 300 секунд, PHP принудительно завершит его работу.
- post_max_size — максимальный размер загружаемых данных на сервер средствами PHP.
- max_input_time — время в секундах, за которое PHP должен разобрать входные данные GET и POST.
Запустим php-fpm:
systemctl enable php-fpm –now
NGINX + PHP
Для того, чтобы NGINX обрабатывал PHP, открываем конфигурационный файл:
vi /etc/nginx/nginx.conf
В разделах http – server добавляем настройку для обработки запросов php (location ~ \.php$):
http {
…
server {
listen 80 default_server;
…
location ~ \.php$ {
set $root_path /usr/share/nginx/html;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
…
}
* где /usr/share/nginx/html — корневой путь хранения скриптов.
Проверяем настройки nginx:
nginx -t
И перезагружаем его:
systemctl restart nginx
В домашнем каталоге NGINX создаем index.php со следующим содержимым:
vi /usr/share/nginx/html/index.php
<?php phpinfo(); ?>
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам:
Веб-сервер готов для работы с Zabbix Web.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу загрузки zabbix 5 для CentOS 8 и копируем ссылку на последнюю версию дистрибутива:
* в моем случае это ссылка на версию 5.0-1.
Устанавливаем репозиторий командой:
dnf install https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
Устанавливаем сервер, вводя команду:
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix. Принципиально важно, чтобы кодировка была utf8 и utf8_bin.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> \q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/doc/zabbix-server-mysql
Распаковываем архив с дампом базы:
gunzip create.sql.gz
Восстанавливаем базу их дампа:
mysql -u root -p zabbix < create.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
vi /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
…
DBName=zabbix
…
DBUser=zabbix
…
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Задаем владельца для каталога /etc/zabbix/web:
chown apache:apache /etc/zabbix/web
* в данном примере мы указали владельцем apache, так как именно от него по умолчанию работает php-fpm.
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга и стартуем его:
systemctl enable zabbix-server –now
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /usr/share/nginx/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/nginx.conf
Редактируем параметры root и set $root_path:
server {
listen 80 default_server;
…
root /usr/share/zabbix;
location ~ \.php$ {
set $root_path /usr/share/zabbix;
…
}
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
Установка через веб выполняется в несколько шагов.
1. Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix 5. Кликаем по ссылке Next Step:
2. В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK:
Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
3. В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix (в нашем примере, zabbixpassword). После нажимаем Next Step:
4. В следующем окне оставляем все как есть:
… и нажимаем Next Step.
5. В последнем окне мы проверяем настройки и кликаем Next Step.
6. Установка завершена — нажимаем Finish:
7. В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Настройка русского интерфейса
Устанавливаем пакет glibc-langpack-ru:
dnf install glibc-langpack-ru
В веб-интерфейсе переходим в меню в раздел User settings:
В выпадающем списке «Language» выбираем русский язык:
Сохраняем настройки.
Zabbix Agent
В качестве примера установим и настроим zabbix agent на наш сервер. Так как мы уже устанавливали репозиторий, установка агента выполняется командой:
dnf install zabbix-agent
Откроем конфигурационный файл:
vi /etc/zabbix/zabbix_agentd.conf
Отредактируем следующую опцию:
Server=localhost
* в данном примере мы указываем агенту сервер Zabbix — мы может указать его имя или IP-адрес.
Разрешаем автозапуск агента и запускаем его:
systemctl enable zabbix-agent –now
Возможные проблемы
1. upstream sent too big header while reading response header from upstream
Ошибка появляется во время установки zabbix в веб-интерфейсе.
Причина: zabbix отправляет размер заголовка больше, чем Nginx может прочитать.
Решение: увеличить размер заголовка в конфигурационном файле nginx:
vi /etc/nginx/nginx.conf
…
location ~ \.php$ {
…
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
…
…
Перезапускаем nginx:
systemctl restart nginx
2. Zabbix server is not running
Данную ошибку можно увидеть в веб-консоли управления:
Причина: как правило, не запущена служба сервера.
Решение: разрешаем автозапуск сервиса:
systemctl enable zabbix-server
Запускаем службу:
systemctl start zabbix-server
Корректность запуска можно проверить командой:
systemctl status zabbix-server
Огромный респект автору: https://www.dmosk.ru/miniinstruktions.php?mini=zabbix5-server-centos8#prepare