Cómo habilitar y monitorear el estado de PHP-FPM en Nginx


PHP-FPM (FastCGI Process Manager) es una implementación alternativa de PHP FastCGI que viene con una serie de características adicionales útiles para sitios web de cualquier tamaño, particularmente sitios que reciben mucho tráfico.

Se usa comúnmente en la pila LEMP (Linux Nginx MySQL/MariaDB PHP); Nginx usa PHP FastCGI para servir contenido HTTP dinámico en una red. Se está utilizando para atender millones de solicitudes PHP para cientos de sitios web en servidores web en Internet.

Una de las características útiles de php-fpm es la página de estado incorporada, que puede ayudarlo a monitorear su salud. En este artículo, mostraremos cómo habilitar la página de estado de PHP-FPM en Linux.

Cómo habilitar la página de estado de PHP-FPM en Linux

Primero abra el archivo de configuración php-fpm y habilite la página de estado como se muestra.

$ sudo vim /etc/php-fpm.d/www.conf 
OR
$ sudo vim /etc/php/7.2/fpm/pool.d/www.conf	#for PHP versions 5.6, 7.0, 7.1

Dentro de este archivo, busque y descomente la variable pm.status_path u003d/status como se muestra en la captura de pantalla.

Guarde los cambios y salga del archivo.

A continuación, verifique que no haya errores en el archivo de configuración PHP-FPM ejecutando el siguiente comando.

$ sudo php-fpm -t
OR
$ sudo php7.2-fpm -t

Luego reinicie el servicio PHP-FPM para aplicar los cambios recientes.

$ sudo systemctl restart php-fpm
OR
$ sudo systemctl restart php7.2-fpm

A continuación, edite el archivo de configuración del bloque de servidor predeterminado (host virtual) y agregue el bloque de ubicación a continuación. Por ejemplo, en el sistema de prueba, el archivo de configuración del bloque de servidor predeterminado es /etc/nginx/conf.d/default.conf, para el sitio test.lab.

$ sudo vim /etc/nginx/conf.d/default.conf 

Aquí está el bloque de ubicación que se agregará. En esta configuración, solo permitimos el acceso al estado del proceso PHP-FPM dentro del localhost usando la directiva allow 127.0.0.1 por razones de seguridad.

location ~ ^/(status|ping)$ {
        allow 127.0.0.1;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass   unix:/var/run/php7.2-fpm.sock;
}

Guarde el archivo y ciérrelo.

Luego reinicie el servidor Nginx para aplicar los cambios anteriores.

$ sudo systemctl restart nginx

Ahora abra un navegador y escriba la URL http://test.lab/status para ver el estado de su proceso PHP-FPM.

Alternativamente, use el programa curl de la siguiente manera, donde el indicador -L especifica la ubicación de la página.

$ curl -L http://test.lab/status

De forma predeterminada, la página de estado solo imprime un resumen o un estado breve. Para ver el estado de cada proceso de grupo, pase "completo" en la cadena de consulta, por ejemplo:

http://www.foo.bar/status?full

Puede definir el formato de salida (JSON, HTML o XML) como se muestra.

http://www.foo.bar/status?json&full
http://www.foo.bar/status?html&full
http://www.foo.bar/status?xml&full

A continuación se muestran los valores devueltos en el estado completo de php-fpm, para cada proceso:

  • pid - PID del proceso.
  • estado del proceso de estado (inactivo, en ejecución, etc.).
  • hora de inicio: fecha y hora en que comenzó el proceso.
  • comenzar desde: número de segundos desde que comenzó el proceso.
  • solicitudes: número de solicitudes que ha atendido el proceso.
  • duración de la solicitud: duración en µs de las solicitudes.
  • método de solicitud: método de solicitud (GET, POST, etc.).
  • solicitud de URI: solicita la URI con la cadena de consulta.
  • longitud del contenido: longitud del contenido de la solicitud (solo con POST).
  • usuario - usuario (PHP_AUTH_USER) (o "-" si no está configurado).
  • secuencia de comandos: secuencia de comandos principal llamada (o "-" si no está configurada).
  • CPU de la última solicitud:% cpu de la última solicitud consumida (tenga en cuenta que siempre es 0 si el proceso no está en estado inactivo).
  • memoria de la última solicitud: cantidad máxima de memoria consumida por la última solicitud (siempre es 0 si el proceso no está en estado inactivo).

¡Eso es todo por ahora! En este artículo, explicamos cómo habilitar la página de estado php-fpm en el servidor web Nginx. Utilice el formulario de comentarios a continuación para compartir sus pensamientos con nosotros.