Zabbix. Новомодна система моніторингу.

ansible logo
Zabbix . Що за звір, чому останнім часом куди не плюнь використовують його, а не класику у вигляді nagios , надумав на практиці спробувати і подивитися + і -.

Отже, як каже wikipedia:

Zabbix — вільна система моніторингу служб і станів комп’ютерної мережі. Zabbix складається з трьох базових компонентів: сервера для координації виконання перевірок, формування перевірочних запитів та накопичення статистики, агентів для здійснення перевірок на стороні зовнішніх хостів та фронтенда для організації управління системою.

Для роботи системи треба:

  1. База банних;
  2. PHP;
  3. Web-сервер;
  4. Zabbix-сервер;
  5. Zabbix-агент на всьому що буде моніторитися, хоча деякий примітив типу доступність порту чи пінг може моніторити без агента.

Уже викликає деякі підозри, тому що для nagios не потрібно нічого крім самого сервера та web-сервера, а БД і РНР я не люблю.

Встановлення на CentOS

ПОПЕРЕДНІ НАЛАШТУВАННЯ ТА ЗАУВАЖЕННЯ
Відключаємо фаєрвол чи дозволяємо що треба:

systemctl stop firewalld && systemctl disable firewalld

або

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=10051/tcp
firewall-cmd --reload

При підключених репозиторіях забікса і персони обновляємось так dnf update --nobest бо буде конфлікт версій.

При використанні SELinux буде помилка при спробі запустити Zabbix, відключаємо, або шукаємо як налаштувати запуск з включеним: У файлі /etc/sysconfig/selinux параметр має виглядати так SELINUX=disabled
Переходимо у дозволяючий режим SELinux:

setenforce 0

ZABBIX
Встановлюємо:

rpm -Uvh 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-nginx-conf zabbix-agent

Файл конфігурації /etc/zabbix/zabbix_server.conf :

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
Timeout=20

MYSQL
Установка mysql-сервера, автор базового мануалу любить percona, ну і чорт з ним, не бачу різниці:

dnf install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
dnf module disable mysql
percona-release setup ps80
dnf install percona-server-server percona-toolkit percona-xtrabackup-80
systemctl enable --now mysqld

В процесі автоматично генерується тимчасовий пароль адміністратора, дивимось його тут

grep "temporary password" /var/log/mysqld.log

Запускаємо інсталяцію:

mysql_secure_installation

Створюємо mysql-базу для Zabbix:

mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified with mysql_native_password by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> exit
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

NGINX
Файли конфігурації:
/etc/nginx/conf.d/zabbix.conf

listen 80 default_server;
server_name example.com;

/etc/nginx/nginx.conf

listen 80;
listen [::]:80;

Якщо default_server буде в конфі нжинкса, а не забікса то не буде доступу по ір.

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

php_value[date.timezone] = Europe/Kiev

Запускаємо:

systemctl enable --now zabbix-server
systemctl enable --now nginx php-fpm

Встановлення на Ubuntu/Debian

ПОПЕРЕДНІ НАЛАШТУВАННЯ ТА ЗАУВАЖЕННЯ
Відключаємо фаєрвол:

systemctl stop iptables
systemctl disable iptables
systemctl stop ufw
systemctl disable ufw
ufw disable

SELinux: У файлі /etc/sysconfig/selinux параметр має виглядати так SELINUX=disabled
Перезапускаємо:

setenforce 0

ZABBIX
Встановлюємо:

wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb
dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
apt update
apt install nginx php-fpm php-mysql mariadb-server zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent

Файл конфігурації /etc/zabbix/zabbix_server.conf :

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
Timeout=20

MYSQL
Установка:

apt install mariadb-server
mysql_secure_installation
mysql -uroot -p
Enter password:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> exit

zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p zabbix

NGINX
Файли конфігурації:
/etc/nginx/conf.d/zabbix.conf

listen 80 default_server;
server_name example.com;

/etc/nginx/nginx.conf

listen 80;
listen [::]:80;

Запускаємо:

systemctl enable zabbix-server
systemctl restart nginx php7.4-fmp
systemctl enable nginx php7.4-fmp

Базова інструкція для deb-систем була малодостовірна, прийшлося поскакати з бубном, так що може в результаті що упустив і в своїй. Для CentOS все точно.

Фронтенд

login: Admin
password: zabbix

Висновки

Потребує установки БД, потребує установки клієнту на кожен ПК що хочемо моніторити. Але установка елементарна, один раз трохи проходимося по граблям, щоб зрозуміти що й до чого, потім робимо плейбук для ансібла й валяємо дурака. А можна навіть скачати вже готові плейбуки.

Щось моніторити не пробував, відклав у довгий ящик. На цей момент залишаюся при думці, що аби треба було робити десь моніторинг з нуля то знову вибрав би класичний nagios, а не всякі новомодні свистопердєлки типу zabbix чи форків того ж нагіоса а-ля icinga чи centreon.