mirror of
https://github.com/librenms/librenms-agent.git
synced 2024-05-09 09:54:52 +00:00
e3f3bd3efb
With the original shebang this script didn't work on Debian and Ubuntu machines. Using `/usr/bin/env bash` makes the script more portable.
149 lines
3.9 KiB
Bash
149 lines
3.9 KiB
Bash
#!/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=""
|
|
|
|
# netdata
|
|
# real-time performance and health monitoring, done right!
|
|
# (C) 2016 Costa Tsaousis <costa@tsaousis.gr>
|
|
# 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}"
|
|
|
|
phpfpm_response=($(curl -Ss ${opts} "${url}"))
|
|
[ $? -ne 0 -o "${#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
|