Check_php-fpm-status

Script: check_php-fpm-status

The check fetches several counters from php-fm-status page.

Requirements

  • wget
  • running PHP FPM service
  • enabled status page

To enable a status page as http://localhost/fpm-status.php

  • Set pm.status_path in your pool config eg. /etc/php/8.1/fpm/pool.d/www.conf
[www]
pm.status_path = /fpm-status.php
  • In your webservice config limit the access; here a snippet for Apache 2.4:
<Location /fpm-status.php>
  Require local
</Location>

Standalone installation

From this repository ypu need next to this script:

  • inc_pluginfunctions shared function for all IML checks written in bash

Syntax

> check_php-fpm-status -h
______________________________________________________________________

CHECK_PHP-FPM-STATUS
v1.1

(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3

https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_php-fpm-status.html
______________________________________________________________________

The check fetches several counters from php-fm-status page.

It shows a short service status in a single line and then the dump of the 
status page.
For performance data it echos:

    php-fpm-active     count of active workers (="Rrunning" + "Reading headers")
    php-fpm-maxactive  max active processes (sum of idle + running + reading)
    php-fpm-idle       count of workers in state "Idle"
    php-fpm-running    count of workers in state "Running"
    php-fpm-reading    count of workers in state "Reading headers"
    php-fpm-queue      count of items in the queue
    php-fpm-maxqueue   max listen queue
    php-fpm-slow       slow requests per min (since last execution of this check)
    php-fpm-speed      requests per min (since last execution of this check)

SYNTAX:
check_php-fpm-status [-u URL]

OPTIONS:

    -u  url to fpm status page  (optional; default: localhost/status)
    -h or --help   show this help.

PARAMETERS:

    None.

EXAMPLE:
check_php-fpm-status -u http://localhost/my-custom-fpm-statuspage.php

Examples

./check_php-fpm-status -u localhost/fpm-status.php returns

OK: PHP-FPM service: running: 1 .. active: 2 (max: 5) .. idle workers: 3 .. queue: 0 .. speed: 1 req per min ... slow: 0 req per min (0%; total: 0)
Workers:               Running: 1
               Reading headers: 1
                          Idle: 3

  Waiting for a worker (queue): 0 (max: 0)

--- Status of service
  "pool": "www"
  "process manager": "dynamic"
  "start time": 1692402233
  "start since": 479084
  "accepted conn": 10960
  "listen queue": 0
  "max listen queue": 0
  "listen queue len": 0
  "idle processes": 3
  "active processes": 2
  "total processes": 5
  "max active processes": 5
  "max children reached": 0
  "slow requests": 0

--- workers in state Running
{"pid":588192,"state":"Running","start time":1692856027,"start since":25290,"requests":197,"request duration":42053467,"request method":"GET","request uri":"/fpm-status.php?full&json","content length":0,"user":"-","script":"-","last request cpu":0,"last request memory":0}

 |php-fpm-active=2;;;0;0 php-fpm-maxactive=5;;;0;0 php-fpm-queue=0;;;0;0 php-fpm-maxqueue=0;;;0;0 php-fpm-slow=0;;;0;0 php-fpm-speed=1;;;0;0 php-fpm-idle=3;;;0;0 php-fpm-running=1;;;0;0 php-fpm-reading=1;;;0;0 

Graph

You can use the template https://git-repo.iml.unibe.ch/iml-open-source/icinga-graphite-templates/-/blob/master/iml_php-fpm-status.ini.