Articles on: Plugins

Monitoring PHP-FPM


Metrics

The following metrics are submitted to Nixstats.


  • Accepted connections (per second, total)
  • Active processes
  • Total processes
  • Idle processes
  • Max active processes
  • Listen queue
  • Listen queue length
  • Max listen queue
  • Max children reached
  • Start time
  • Start since
  • Pool
  • Process manager
  • Slow requests


Dependencies

  • urllib2
  • json


PHP-FPM status page

To enable the PHP-FPM status page add the following code to your PHP-FPM pool configuration file.


``pm.status_path = /status_phpfpm``
Now make the following changes to your NGiNX configuration file.


``
server {
listen 127.0.0.1:8080;
server_name localhost;
location /status_phpfpm {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
}
``


Or for Apache edit etc/apache2/mods-available/fastcgi.conf (or similar):


<IfModule mod_fastcgi.c>
# Define a named handler
AddHandler php7-fcgi .php
# Generate an alias pointing to /usr/lib/cgi-bin/php[VersionNumber]-fcgi
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
# Configure an external server handling your upcoming requests (note where the alias is pointing towards)
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization

# only on if fpm-status is match. You might want to put this into your concrete vhost.conf file. For the testing, fastcgi.conf should work.
<LocationMatch "/status_phpfpm">
Order deny,allow
Deny from all
Allow from 127.0.0.1
# set the before defined handler here
SetHandler php7-fcgi
# use the handler for the action handling virtual requests
Action php7-fcgi /php7-fcgi virtual
</LocationMatch>
</IfModule>


You can test if the status page is working by running
wget -qO- http://127.0.0.1:8080/status_phpfpm?json


Configure the plugin

To enable the plugin edit the nixstats configuration file. This file is usually located at /etc/nixstats.ini.


Add the following settings to the end of the file.
``
[phpfpm]
enabled = yes
status_page_url = http://127.0.0.1:8080/status_phpfpm?json
``


Test to see if the plugin is working by running nixstatsagent --test phpfpm. It should show the following metrics:


``
phpfpm:
{
"accepted_conn": 3015,
"accepted_conn_per_second": 0.0,
"active_processes": 1,
"idle_processes": 0,
"listen_queue": 0,
"listen_queue_len": 128,
"max_active_processes": 1,
"max_children_reached": 0,
"max_listen_queue": 1,
"pool": "www",
"process_manager": "ondemand",
"slow_requests": 0,
"start_since": 294686,
"start_time": 1492504250,
"total_processes": 1
}
``
Now you can restart the agent service nixstatsagent restart to start monitoring PHP-FPM.

Updated on: 28/02/2019

Was this article helpful?

Share your feedback

Cancel

Thank you!