Считаем, что у нас есть установленный и предварительно минимально настроенный 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 описаны тут.