forked from librenms/librenms-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
/
phpfpmsp
146 lines (133 loc) · 4.04 KB
/
phpfpmsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#!/usr/bin/env bash
# add this to snmpd.conf as below... actual path to the script can vary
# extend phpfpmsp /root/snmp-extends/phpfpm-sp
#
# The location is is irrelevant. It just needs to be executable,
# have access to curl, and be reachable by the snmpd.
#
# You can check it via...
# snmpget -v 2c -c public localhost .1.3.6.1.4.1.8072.1.3.2.3.1.2.8.112.104.112.102.112.109.115.112
# which should print out... actual values will very...
# NET-SNMP-EXTEND-MIB::nsExtendOutputFull."phpfpmsp" = STRING: www
# 11/Feb/2017:18:45:43 -0600
# 189514
# 178516
# 0
# 0
# 0
# 2
# 1
# 3
# 20
# 13
# 0
#
# In order the returned values are.
#
# pool
# start_time
# start_since
# accepted_conn
# listen_queue
# max_listen_queue
# listen_queue_len
# idle_processes
# active_processes
# total_processes
# max_active_processes
# max_children_reached
# slow_requests
# the URL to fetch, change as needed
url="http://localhost/status?full"
opts="-Ss"
# netdata
# real-time performance and health monitoring, done right!
# (C) 2016 Costa Tsaousis <[email protected]>
# GPL v3+
#
# Contributed by @safeie with PR #276
# Modified to work as a SNMP extend by Zane C. Bowers-Hadley
#declare -A phpfpm_urls=()
#declare -A phpfpm_curl_opts=()
# _update_every is a special variable - it holds the number of seconds
# between the calls of the _update() function
#phpfpm_update_every=
#phpfpm_priority=60000
declare -a phpfpm_response=()
phpfpm_pool=""
phpfpm_start_time=""
phpfpm_start_since=0
phpfpm_accepted_conn=0
phpfpm_listen_queue=0
phpfpm_max_listen_queue=0
phpfpm_listen_queue_len=0
phpfpm_idle_processes=0
phpfpm_active_processes=0
phpfpm_total_processes=0
phpfpm_max_active_processes=0
phpfpm_max_children_reached=0
phpfpm_slow_requests=0
# local opts="${1}" url="${2}"
# shellcheck disable=SC2207
phpfpm_response=($(curl "${opts}" "${url}"))
[ $? -ne 0 ] || [ "${#phpfpm_response[@]}" -eq 0 ] && exit 1
if [[ "${phpfpm_response[0]}" != "pool:" \
|| "${phpfpm_response[2]}" != "process" \
|| "${phpfpm_response[5]}" != "start" \
|| "${phpfpm_response[12]}" != "accepted" \
|| "${phpfpm_response[15]}" != "listen" \
|| "${phpfpm_response[16]}" != "queue:" \
|| "${phpfpm_response[26]}" != "idle" \
|| "${phpfpm_response[29]}" != "active" \
|| "${phpfpm_response[32]}" != "total" \
]]
then
echo "invalid response from phpfpm status server: ${phpfpm_response[*]}"
exit 1;
fi
phpfpm_pool="${phpfpm_response[1]}"
phpfpm_start_time="${phpfpm_response[7]} ${phpfpm_response[8]}"
phpfpm_start_since="${phpfpm_response[11]}"
phpfpm_accepted_conn="${phpfpm_response[14]}"
phpfpm_listen_queue="${phpfpm_response[17]}"
phpfpm_max_listen_queue="${phpfpm_response[21]}"
phpfpm_listen_queue_len="${phpfpm_response[25]}"
phpfpm_idle_processes="${phpfpm_response[28]}"
phpfpm_active_processes="${phpfpm_response[31]}"
phpfpm_total_processes="${phpfpm_response[34]}"
phpfpm_max_active_processes="${phpfpm_response[38]}"
phpfpm_max_children_reached="${phpfpm_response[42]}"
if [ "${phpfpm_response[43]}" == "slow" ]; then
phpfpm_slow_requests="${phpfpm_response[45]}"
else
phpfpm_slow_requests="-1"
fi
if [[ -z "${phpfpm_pool}" \
|| -z "${phpfpm_start_time}" \
|| -z "${phpfpm_start_since}" \
|| -z "${phpfpm_accepted_conn}" \
|| -z "${phpfpm_listen_queue}" \
|| -z "${phpfpm_max_listen_queue}" \
|| -z "${phpfpm_listen_queue_len}" \
|| -z "${phpfpm_idle_processes}" \
|| -z "${phpfpm_active_processes}" \
|| -z "${phpfpm_total_processes}" \
|| -z "${phpfpm_max_active_processes}" \
|| -z "${phpfpm_max_children_reached}" \
]]; then
echo "empty values got from phpfpm status server: ${phpfpm_response[*]}"
exit 1
fi
echo "$phpfpm_pool"
echo "$phpfpm_start_time"
echo "$phpfpm_start_since"
echo "$phpfpm_accepted_conn"
echo "$phpfpm_listen_queue"
echo "$phpfpm_max_listen_queue"
echo "$phpfpm_listen_queue_len"
echo "$phpfpm_idle_processes"
echo "$phpfpm_active_processes"
echo "$phpfpm_total_processes"
echo "$phpfpm_max_active_processes"
echo "$phpfpm_max_children_reached"
echo $phpfpm_slow_requests