]> jfr.im git - munin-plugins.git/blob - php_fpm
support for a 2nd unbound plugin
[munin-plugins.git] / php_fpm
1 #!/bin/sh
2 # -*- sh -*-
3
4 : << =cut
5
6 =head1 NAME
7
8 php_fpm - Plugin to show PHP-FPM status
9
10 =head1 MAGIC MARKERS
11
12 #%# family=auto
13 #%# capabilities=autoconf
14
15 =cut
16
17 . "${MUNIN_LIBDIR:-/usr/share/munin}/plugins/plugin.sh"
18
19 URL="${URL:-http://localhost/fpm?json}"
20 CURL_OPTS="${CURL_OPTS:---location} --silent"
21
22 if [ "$1" = "autoconf" ]; then
23 if ! command -v curl >/dev/null 2>&1; then
24 echo "no (no curl)"
25 exit 0
26 fi
27 if ! command -v jq >/dev/null 2>&1; then
28 echo "no (no jq)"
29 exit 0
30 fi
31 if ! curl --fail $CURL_OPTS $URL >/dev/null 2>&1; then
32 echo "no (curl $CURL_OPTS $URL failed)"
33 exit 0
34 fi
35 echo yes
36 exit 0
37 fi
38
39 if [ "$1" = "config" ]; then
40
41 echo 'multigraph php_fpm_workers'
42 echo 'graph_title PHP-FPM workers'
43 echo 'graph_args --base 1000 -l 0 '
44 echo 'graph_scale no'
45 echo 'graph_vlabel # workers'
46 echo 'graph_category php'
47 echo 'total.label Total workers'
48 echo 'total.draw AREA'
49 echo 'total.colour ffd660'
50 echo 'idle.label Idle workers'
51 echo 'active.label Active workers'
52 echo 'max.label Max reached'
53 echo 'max.info Max reached since start'
54 echo 'max.colour 000000'
55
56 echo 'multigraph php_fpm_connections'
57 echo 'graph_title PHP-FPM Connections'
58 echo 'graph_args --base 1000 -l 0'
59 echo 'graph_scale no'
60 echo 'graph_vlabel Connections/second'
61 echo 'graph_category php'
62 echo 'rate.label Connection rate'
63 echo 'rate.type DERIVE'
64 echo 'rate.min 0'
65
66 echo 'multigraph php_fpm_slow'
67 echo 'graph_title PHP-FPM Slow requests'
68 echo 'graph_args --base 1000 -l 0'
69 echo 'graph_scale no'
70 echo 'graph_vlabel # since start'
71 echo 'graph_category php'
72 echo 'requests.label Slow requests'
73
74 echo 'multigraph php_fpm_queue'
75 echo 'graph_title PHP-FPM Listen queue'
76 echo 'graph_args --base 1000 -l 0'
77 echo 'graph_scale no'
78 echo 'graph_vlabel Queue size'
79 echo 'graph_category php'
80 echo 'current.label Current'
81 echo 'max.label Highest'
82 echo 'len.label Capacity'
83 echo 'len.draw AREA'
84 echo 'len.colour ffd660'
85
86 exit 0
87 fi
88
89 jsonblob="$(curl $CURL_OPTS $URL)"
90 if ! echo "$jsonblob" | jq -e >/dev/null; then
91 echo 'multigraph php_fpm_workers'
92 echo 'total.value U'
93 echo 'idle.value U'
94 echo 'active.value U'
95 echo 'max.value U'
96
97 echo 'multigraph php_fpm_connections'
98 echo 'rate.value U'
99
100 echo 'multigraph php_fpm_slow'
101 echo 'requests.value U'
102
103 echo 'multigraph php_fpm_queue'
104 echo 'current.value U'
105 echo 'max.value U'
106 echo 'len.value U'
107
108 exit 0
109 fi
110
111 echo 'multigraph php_fpm_workers'
112 echo "idle.value $(echo "$jsonblob" | jq '."idle processes"')"
113 echo "active.value $(echo "$jsonblob" | jq '."active processes"')"
114 echo "total.value $(echo "$jsonblob" | jq '."total processes"')"
115 echo "max.value $(echo "$jsonblob" | jq '."max active processes"')"
116
117 echo 'multigraph php_fpm_connections'
118 echo "rate.value $(echo "$jsonblob" | jq '."accepted conn"')"
119
120 echo 'multigraph php_fpm_slow'
121 echo "requests.value $(echo "$jsonblob" | jq '."slow requests"')"
122
123 echo 'multigraph php_fpm_queue'
124 echo "current.value $(echo "$jsonblob" | jq '."listen queue"')"
125 echo "max.value $(echo "$jsonblob" | jq '."max listen queue"')"
126 echo "len.value $(echo "$jsonblob" | jq '."listen queue len"')"