mirror of
				https://github.com/librenms/librenms-agent.git
				synced 2024-05-09 09:54:52 +00:00 
			
		
		
		
	add a single pool php-fpm net-snmpd extend poller (#83)
This commit is contained in:
		
							
								
								
									
										148
									
								
								snmp/phpfpm-sp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								snmp/phpfpm-sp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,148 @@
 | 
			
		||||
#!/usr/local/bin/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
 | 
			
		||||
		Reference in New Issue
	
	Block a user