]>
Commit | Line | Data |
---|---|---|
3decc5d1 JR |
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' | |
0d8dd5f2 | 64 | echo 'rate.min 0' |
3decc5d1 JR |
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"')" |