Zabbix 5.0 или 5.2 на CentOS 8

///
18 mins read

Сервер Zabbix можно установить в любом дистрибутиве Linux, но в этом руководстве я покажу вам, как установить последнюю  версию Zabbix 5.0 LTS  или  5.2 Standard. на CentOS 8 / RHEL 8.

Zabbix — это абсолютно бесплатное программное обеспечение корпоративного уровня с открытым исходным кодом, предназначенное для мониторинга доступности и производительности компонентов и услуг ИТ-инфраструктуры. Вы можете прочитать тематическое исследование о Zabbix и узнать больше в этой статье.

Хватит разговоров, поработаем! Сначала мы установим и настроим сервер Zabbix, затем базу данных и, наконец, интерфейс — посмотрите картинку ниже, чтобы лучше понять архитектуру Zabbix.

Это руководство предназначено для установки  системы мониторинга Zabbix (сервера)  на CentOS / RHEL, а руководство по установке  Zabbix-Proxy  на CentOS / RHEL можно найти по  этой  ссылке.

Содержание

Шаг 1. Установите SELinux

Настройте SELinux для работы в разрешающем режиме:

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Таким образом, SELinux ничего не заблокирует, но журнал аудита заполнится тем, что было бы отклонено. А позже, на шаге 12 , мы можем создать на основе этого политику SELinux.

Шаг 2: Установите Zabbix сервер, интерфейс и агент

Установите RPM-пакет Zabbix 5 на CentOS 8, очистите репозиторий и установите Zabbix-сервер, интерфейс и агент. Выберите выпуск 5.0 LTS или стандартный выпуск 5.2.

Zabbix 5.0 LTS version (supported until May 31, 2025)
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
dnf clean all
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

                                                     OR 

Zabbix 5.2 standard version (supported until May 31, 2021)
rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpm
dnf clean all
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

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

Шаг 3: Установите и настройте базу данных

В этой установке я буду использовать пароль rootDBpass в качестве пароля root и zabbixDBpass в качестве пароля Zabbix для БД. Из соображений безопасности рассмотрите возможность изменения пароля.

а. Установить MariaDB

dnf -y install mariadb-server && systemctl start mariadb && systemctl enable mariadb

б. Сбросить пароль root для базы данных

Защитите MySQL, изменив пароль по умолчанию для MySQL root:

mysql_secure_installation
Enter current password for root (enter for none): Press the Enter
Set root password? [Y/n]: Y
New password: <Enter root DB password>
Re-enter new password: <Repeat root DB password>
Remove anonymous users? [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

c. Создать базу данных

Создайте базу данных для Zabbix прямо из терминала, используя эти две команды:

mysql -uroot -p'rootDBpass' -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -uroot -p'rootDBpass' -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixDBpass';"

d. Импортировать исходную схему и данные

Временное отключение строгого режима ( ZBX-16465 ), чтобы избежать ошибки MySQL « ERROR 1118 (42000) at line 1284: Row size too large (> 8126)»:

mysql -uroot -p'rootDBpass' zabbix -e "set global innodb_strict_mode='OFF';"

Импортировать схему базы данных для Zabbix сервера (может длиться до 5 минут):

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'zabbixDBpass' zabbix

Включить строгий режим:

mysql -uroot -p'rootDBpass' zabbix -e "set global innodb_strict_mode='ON';"

е. Введите пароль базы данных в файле конфигурации Zabbix

Откройте zabbix_server.confфайл командой: « nano /etc/zabbix/zabbix_server.conf» и добавьте пароль базы данных в этом формате в любом месте файла:

DBPassword=zabbixDBpass

Сохраните и закройте файл ( ctrl + x , затем  y  и  введите ).

Шаг 4: Запустите Zabbix сервер и процессы агента

systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent

Шаг 5. Настройте брандмауэр

firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
firewall-cmd --reload

Шаг 6: Настройте веб-интерфейс Zabbix

а. Настроить PHP для веб-интерфейса Zabbix

Отредактируйте файл « /etc/php-fpm.d/zabbix.conf» с помощью команды:

nano /etc/php-fpm.d/zabbix.conf

Раскомментируйте строку в zabbix.conf, которая начинается с « ; php_value date.timezone Europe/Moscow», удалив символ « ;» и установите правильный часовой пояс для вашей страны, например:

php_value date.timezone Europe/Moscow

Сохранить и выйти из файла ( ctrl + x , затем  y  и  введите )

б. Перезагрузите веб-сервер Apache и запустите его при загрузке системы.

systemctl restart httpd php-fpm
systemctl enable httpd php-fpm

c. Настроить веб-интерфейс

Подключитесь к недавно установленному веб-интерфейсу Zabbix, используя URL-адрес « http: // server_ip_or_dns_name / zabbix », чтобы запустить мастер установки Zabbix.

В моем случае этот URL-адрес будет « http://192.168.1.161/zabbix », потому что я установил Zabbix на сервере с IP-адресом 192.168.1.161 (вы можете найти IP-адрес своего сервера, набрав команду « ip a» в Терминал).

По сути, в этом мастере вам нужно только ввести пароль для пользователя Zabbix DB, а для всего остального просто нажать « Следующий шаг ». В этом руководстве я использовал zabbixDBpass в качестве пароля базы данных, но если вы установили что-то еще, не забудьте ввести правильный пароль, когда это будет предложено мастером.

1. Шаг установки: экран приветствия
2. Этап установки: проверка предварительных требований.
3. Шаг установки: настройка подключения к БД.
4. Шаг установки: Настройка Zabbix сервера
5. Этап установки: сводка перед установкой
6. Шаг установки: Готово

Вот и все, вы установили систему мониторинга Zabbix!

Шаг 7. Войдите в интерфейс, используя учетные данные Zabbix по умолчанию.

Используйте имя пользователя администратора Zabbix по умолчанию « Admin » и пароль « zabbix » (без кавычек) для входа в веб-интерфейс Zabbix по URL-адресу «http: // server_ip_or_dns_name / zabbix» через ваш браузер.

СТРАНИЦА ВХОДА В ZABBIX

В моем примере я установил Zabbix на сервер 192.168.1.161, поэтому я введу в поле URL своего браузера http: // 192.168.1.161 / zabbix (вы можете узнать IP-адрес своего сервера, набрав команду « ip a» в терминале)

Панель инструментов Zabbix 5.0

ПОЗДРАВЛЯЕМ!
Вы успешно установили Zabbix 5 на CentOS 8 и теперь можете отслеживать все, что угодно!
Больше ничего менять не нужно, другие шаги не обязательны.

ПРОДОЛЖИТЬ ( не обязательно):
Как создать разделы MySQL в таблицах истории и событий
Оптимизация сервера Zabbix и базы данных MySQL
Управление службой Zabbix / MySQL / Apache
Включение и настройка SELinux в Zabbix

Шаг 8: Создайте разделы MySQL в таблицах истории и событий

Процесс обслуживания Zabbix отвечает за удаление старых данных тренда и истории. Удаление старых данных из базы данных с помощью запроса на удаление SQL может отрицательно сказаться на производительности базы данных. Многие из нас получили из-за этого раздражающую тревогу « Zabbix housekeeper processes more than 75% busy».

Эту проблему легко решить с помощью разделения базы данных. При секционировании таблицы создаются для каждого часа или дня и удаляются, когда они больше не нужны. SQL DROP намного эффективнее, чем оператор DELETE.

Вы можете разделить таблицы MySQL за 5 минут, используя это простое руководство .

Шаг 9: Оптимизация Zabbix Server (необязательно)

Не беспокойтесь об этой оптимизации, если вы отслеживаете небольшое количество устройств, но если вы планируете отслеживать большое количество устройств, продолжайте этот шаг.

Откройте «zabbix_server.conf» файл командой: «nano /etc/zabbix/zabbix_server.conf» и добавьте эту конфигурацию в любое место файла:

StartPollers=100
StartPollersUnreachable=50
StartPingers=50
StartTrappers=10
StartDiscoverers=15
StartPreprocessors=15
StartHTTPPollers=5
StartAlerters=5
StartTimers=2
StartEscalators=2
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
TrendCacheSize=32M
ValueCacheSize=256M

Сохраните и закройте файл ( ctrl + x , затем  y ).

Это не идеальная конфигурация, имейте в виду, что вы можете еще больше ее оптимизировать. Допустим, если вы не используете проверки ICMP, установите для StartPingersпараметра « » значение 1 или, если вы не используете активные агенты, установите « StartTrappers» в 1 и так далее. Вы можете узнать больше о параметрах, поддерживаемых в файле конфигурации Zabbix сервера, в  официальной документации .

Если вы попытаетесь запустить Zabbix сервер, вы получите ошибку « [Z3001] connection to database 'Zabbix' failed: [1040] Too many connections» в журнале « /var/log/zabbix/zabbix_server.log», потому что мы используем больше процессов Zabbix сервера, чем MySQL может обработать. Нам нужно увеличить максимально разрешенное количество одновременных клиентских подключений и оптимизировать MySQL — так что переходите к следующему шагу.

Шаг 10: Оптимизация базы данных MySQL / MariaDB (необязательно)

а. Создать собственный файл конфигурации MySQL

Создайте файл « 10_my_tweaks.cnf" с «nano /etc/my.cnf.d/10_my_tweaks.cnf» и вставьте эту конфигурацию:

[mysqld]
max_connections = 404
innodb_buffer_pool_size = 800M

innodb-log-file-size = 128M
innodb-log-buffer-size = 128M
innodb-file-per-table = 1
innodb_buffer_pool_instances = 8
innodb_old_blocks_time = 1000
innodb_stats_on_metadata = off
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-flush-log-at-trx-commit = 2

tmp-table-size = 96M
max-heap-table-size = 96M
open_files_limit = 65535
max_connect_errors = 1000000
connect_timeout = 60
wait_timeout = 28800

Сохраните и выйдите из файла ( ctrl + x , затем  y ) и установите правильные права доступа к файлу:

chown mysql:mysql /etc/my.cnf.d/10_my_tweaks.cnf
chmod 644 /etc/my.cnf.d/10_my_tweaks.cnf

Следует помнить две вещи!

Параметр конфигурации  max_connections  должен быть больше, чем общее количество всех процессов Zabbix прокси плюс 150. Вы можете использовать команду ниже, чтобы автоматически проверить количество процессов Zabbix и добавить 150 к этому числу:

egrep "^Start.+=[0-9]" /etc/zabbix/zabbix_server.conf | awk -F "=" '{s+=$2} END {print s+150}'
295

Второй по важности параметр —  innodb_buffer_pool_size , который определяет, сколько памяти может получить MySQL для кэширования таблиц InnoDB и данных индекса. Вы должны установить этот параметр на 70% системной памяти, если на сервере установлена ​​только база данных.

Однако в этом случае мы разделяем сервер с процессами Zabbix и Apache, поэтому вы должны установить  innodb_buffer_pool_size равным  40% от общей системной памяти. Это будет 800 МБ, потому что у моего сервера CentOS 2 ГБ ОЗУ.

У меня не было проблем с памятью, но если ваш Zabbix прокси выйдет из строя из-за нехватки памяти, уменьшите « innodb_buffer_pool_size» и перезапустите сервер MySQL.

Обратите внимание, что если вы будете следовать этой конфигурации, вы получите Too many processes on the Zabbix serverпредупреждение « » в веб-интерфейсе Zabbix из-за новой конфигурации Zabbix. Можно безопасно увеличить порог срабатывания или отключить эту тревогу (выберите вкладку « Проблемы » → щелкните левой кнопкой мыши по тревоге → выберите « Конфигурация » → снимите флажок с « Включено » → нажмите кнопку « Обновить »)

б. Перезапустите сервер Zabbix и службу MySQL.

Остановите и запустите службы в том же порядке, как показано ниже:

systemctl stop zabbix-server
systemctl stop mysql
systemctl start mysql
systemctl start zabbix-server

Шаг 11: Как управлять сервисом Zabbix / MySQL / Apache

Иногда вам нужно будет проверить или перезапустить службу Zabbix, MySQL или Apache — используйте для этого команды ниже.

Zabbix Server
systemctl <status/restart/start/stop> zabbix-server

MySQL/MariaDB Server
systemctl <status/restart/start/stop> mysql

Apache Server
systemctl <status/restart/start/stop> httpd

PHP FastCGI Process Manager
systemctl <status/restart/start/stop> php-fpm

Zabbix Agent
systemctl <status/restart/start/stop> zabbix-agent

Шаг 12: Включите и настройте SELinux в Zabbix

Хотя в лабораторной среде можно отключить SELinux, в зависимости от требований местной ИТ-группы по безопасности вам может потребоваться включить и настроить SELinux в производственной среде.

В начале этого руководства мы не отключили SELinux полностью, но настроили его для работы в разрешающем режиме, что означает, что он будет регистрировать все ошибки безопасности, но не будет ничего блокировать.

Если вы случайно оставили его в принудительном режиме, вы получите Zabbix server is not running: the information displayed may not be currentпредупреждение « » в веб-интерфейсе Zabbix и « cannot set resource limit: [13] Permission denied» в файле журнала.

Не волнуйтесь, это легко исправить, поэтому без промедления давайте настроим SELinux для Zabbix!

a) SELinux: Разрешить демону http подключаться к Zabbix:

Включите логическое значение SELinux «httpd_can_connect_zabbix«, которое позволит демону http подключаться к Zabbix:

setsebool -P httpd_can_connect_zabbix 1

б) SELinux: Разрешить Zabbix подключаться ко всем TCP-портам:

Включите логическое значение SELinux «zabbix_can_network«, которое позволит Zabbix подключаться ко всем портам TCP:

setsebool -P zabbix_can_network 1

г) Установите SELinux для работы в принудительном режиме

Включите SELinux, настроив его на работу в принудительном режиме:

setenforce 1 && sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config

И проверьте статус SELinux:

# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31

д) Создайте дополнительную политику SELINUX для Zabbix

На всякий случай создадим дополнительную политику SELinux для каждой ошибки в журнале аудита (« /var/log/audit/audit.log«)

Для этого нам понадобится инструмент policycoreutils-python, поэтому давайте установим его:

dnf -y install policycoreutils-python-utils

Создайте пакет настраиваемой политики:

grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy

Установите собственный пакет политик SELinux:

semodule -i zabbix_policy.pp

Отличная работа! Вы настроили SELinux для Zabbix!

Шаг 13: Обновление между младшими версиями Zabbix

Я писал о процедурах обновления в своем посте об  обновлении Zabbix . Команда Zabbix выпускает новые минорные версии не реже одного раза в месяц. Основная цель мелких обновлений — исправить ошибки (исправление), а иногда даже добавить новые функции. Поэтому старайтесь делать небольшое обновление Zabbix хотя бы раз в месяц.

При небольшом обновлении резервные копии не нужны, они полностью безопасны. С помощью этой команды вы можете легко обновить минорные версии 5.0.x (например, с 5.0.1 до 5.0.5):

dnf upgrade 'zabbix-*'

И после этого перезапустите Zabbix сервер:

systemctl перезапустить zabbix-сервер
Previous Story

Осваиваем мониторинг с Prometheus. Часть 3. Настройка Prometheus server

Next Story

Завершение сеансов 1С

Latest from Blog

dd

dd (dataset definition) — программа UNIX, предназначенная как для копирования, так и для конвертации файлов. Название унаследовано от оператора DD

0 £0.00