]>
Commit | Line | Data |
---|---|---|
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 | ||
65 | echo 'multigraph php_fpm_slow' | |
66 | echo 'graph_title PHP-FPM Slow requests' | |
67 | echo 'graph_args --base 1000 -l 0' | |
68 | echo 'graph_scale no' | |
69 | echo 'graph_vlabel # since start' | |
70 | echo 'graph_category php' | |
71 | echo 'requests.label Slow requests' | |
72 | ||
73 | echo 'multigraph php_fpm_queue' | |
74 | echo 'graph_title PHP-FPM Listen queue' | |
75 | echo 'graph_args --base 1000 -l 0' | |
76 | echo 'graph_scale no' | |
77 | echo 'graph_vlabel Queue size' | |
78 | echo 'graph_category php' | |
79 | echo 'current.label Current' | |
80 | echo 'max.label Highest' | |
81 | echo 'len.label Capacity' | |
82 | echo 'len.draw AREA' | |
83 | echo 'len.colour ffd660' | |
84 | ||
85 | exit 0 | |
86 | fi | |
87 | ||
88 | jsonblob="$(curl $CURL_OPTS $URL)" | |
89 | if ! echo "$jsonblob" | jq -e >/dev/null; then | |
90 | echo 'multigraph php_fpm_workers' | |
91 | echo 'total.value U' | |
92 | echo 'idle.value U' | |
93 | echo 'active.value U' | |
94 | echo 'max.value U' | |
95 | ||
96 | echo 'multigraph php_fpm_connections' | |
97 | echo 'rate.value U' | |
98 | ||
99 | echo 'multigraph php_fpm_slow' | |
100 | echo 'requests.value U' | |
101 | ||
102 | echo 'multigraph php_fpm_queue' | |
103 | echo 'current.value U' | |
104 | echo 'max.value U' | |
105 | echo 'len.value U' | |
106 | ||
107 | exit 0 | |
108 | fi | |
109 | ||
110 | echo 'multigraph php_fpm_workers' | |
111 | echo "idle.value $(echo "$jsonblob" | jq '."idle processes"')" | |
112 | echo "active.value $(echo "$jsonblob" | jq '."active processes"')" | |
113 | echo "total.value $(echo "$jsonblob" | jq '."total processes"')" | |
114 | echo "max.value $(echo "$jsonblob" | jq '."max active processes"')" | |
115 | ||
116 | echo 'multigraph php_fpm_connections' | |
117 | echo "rate.value $(echo "$jsonblob" | jq '."accepted conn"')" | |
118 | ||
119 | echo 'multigraph php_fpm_slow' | |
120 | echo "requests.value $(echo "$jsonblob" | jq '."slow requests"')" | |
121 | ||
122 | echo 'multigraph php_fpm_queue' | |
123 | echo "current.value $(echo "$jsonblob" | jq '."listen queue"')" | |
124 | echo "max.value $(echo "$jsonblob" | jq '."max listen queue"')" | |
125 | echo "len.value $(echo "$jsonblob" | jq '."listen queue len"')" |