Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Установка 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

Установка MariaDB на Debian

Установка MariaDB в Ubuntu

Установка 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» -> «Users». Нажимаем на «Create user» и прописываем ему нужные параметры. Я создал суперпользователя ( взял все от юзера zabbix). После чего, удалил пользователя zabbix ( т.к он не безопасный). 

— Открываем «Administration» -> «Media types». Нажимаем на «email» и вводим нужные параметры. Я не буду заострять внимание на этом. Я расскажу как настроить данную вкладку в следующих статьях.

Я, хочу мониторить сам сервер, и сейчас я, включу данную функцию:

— Открываем «Administration» -> «Hosts». Нажимаем на чекбокс с «Zabbix server» и после чего, клацаем на «enable». Вот скриншот:

Включаем мониторинг Zabbix сервера

Чтобы убедится что все работает и собираются данные — переходим:

— Открываем «Monitoring» -> «Latest data». Выбираем наш сервер, какие данные чекать.

Собственно — это все. Минимальная настройка уже имеется. Как работать с заббиксом и заббикс-агентами, будет немного позже.

Установка и подключения других агентов

Опишу в следующей статье.

А на этом, у меня все. Тема «» завершена.

One thought on “Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

  1. Спасибо за статью! Хочу поделиться скриптом и шаблоном для автоматического обнаружения пулов PHP-FPM и их дальнейшего мониторинга для Zabbix 4.0+ https://github.com/rvalitov/zabbix-php-fpm
    Работает со всеми типам пулов (dynamic, static, ondemand), имеет все необходимые скрины и триггеры.
    Надеюсь, что кому-нибудь это пригодится.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.