Zabbix 4 на CentOS 7

Считаем, что у нас есть установленный и предварительно минимально настроенный CentOS 7. В качестве web-сервера для Zabbix будет использоваться nginx.

Подключаем репозиторий nginx и устанавливаем его:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

Запускаем nginx и добавляем в автозагрузку.

systemctl start nginx
systemctl enable nginx

Дальше устанавливаем менеджер процессов FastCGI (FPM) – php-fpm. Для этого подключаем репозиторий remi

rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Активируем remi-php71

yum install -y yum-utils
yum-config-manager --enable remi-php71

Устанавливаем php 7.1 и модули к нему

yum install -y php71 php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-bcmath

Запускаем и добавляем в автозагрузку php-fpm

systemctl start php-fpm
systemctl enable php-fpm

Проверяем, запустился ли он.

netstat -tulpn | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 14271/php-fpm: mast

Все в порядке, но запустим его через unix сокет. Для этого правим конфиг

mcedit /etc/php-fpm.d/www.conf

Комментируем строку:
;listen = 127.0.0.1:9000

После нее добавляем несколько других:
listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Там же изменим пользователя, от которого будет работать php-fpm. Вместо apache укажем nginx:
user = nginx
group = nginx

Перезапустим php-fpm проверим, запущенный сокет

systemctl restart php-fpm
ll /var/run/php-fpm/php-fpm.sock 
srw-rw---- 1 nginx nginx 0 Jan 14 14:36 /var/run/php-fpm/php-fpm.sock

Дальше установим свежую версию сервера баз данных MariaDB. Подключаем нужный репозиторий – Идем сюда и выбираем нужные параметры операционки

mcedit /etc/yum.repos.d/mariadb.repo

Содержимое файла:

# MariaDB 10.3 CentOS repository list - created 2019-01-15 09:15 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем сервер баз данных

yum install -y MariaDB-server MariaDB-client

Запускаем mariadb и добавляем в автозагрузку

systemctl start mariadb
systemctl enable mariadb

Запустим скрипт начальной конфигурации mysql и создадим пароль для root. Все остальное можно оставить по-умолчанию.

/usr/bin/mysql_secure_installation

Сделаем свой конфиг для mariadb, оптимизированный под zabbix

mcedit /etc/my.cnf.d/server.cnf

Содержимое файла:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
character_set_server=utf8
collation-server=utf8_bin
init_connect="SET NAMES utf8 collate utf8_bin"
port = 3306
socket = /var/lib/mysql/mysql.sock
innodb_file_per_table=1
innodb_buffer_pool_size = 768M #примерно в 2 раза меньше объема оперативной памяти сервера
innodb_buffer_pool_instances=1 #увеличивать на 1 каждый GB innodb_buffer_pool_size
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
[server]
[galera]
[embedded]
[mariadb]
[mariadb-10.3]

Перезапустим mariadb и убедимся, что он запустился

systemctl restart mariadb
systemctl status mariadb.service

● mariadb.service - MariaDB 10.3.12 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Mon 2019-01-14 14:42:35 MSK; 21h ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 5353 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─5353 /usr/sbin/mysqld

Приступим к установке Zabbix Server 4.0, первым делом нужно подключить репозиторий

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

Теперь запускаем установку Zabbix-server

yum install -y zabbix-server-mysql zabbix-web-mysql

После установки, создаём базу данных zabbix, пользователя zabbix и заполняем базу

mysql -uroot -p
Enter password:
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by 'пароль_для_пользователя_zabbix';
exit
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Отредактируем файл конфигурации сервера zabbix, этих минимальных настроек достаточно, для работы сервера

mcedit /etc/zabbix/zabbix_server.conf

Изменяем указанные строки, остальное не трогаем

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=пароль_для_пользователя_zabbix
ListenIP=0.0.0.0
Timeout=10

Запустим zabbix и добавим его в автозагрузку

systemctl start zabbix-server
systemctl enable zabbix-server

Можно проверить лог файл на наличие ошибок

cat /var/log/zabbix/zabbix_server.log

Остается сделать конфиг nginx для работы web интерфейса zabbix. В моем случае nginx работает на том же сервере, где сам zabbix, а других виртуальных хостов нет, правим дефолтный конфиг

mcedit /etc/nginx/conf.d/default.conf

Приводим его к следующему виду:

server {listen 80;
        server_name localhost;
        root /usr/share/zabbix;

location / {index index.php index.html index.htm;}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
always_populate_raw_post_data = -1
";
fastcgi_buffers 8 256k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
 }
}

Проверим конфиг на ошибки и перезапустим nginx

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -s reload

Важный нюанс – необходимо изменить права доступа и назначить владельцем nginx

chown -R nginx:nginx /var/lib/php/session
chown -R nginx:nginx /etc/zabbix/web

Этот нужно будет проделывать после каждого обновления php или zabbix. По-умолчанию zabbix идет в комплекте с apache и рассчитан на работу с ним. После установки или обновления, он делает его владельцем директории /etc/zabbix/web.

С серверной частью всё, продолжаем установку zabbix сервера через Zabbix Frontend. На одном из этапов указываем параметры доступа к базе данных. После завершения установки, авторизуемся на сервере со стандартной учетной записью

Пользователь Admin
Пароль zabbix
Изменение стандартных шаблонов мониторинга

В шаблоне Template App Zabbix Agent отключаем триггер Version of zabbix_agent(d) was changed on {HOST.NAME}.
В шаблоне Template OS Linux меняем в триггере Disk I/O is overloaded on {HOST.NAME} значение со стандартных 20% до 50%.
В этом же шаблоне в правиле обнаружения Mounted filesystem discovery добавим еще один прототип триггера, скопировав Free disk space is less than 20% on volume {#FSNAME}. В новом шаблоне вместо 20% указываем 5% и ставим важность «Высокая».
В этом же шаблоне в триггере Lack of free swap space on {HOST.NAME} меняем порог срабатывания с 50% до 20%.
В шаблоне Template OS Windows отключаем Правило обнаружения Windows service discovery. Если нужен мониторинг какой-то службы windows, для этого можно сделать отдельный шаблон.

Общие настройки

В общих настройках zabbix server, которые располагаются в разделе Администрирование -> Общие меняем следующие параметры:

В разделе Рабочее время выставляем актуальные рабочие часы.
В разделе Опции отображения триггеров меняем значения Отображать триггеры в состоянии ОК в течении и Мигание триггеров при изменении состояния на 1 минуту.
В разделе Прочее меняю Обновление неподдерживаемых элементов данных на 1 минуту. Это актуально во время отладки новых шаблонов.

Настройки оповещений в Telegram описаны тут.

Яндекс.Метрика