CPU monitor
Problem this snippet solves:
Pull CPU utilization and use it with an external monitor
How to use this snippet:
I need to start by giving credit to the original post here.All I did was modify that script to match what I need it for. This is the first time I am using an external monitor and it was great to make it work so I thought i should share as someone else might need it. There is probably a better way to do this. If so please share. The original script was tackling CPU and memory utilization as this one is only looking at CPU. And in this particular case, I am taking in account all CPUs (2 of them) on the Box.
You'll have to start with creating a Read Only SNMP Community String that will be use to pull this Data.
Import the script from System/File Management/External Monitor Program File List
Create a new External monitor Local Traffic/Monitor and Type External
Select your previously uploaded script from External program
For Variables, enter DEBUG for name and Value will be the value you chose for "DEB" in the script.
Then you can apply your monitor to the node or pool you choose to.
Code :
#!/bin/sh # IPv6/IPv4 compatibility prefix (LTM passes addresses in IPv6 format) IP=`echo ${1} | sed 's/::ffff://'` PIDFILE="/var/run/`basename ${0}`.${IP}_${PORT}.pid" # kill of the last instance of this monitor if hung and log current pid if [ -f $PIDFILE ] then kill -9 `cat $PIDFILE` > /dev/null 2>&1 fi echo "$$" > $PIDFILE # send request & check for expected response #Replacewith your string that need read Only access to the server snmpwalk -v 2c -c ${IP} .1.3.6.1.2.1.25.3.3.1.2.1 > /var/tmp/monitor/cpu1_${IP}.log snmpwalk -v 2c -c ${IP} .1.3.6.1.2.1.25.3.3.1.2.2 > /var/tmp/monitor/cpu2_${IP}.log # mark node UP if expected response was received cpu1=`cat /var/tmp/monitor/cpu1_${IP}.log | cut -f4 -d" "` cpu2=`cat /var/tmp/monitor/cpu2_${IP}.log | cut -f4 -d" "` #Check the CPU threshold and make a decision on it # Replace with your desire CPU threshold # Replace with a number outside the range (0-100). This will allow the threshold to be caught and sent to monitor if [ "$cpu1" -le " " -a "$cpu2" -le " " ]; then echo "UP" rm -f $PIDFILE elif [ "$DEBUG" -eq " " ]; then echo "The threshold CPU has reached $cpu1 and $cpu2 for $IP - DOWN" | logger -p local0.debug rm -f $PIDFILE fi
Tested this on version:
11.6