Установка и начальная настройка сервера мониторинга Zabbix на CentOS 7
Тематические термины: Zabbix, MariaDB, MySQL, PHP, NGINX.
Сервер Zabbix является средством сбора и анализа информации о состоянии оборудования в сети. В данной статье мы рассмотрим процесс его установки и развертывания веб-интерфейса для его управления. В качестве сервера баз данных мы будем использовать MariaDB/MySQL.
Готовим сервер
Время
Брандмауэр
SELinux
Устанавливаем веб-сервер
MariaDB
NGINX
PHP + PHP-FPM
NGINX + PHP
Устанавливаем сервер Zabbix
Установка
Настройка базы данных
Настройка zabbix
Запуск zabbix-server
Настройка nginx
Установка портала управления
Настройка Zabbix агента на сервере
Возможные проблемы
Подготовка сервера
Перед установкой Zabbix выполняем подготовительные процедуры.
1. Правильное время
Для получения актуальной информации необходимо, чтобы на сервере было правильное время.
Для этого сначала задаем правильную временную зону:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере задается московское время.
Затем устанавливаем и запускаем сервис синхронизации времени:
yum 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 в CentOS.
Для отключения SELinux вводим две команды:
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
* первая команда отключает SELinux для текущей загрузки сервера, вторая — перманентно.
Установка веб-сервера
Управление сервером Zabbix будет осуществляться посредством веб-интерфейса. Для этого необходимо установить и настроить веб-сервер, СУБД и PHP.
СУБД
В данному инструкции мы будем использовать сервер баз данных mariadb.
Для установки вводим:
yum install mariadb mariadb-server
Разрешаем автозапуск сервера баз данных и запускаем mariadb:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя СУБД:
mysqladmin -u root password
* после ввода команды система потребует ввести пароль два раза.
Веб-сервер
Для наших целей будем использовать веб-сервер NGINX.
Для его установки необходимо добавить новый репозиторий:
yum install epel-release
Теперь вводим команду:
yum install nginx
Запускаем nginx и разрешаем его автозапуск:
systemctl enable nginx
systemctl start nginx
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — мы должны увидеть окно приветствия:
* в вашем случае, данная страница может иметь другой вид.
PHP и PHP-FPM
Интерфейс zabbix разработан на PHP — наш веб-сервер должен обрабатывать скрипы, написанные на нем. Очень важно установить подходящую версию PHP. Узнать требуемую версию можно на странице с документацией — раздел «Frontend».
Для CentOS 7 максимально возможная версия для установки Zabbix с веб-интерфейсом — 4.2. Обратите на это внимание.
Для Zabbix версии 4.2, требуется PHP версии 5. Данная версия устанавливается в CentOS 7 из коробки.
Устанавливаем php и необходимые компоненты:
yum install php php-fpm php-mysql php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-gettext php-bcmath
Для настройки php, открываем файл:
vi /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, открываем конфигурационный файл:
vi /etc/nginx/nginx.conf
И приводим его к виду:
server {
listen 80 default_server;
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 со следующим содержимым:
vi index.php
<?php phpinfo(); ?>
Открываем веб-браузер и переходим по ссылке http://<IP-адрес сервера>/ — теперь мы должны увидеть сводную информацию по PHP и его настройкам:
Веб-сервер готов для работы с Zabbix Web.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета - затем переходим в rhel - 7 - x86_64 - копируем ссылку на последнюю версию релиза:
* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm.
Устанавливаем репозиторий командой:
yum install https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm
Устанавливаем сервер, вводя команду:
yum 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_general_ci;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> 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).
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /usr/share/nginx/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/nginx.conf
Редактируем параметры root и set $root_path:
...
set $root_path /usr/share/zabbix;
...
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
Открываем браузер и переходим по адресу http://<IP-адрес сервера>/ — откроется страница установки Zabbix Web. Кликаем по ссылке Next Step:
В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix (в нашем примере, zabbixpassword). После нажимаем Next Step:
В следующем окне оставляем все как есть:
... и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:
В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Zabbix Agent
В качестве примера установим и настроим zabbix agent на наш сервер. Так как мы уже устанавливали репозиторий, установка агента выполняется командой:
yum install zabbix-agent
Откроем конфигурационный файл:
vi /etc/zabbix/zabbix_agentd.conf
Отредактируем следующую опцию:
Server=localhost
* в данном примере мы указываем агенту сервер Zabbix — мы может указать его имя или IP-адрес.
Разрешаем автозапуск агента и запускаем его:
systemctl enable zabbix-agent
systemctl start zabbix-agent
Возможные проблемы
1. upstream sent too big header while reading response header from upstream
Ошибка появляется во время установки zabbix в веб-интерфейсе.
Причина: zabbix отправляет размер заголовка больше, чем Nginx может прочитать.
Решение: увеличить размер заголовка в конфигурационном файле nginx:
vi /etc/nginx/conf.d/default.conf
...
location ~ \.php$ {
...
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
...
...
Перезапускаем nginx:
systemctl restart nginx