Алгоритм действий состоит из следующих шагов: 1.Настройка PHP-FPM на отдачу статусной страницы 2.Настройка Nginx на поддержку статусной страницы PHP-FPM 3.Запуск PHP-FPM-экспортера для сбора метрик с PHP-FPM и отдачи их Prometheus-у 4.Настройка Prometheus-а для сбора метрик с PHP-FPM-экспортера 5.Импортирование/настройка dashboard Grafana для визуализации метрик 6.Настрйка правил Prometheus для мониторинга PHP-FPM показателей Описание собираемых параметров с помощью […]
Записи с меткой ‘PHP-FPM’
Мониторинг PHP-FPM в Zabbix
Настройка PHP-FPM status Вывод PHP-FPM-статуса
1 |
pool |
– имя пула;
1 |
process manager |
– тип Process Manager (pm — dynamic, static, ondemand);
1 |
start time |
– время запуска FPM (FastCGI Process Manager);
1 |
start since |
– время в секундах с момента запуска;
1 |
accepted conn |
– количество обработанных пулом запросов;
1 |
listen queue |
– количество запросов в очереди на обработку этим пулом, если количество > 0 […]
Установка и настройка Zabbix-сервера на Ubuntu
1.Добавление репозитария Zabbix Отсюда скачиваем и устанавливаем пакет для добавления репозитария http://repo.zabbix.com/zabbix/ Ubuntu 14
1 |
# wget http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.4-1+trusty_all.deb |
1 |
# dpkg -i zabbix-release_2.4-1+trusty_all.deb |
1 |
# apt-get update |
2.Установка Zabbix-сервера и Zabbix-агента(клиента)
1 |
# apt-get install zabbix-agent zabbix-server-mysql zabbix-frontend-php dbconfig-common |
Во время установки необходимо согласится на создания базы данных zabbix и ввести пароль пользователя root.После чего установщик предложит ввести пароль пользователя zabbix к базе данных zabbix
1 |
zabbix-agent |
– агент для сервера мониторинга( […]
Установка и настройка Zabbix-сервера на Centos
1.Добавление репозитария Zabbix Отсюда скачиваем и устанавливаем пакет для добавления репозитария http://repo.zabbix.com/zabbix/ Centos 6 64-бит(x86_64)
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm |
32-бит(i386)
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/i386/zabbix-release-2.4-1.el6.noarch.rpm |
Centos7
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm |
В моем случае Centos 6 x86_64
1 |
# wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm |
1 |
# rpm –Uhv zabbix-release-2.4-1.el6.noarch.rpm |
2.Установка Zabbix-сервера и Zabbix-агента(клиента)
1 |
# yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql |
Будет использоваться связка Nginx+PHP-FPM 3.Настройка PHP-FPM Используем отдельный пул с пользователем zabbix
1 |
# egrep -v '(^;|^$)' /etc/php-fpm.d/zabbix.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[zabbix] listen = /var/run/php5-fpm-zabbix.sock listen.allowed_clients = 127.0.0.1 listen.owner = zabbix listen.group = nginx listen.mode = 0660 user = zabbix group = zabbix pm = dynamic pm.max_children = 10 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 500 pm.status_path = /status-zabbix ping.path = /ping-zabbix ping.response = pong request_terminate_timeout = 300 request_slowlog_timeout = 3s slowlog = /var/log/php-fpm/zabbix-slow.log catch_workers_output = yes php_admin_value[error_log] = /var/log/php-fpm/zabbix-error.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 128M php_admin_value[max_execution_time] = 300 php_admin_value[post_max_size] = 16M php_admin_value[upload_max_filesize] = 2M php_admin_value[max_input_time] = 300 php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session-zabbix |
1 |
# mkdir /var/lib/php/session-zabbix |
1 |
# chown -R zabbix:zabbix /var/lib/php/session-zabbix |
1 |
# nano /etc/php.ini |
1 |
date.timezone = Europe/Kiev |
1 |
# php-fpm –t |
1 |
# service php-fpm reload |
[…]
Настройка мониторинга PHP-FPM в Cacti
Есть три сайта, каждый из которых использует свой PHP-FPM-пул
1 2 3 |
kamaok.us - /etc/php-fpm.d/kamaok.conf joomla.us - /etc/php-fpm.d/joomla.conf wordpress.us - /etc/php-fpm.d/wordpress.conf |
И дефолтный сайт
1 |
default.us - /etc/php-fpm.d/www.conf |
1.Настройка PHP-FPM для снятия статистки Включаем отображение статуса для каждого php-fpm-пула
1 |
# nano /etc/php-fpm.d/kamaok.conf |
1 2 |
pm.status_path = /status-kamaok ping.path = /ping-kamaok |
1 |
# nano /etc/php-fpm.d/joomla.conf |
1 2 |
pm.status_path = /status-joomla ping.path = /ping-joomla |
1 |
# nano /etc/php-fpm.d/wordpress.conf |
1 2 |
pm.status_path = /status-wordpress ping.path = /ping-wordpress |
1 |
# nano /etc/php-fpm.d/www.conf |
1 2 |
pm.status_path = /status ping.path = /ping |
1 |
# php5-fpm –t |
1 |
# service php-fpm reload |
2.Настройка Nginx для отображения PHP-FPM-статистики Настраиваем все пулы в дефолтном Nginx хосте
1 |
# nano /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
location ~ ^/(status-kamaok|ping-kamaok)$ { fastcgi_pass unix:/var/run/php5-fpm.kamaok.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status-wordpress|ping-wordpress)$ { fastcgi_pass unix:/var/run/php5-fpm.wordpress.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status-joomla|ping-joomla)$ { fastcgi_pass unix:/var/run/php5-fpm.joomla.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } location ~ ^/(status|ping)$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; allow <IP-address-Cacti-server>; deny all; } |
1 |
# nginx –t |
1 |
# service nginx reload |
Локально с […]
Оптимизация Nginx+PHP-FPM
Оптимизация Nginx 1.Выставляем кол-во процессов Nginx равное кол-ву процессоров в системе.
1 |
# cat /proc/cpuinfo | grep processor | wc –l |
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 |
[...] worker_processes 1; worker_priority -3; [...] |
Максимальное количество соединений одного рабочего процесса. Следует выбирать значения от 1024 до 4096. Метод выбора соединений . Для Linux – epoll, для FreeBSD — kqueue. Ngix будет принимать максимально возможное количество соединений.
1 2 3 4 5 |
events { worker_connections 1024; use epoll; multi_accept on; } |
2. Включаем sendfile, tcp_nopush, tcp_nodelay, отключаем показ версии […]
Установка и настройка Nginx+PHP-FPM на Debian
Загружаем и устанавливаем ключ, которым подписаны пакеты и репозитарий nginx
1 |
# wget http://nginx.org/keys/nginx_signing.key |
1 |
# apt-key add nginx_signing.key |
Добавляем в
1 |
/etc/apt/sources.list |
Для Debian-Wheezy
1 2 |
deb http://nginx.org/packages/debian/ wheezy nginx deb-src http://nginx.org/packages/debian/ wheezy nginx |
Для Debian-Squeeze
1 2 |
deb http://nginx.org/packages/debian/ squeeze nginx deb-src http://nginx.org/packages/debian/ sqeeze nginx |
1 |
# apt-get update |
1.Установка и настройка Nginx
1 |
# apt-get install nginx |
1 |
# sysv-rc-conf --level 2345 nginx on |
1 |
# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf~ |
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
user nginx; worker_processes 1; #число равно количеству процессов на сервере #cat /proc/cpuinfo | grep processor | wc -l worker_priority -5; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; access_log off; #restricting on numbers of connection from one ip-adress limit_conn_zone $binary_remote_addr zone=connections:10m; limit_conn_log_level notice; #limit_conn connections 15; #restricting numbers of connection per second from one ip-adress limit_req_zone $binary_remote_addr zone=requests:10m rate=5r/s; limit_req_log_level warn; #limit_req zone=requests burst=10; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; keepalive_timeout 65; types_hash_max_size 2048; gzip on; gzip_static on; gzip_comp_level 5; gzip_min_length 1024; gzip_proxied any; gzip_vary on; gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json; gzip_disable "msie6"; open_file_cache max=5000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_connect_timeout 90; fastcgi_send_timeout 90; fastcgi_read_timeout 90; client_max_body_size 128m; client_body_buffer_size 16K; index index.php index.html; include /etc/nginx/conf.d/*.conf; } |
1 |
# nano /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
server { listen 192.168.1.72:80 default_server; server_name localhost; root /usr/share/nginx/html; location / { #root /usr/share/nginx/html; try_files $uri $uri/ /index.php?$args; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { #root /usr/share/nginx/html; try_files $uri =404; fastcgi_split_path_info ^(.+?\.php)(/.*)?$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; deny all; } location = /favicon.ico { log_not_found off; access_log off; allow all; } location = /robots.txt { access_log off; log_not_found off; } } |
Настройка конфигурационных файлов виртуальных хостов Nginx(содержание в конце статьи)
1 |
# nano /etc/nginx/conf.d/joomla.uk.conf |
1 |
# nano /etc/nginx/conf.d/wordpress.uk.conf |
1 |
# nano /etc/nginx/conf.d/kamaok.uk.conf |
1 |
# nginx –t |
1 |
# /etc/init.d/nginx restart |
1 |
# tail -f /var/log/nginx/error.log |
Установка и настройка […]
Установка и настройка Nginx+PHP-FPM на FreeBSD
1.Установка и настройка Nginx cd /usr/ports/www/nginx make install clean cd /usr/local/etc/nginx/ cp nginx.conf nginx.conf~ nano nginx.conf (см.ниже) nginx –t mkdir -p /var/tmp/nginx/client_body_temp mkdir -p /var/log/nginx nano conf.d/joomla.to.conf (см.ниже) nano conf.d/wordpress.to.conf (см.ниже) htpasswd -c .htpasswd tom htpasswd .htpasswd bob Создаем символьную ссылку phpmyadmin для phpMyAdmin’а ln -s /usr/local/www/phpMyAdmin /usr/local/www/apache22/data/phpmyadmin /usr/local/www/apache22/data/ — это DocumentRoot для сервера по […]
Установка и настройка Nginx+PHP-FPM(FastCGI Process Manager) на Centos 6/7
Установка и настройка Nginx+PHP—FPM(FastCGI Process Manager) на Centos 6/7 Имеем три виртуальных хоста с дом.каталогами в разных пользователях joomla.us (/home/user/joomla/joomla.us) wordpress.us (/home/user/wordpress/wordpress.us) kamaok.us (/home/user/kamaok/kamaok.us) Будет создано три php-fpm пула — по отдельному пулу для каждого пользователя, под которыми и будет работать php-fpm. 1.Установка Nginx Centos 7 Либо rpm —import http://nginx.org/keys/nginx_signing.key rpm -ivh […]