Сервер 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
- Шаг 2: Установка Zabbix сервер, интерфейс и агент
- Шаг 3: Установка и настройка базы данных
- Шаг 4: Запуск Zabbix сервера и агента
- Шаг 5. Настройка брандмауэра
- Шаг 6: Настройка веб–интерфейса Zabbix
- Шаг 7. Вход в интерфейс, используя учетные данные Zabbix по умолчанию.
- Шаг 8: MySQL в таблицах истории и событий
- Шаг 9: Оптимизация Zabbix Server (необязательно)
- Шаг 10: Оптимизация базы данных MySQL / MariaDB (необязательно)
- Шаг 11: Как управлять сервисом Zabbix / MySQL / Apache
- Шаг 12: Включите и настройте SELinux в Zabbix
- Шаг 13: Обновление между младшими версиями Zabbix
Шаг 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 в качестве пароля базы данных, но если вы установили что-то еще, не забудьте ввести правильный пароль, когда это будет предложено мастером.
Вот и все, вы установили систему мониторинга Zabbix!
Шаг 7. Войдите в интерфейс, используя учетные данные Zabbix по умолчанию.
Используйте имя пользователя администратора Zabbix по умолчанию « Admin » и пароль « zabbix » (без кавычек) для входа в веб-интерфейс Zabbix по URL-адресу «http: // server_ip_or_dns_name / zabbix» через ваш браузер.
В моем примере я установил Zabbix на сервер 192.168.1.161, поэтому я введу в поле URL своего браузера http: // 192.168.1.161 / zabbix (вы можете узнать IP-адрес своего сервера, набрав команду « ip a
» в терминале)
ПОЗДРАВЛЯЕМ!
Вы успешно установили 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-сервер
Свежие комментарии