#!/bin/sh # -*- sh -*- : << =cut =head1 NAME php_fpm - Plugin to show PHP-FPM status =head1 MAGIC MARKERS #%# family=auto #%# capabilities=autoconf =cut . "${MUNIN_LIBDIR:-/usr/share/munin}/plugins/plugin.sh" URL="${URL:-http://localhost/fpm?json}" CURL_OPTS="${CURL_OPTS:---location} --silent" if [ "$1" = "autoconf" ]; then if ! command -v curl >/dev/null 2>&1; then echo "no (no curl)" exit 0 fi if ! command -v jq >/dev/null 2>&1; then echo "no (no jq)" exit 0 fi if ! curl --fail $CURL_OPTS $URL >/dev/null 2>&1; then echo "no (curl $CURL_OPTS $URL failed)" exit 0 fi echo yes exit 0 fi if [ "$1" = "config" ]; then echo 'multigraph php_fpm_workers' echo 'graph_title PHP-FPM workers' echo 'graph_args --base 1000 -l 0 ' echo 'graph_scale no' echo 'graph_vlabel # workers' echo 'graph_category php' echo 'total.label Total workers' echo 'total.draw AREA' echo 'total.colour ffd660' echo 'idle.label Idle workers' echo 'active.label Active workers' echo 'max.label Max reached' echo 'max.info Max reached since start' echo 'max.colour 000000' echo 'multigraph php_fpm_connections' echo 'graph_title PHP-FPM Connections' echo 'graph_args --base 1000 -l 0' echo 'graph_scale no' echo 'graph_vlabel Connections/second' echo 'graph_category php' echo 'rate.label Connection rate' echo 'rate.type DERIVE' echo 'rate.min 0' echo 'multigraph php_fpm_slow' echo 'graph_title PHP-FPM Slow requests' echo 'graph_args --base 1000 -l 0' echo 'graph_scale no' echo 'graph_vlabel # since start' echo 'graph_category php' echo 'requests.label Slow requests' echo 'multigraph php_fpm_queue' echo 'graph_title PHP-FPM Listen queue' echo 'graph_args --base 1000 -l 0' echo 'graph_scale no' echo 'graph_vlabel Queue size' echo 'graph_category php' echo 'current.label Current' echo 'max.label Highest' echo 'len.label Capacity' echo 'len.draw AREA' echo 'len.colour ffd660' exit 0 fi jsonblob="$(curl $CURL_OPTS $URL)" if ! echo "$jsonblob" | jq -e >/dev/null; then echo 'multigraph php_fpm_workers' echo 'total.value U' echo 'idle.value U' echo 'active.value U' echo 'max.value U' echo 'multigraph php_fpm_connections' echo 'rate.value U' echo 'multigraph php_fpm_slow' echo 'requests.value U' echo 'multigraph php_fpm_queue' echo 'current.value U' echo 'max.value U' echo 'len.value U' exit 0 fi echo 'multigraph php_fpm_workers' echo "idle.value $(echo "$jsonblob" | jq '."idle processes"')" echo "active.value $(echo "$jsonblob" | jq '."active processes"')" echo "total.value $(echo "$jsonblob" | jq '."total processes"')" echo "max.value $(echo "$jsonblob" | jq '."max active processes"')" echo 'multigraph php_fpm_connections' echo "rate.value $(echo "$jsonblob" | jq '."accepted conn"')" echo 'multigraph php_fpm_slow' echo "requests.value $(echo "$jsonblob" | jq '."slow requests"')" echo 'multigraph php_fpm_queue' echo "current.value $(echo "$jsonblob" | jq '."listen queue"')" echo "max.value $(echo "$jsonblob" | jq '."max listen queue"')" echo "len.value $(echo "$jsonblob" | jq '."listen queue len"')"