NGINX PHP-FPM – включение PHP server-status

Опубликовано:

В связке NGINX+PHP-FPM  можно включить подробный вывод информации о выполняющихся скриптах PHP (для самого NGINX имеется другой модуль, в данном случае речь конкретно про PHP-FPM).

По-умолчанию он отключён, а пример и описание можно взять в файле

Настройки необходимо производить отдельно для каждого пула PHP-FPM.
Копируем строку pm.status_path = /status в файл пула, например — /etc/php5/fpm/pool.d/adminunix.ru.conf (или раскомментриуем, если уже есть), и перезапускаем службу:

# service php-fpm restart
Stopping php-fpm:                                          [  OK  ]
Starting php-fpm:                                          [  OK  ]

Настраиваем NGINX, в котором добавляем:

 location /status {
auth_basic_user_file /usr/local/hosting/www/.htpasswd;
auth_basic "Password-protected Area";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9003;
}

Если используется сокет, вместо TCP-порта – тогда последняя строка:

fastcgi_pass unix:/var/run/php-fpm.sock;
auth_basic нужна, что бы не давать всем подряд открывать страницу статуса.

Проверяем файл конфигурации и перезапускаем NGINX;

# nginx -t
 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful
# service nginx restart 
Stopping nginx:                                            [  OK  ]
 Starting nginx:                                            [  OK  ]

После чего – переходим на страницу статуса, где видим информацию:

pool:                 adminunix.ru
 process manager:      dynamic
 start time:           04/Oct/2014:22:39:10 +0300
 start since:          235
 accepted conn:        331
 listen queue:         0
 max listen queue:     0
 listen queue len:     128
 idle processes:       2
 active processes:     1
 total processes:      3
 max active processes: 2
 max children reached: 0

pool – имя пула;
process manager – тип Process Manager (pm — dynamic, static, ondemand);
start time – время запуска FPM (FastCGI Process Manager);
start since – время в секундах с момента запуска;
accepted conn – количество обработанных пулом запросов;
listen queue – количество запросов в очереди на обработку этим пулом, если количество > 0 – надо подумать об увеличении количества процессов;
max listen queue – максимальное количество запросов, которые были в очереди с момента запуска пула;
listen queue len – количество запросов в очереди к сокету;
idle processes – количество процессов в idle статусе;
active processes – количество активных процессов;
total processes – общее количество процессов (idle + active processes);
max active processes – максимальное количество активных процессов с момента запуска пула;
max children reached – максимальное количество дочерних потоков PHP-FPM с момента запуска, если количество >0 – есть смысл подумать об увеличении pm.max_children;
slow requests – количество  медленных запросов (должен быть включён slowlog).
По-умолчанию – status возвращает страницу в plain-text.

Что бы вызвать её в HTML – добавьте ?html:

http://adminunix.ru/status?html

Или в Json:

http://adminunix.ru/status?json

Для удобства парсинга данных, например скриптом на Python:

{"pool":"adminunix.ru","process manager":"dynamic","start time":1412451550,"start since":1219,"accepted conn":1685,"listen queue":0,"max listen queue":1,"listen queue len":128,"idle processes":0,"active processes":2,"total processes":2,"max active processes":3,"max children reached":0} 

Что бы вывести больше информации – добавьте ?full:

http://adminunix.ru/status?full

pool:                 adminunix.ru
 process manager:      dynamic
 start time:           03/Iul/2015:22:39:10 +0300
 start since:          402
 accepted conn:        571
 listen queue:         0
 max listen queue:     0
 listen queue len:     128
 idle processes:       0
 active processes:     2
 total processes:      2
 max active processes: 2
 max children reached: 0
************************
 pid:                  8361
 state:                Running
 start time:           03/Iul/2015:22:45:26 +0300
 start since:          36
 requests:             23
 request duration:     98
 request method:       GET
 request URI:          /status?full
 content length:       0
 user:                 setevoy
 script:               -
 last request cpu:     0.00
 last request memory:  0

Так же можно вызвать ?xml и комбинировать ?full с разными типами, например – ?json&full.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!