Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Я описывал статью как можно установить zabbix на различные Linux системы. Но по дефолту, заббикс юзает апач для фронтенда. Но я люблю nginx + php-fpm и данная статья покажет как это сделать.
Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Я расскажу как установить все эти компоненты, но начнем с самого элементарного.
Установка nginx в Unix/Linux
Полезное чтиво:
Установка PHP 7(php-fpm) с nginx 1.9 в Debian 8
Виртуальный хост для отдельного пользователя с PHP-FPM и nginx
Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7
Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu
Установка и настройка nginx c PHP5, PHP-FPM и MySQL на Fedora
Установка php-fpm в Unix/Linux
Полезное чтиво:
Настройка «process manager(dynamic/static/ondemand)» для php-fpm в Unix/Linux
Установка mariaDB в Unix/Linux
Полезное чтиво:
Установка MariaDB 5.5 на RHEL / CentOS / Fedora Linux
Установка MariaDB 10 на CentOS 7
Установка Zabbix в Unix/Linux
Полезное чтиво:
Установка Zabbix на RedHat/CentOS/Fedora
Установка Zabbix на Debian/Ubuntu/Linux Mint
Настройка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Если есть необходимость использовать nginx, то вот конфиг:
# vim /etc/nginx/conf.d/zabbix.conf
И получаем следующее:
server { listen 80; server_name zabbix.local.server; access_log /var/log/nginx/access-zabbix.local.server.log; error_log /var/log/nginx/error-zabbix.local.server.log info; root /usr/share/zabbix; index index.php index.html; auth_basic "Nagios Restricted Access"; auth_basic_user_file /etc/zabbix/passwd; location / { root /usr/share/zabbix; index index.php index.html; } location ~ \.php$ { fastcgi_pass php-fpm; fastcgi_index index.php; 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/Kiev always_populate_raw_post_data = -1 "; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; include fastcgi_params; } location = /favicon.ico { log_not_found off; access_log off; } location ~* ".+\.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$" { access_log off; log_not_found off; expires max; } location ~* ^/(conf|api|include)($|\/) { deny all; } location ~ /\.ht { deny all; } location ~ /\. { deny all; } }
Хочу отметить следующее, что заббикс по деволту использует apache и если использовать nginx, то необходимо сменить права:
# chown -R nginx. /etc/zabbix/web # chown -R nginx. /usr/share/zabbix
Так же, я запускаю php-fpm от nginx пользователя ( я создал ему отдельный файл):
# vim /etc/php-fpm.d/zabbix.conf
И прописал в него:
[www] user = nginx group = nginx listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 listen.owner = nginx listen.group = nginx listen.mode = 0666 pm = dynamic pm.start_servers = 30 pm.min_spare_servers = 30 pm.max_spare_servers = 45 pm.process_idle_timeout = 30s pm.max_requests = 500000000 pm.status_path = /status request_terminate_timeout = 600s slowlog = /var/log/php-fpm/www-slow.log rlimit_files = 65535 chdir = / security.limit_extensions = .php .php3 .php4 .php5 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp php_flag[display_errors] = off php_admin_value[error_reporting] = 0 php_admin_value[error_log] = /var/log/php-fpm/php5-fpm.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 128M php_admin_flag[log_errors] = on php_admin_flag[display_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
Выставляем права на сессии:
# chown -R nginx. /var/lib/php/session
И для супер-пупер секурити, создаем:
# htpasswd -c /etc/zabbix/passwd zabbix
Прописываем пароль, для пользователя zabbix.
Перезапускаем службы:
# service nginx restart # service php-fpm restart # service mysql restart
Если mysql установлен, то еще необходимо создать пользователя, который будет управлять данной БД. Для начала, подключаемся к серверу:
# mysql -proot -p
Создаем базу и пользователя с паролем:
> create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to 'zabbix'@'127.0.0.1' IDENTIFIED BY 'passwd_user_zabbix'; > flush privileges;
У меня используется:
- zabbix — База данных.
- zabbix — пользователь.
- passwd_user_zabbix — пароль для пользователя.
Импортируем данные в созданную БД:
# zcat /usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz | mysql -u zabbix -p zabbix
Настройка zabbix-server
Открываем:
# vim /etc/zabbix/zabbix_server.conf
И производим настройку, у меня данный файл имеет вид:
ListenPort=10051 SourceIP=192.168.13.66 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=passwd_user_zabbix DBPort=3306 JavaGatewayPort=10052 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log CacheSize=8M HistoryCacheSize=16M HistoryIndexCacheSize=4M Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 Include=/usr/local/etc/zabbix_server.conf.d/*.conf
Создаем папку:
# mkdir /usr/local/etc/zabbix_server.conf.d
Запускаем сервер:
# service zabbix-server restart
Проверяем соединения:
# netstat -tulpn|grep zabbix
Разрешаем автозапуск (centOS 7):
$ systemctl enable zabbix-server.service
Или (centOS 5-6):
# chkconfig --levels 235 zabbix-server on
Идем дальше.
Настройка zabbix-agent
Открываем:
# vim /etc/zabbix/zabbix_agentd.conf
И производим настройку, у меня данный файл имеет вид:
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.13.66 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=192.168.13.66 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf
Запускаем агент:
# service zabbix-agent restart
Проверяем соединения:
# netstat -tulpn|grep zabbix
Разрешаем автозапуск (centOS 7):
$ systemctl enable zabbix-agent.service
Или (centOS 5-6):
# chkconfig --levels 235 zabbix-agent on
Идем дальше.
Настройка файрвола
Для корректной работы, нужно пробросить 10050 и 10051.
Пример использования systemctl (пример для centos 7):
# firewall-cmd --permanent --add-port=10050/tcp # firewall-cmd --permanent --add-port=10051/tcp
Перезапускаем:
# systemctl restart firewalld
Пример использования SELinux (пример для centos 7):
# setsebool -P httpd_can_connect_zabbix=1
Пример использования iptables (пример для centos 5-6):
# iptables -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT # iptables -A INPUT -p tcp -m tcp --dport 10051 -j ACCEPT # iptables -A INPUT -p tcp -m tcp --dport 10052 -j ACCEPT
Для более секундного решения, пробрасываем каждый ИПшник агента и открываем ему порт:
iptables -A INPUT -p tcp -s 172.22.221.100 --dport 10050 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 172.22.221.100 --dport 10051 -m state --state NEW,ESTABLISHED -j ACCEPT
Сохраняем правила:
# iptables-save > /etc/iptables.up.rules
Работа с zabbix
Выполняем установку через веб-интерфейс. Вводим данные которые были созданы выше( zabbix — база данных, zabbix — пользователь, passwd_user_zabbix — его пароль). После установки, можно будет зайти в админ панель:
Пользователь — Admin
Пароль для пользователя — zabbix
После установки, залогинились в админ-панель и приступим к настройке. Первое что нужно сделать — это создать нового пользователя и дать ему права администратора:
Я, хочу мониторить сам сервер, и сейчас я, включу данную функцию:
— Открываем «Administration» -> «Hosts». Нажимаем на чекбокс с «Zabbix server» и после чего, клацаем на «enable». Вот скриншот:
Чтобы убедится что все работает и собираются данные — переходим:
— Открываем «Monitoring» -> «Latest data». Выбираем наш сервер, какие данные чекать.
Собственно — это все. Минимальная настройка уже имеется. Как работать с заббиксом и заббикс-агентами, будет немного позже.
Установка и подключения других агентов
Опишу в следующей статье.
А на этом, у меня все. Тема «» завершена.
Спасибо за статью! Хочу поделиться скриптом и шаблоном для автоматического обнаружения пулов PHP-FPM и их дальнейшего мониторинга для Zabbix 4.0+ https://github.com/rvalitov/zabbix-php-fpm
Работает со всеми типам пулов (dynamic, static, ondemand), имеет все необходимые скрины и триггеры.
Надеюсь, что кому-нибудь это пригодится.