This is an old revision of the document!
xymon-apisec-gw
| Author | Hap Nesbitt |
|---|---|
| Compatibility | Xymon 4.2 |
| Requirements | Perl, MySQL, unix, etc |
| Download | https://github.com/hapnesbitt/xymon-apisec-gw/blob/master/xymon-apisec-gw.sh |
| Last Update | 2020-06-09 |
Description
Written to custom alert on CA API GW IBDATA threshold. Extended to display output from many troubleshooting commands, stats and counters on one page.
Installation
Client side
Server side
Source
xymon-apisec-gw.sh
Show Code ⇲
Hide Code ⇱
#!/bin/sh
COLUMN=ITM-Custom # Name of the column
COLOR=green # By default, everything is OK
MSG="ITM-Custom on Linux"
# Do whatever you need to test for something
IBDATAMAX=`cat /etc/my.cnf | grep ibdata | grep -o '......$' | sed 's/[^0-9]*//g' `
DISKSPACE=`df -mP /dev/mapper/vg00-lv_db | sed '1d' | awk '{print $5}' | cut -d'%' -f1`
DISKSPACE2=`df -mP /dev/mapper/vg00-lv_db | sed '1d' | awk '{print $3}' | cut -d'%' -f1`
DISKSPACE3=`df -mP /dev/mapper/vg00-lv_db | sed '1d' | awk '{print $4}' | cut -d'%' -f1`
DISKSPACE4=`df -mP /dev/mapper/vg00-lv_log | sed '1d' | awk '{print $5}' | cut -d'%' -f1`
DISKSPACE5=`bc <<<"scale=2; $DISKSPACE2 / $IBDATAMAX"`
DISKSPACE6=`bc <<<"$DISKSPACE5 * 100"`
DISKSPACE7=`bc <<<"$DISKSPACE6 / 1"`
# MySQL capacity
IBDATAMAX=`cat /etc/my.cnf | grep ibdata | grep -o '......$' | sed 's/[^0-9]*//g' `
# Disk capacity threshold
ALERT=60
ALERT2=60
ALERT3=60
ALERT4=75
ALERT5=75
ALERT6=75
# As an example, go green if diskspace used is less than alert threshold
if [ $DISKSPACE -lt $ALERT ] && [ $DISKSPACE4 -lt $ALERT2 ] && [ $DISKSPACE7 -lt $ALERT3 ]
then
COLOR=green
echo "" > /tmp/diskstatus
echo " 0. Disk Alert " >> /tmp/diskstatus
echo " 1. Disk Report " >> /tmp/diskstatus
echo " 2. CPU Report" >> /tmp/diskstatus
echo " 3. Memory Report" >> /tmp/diskstatus
echo " 4. Network Report" >> /tmp/diskstatus
echo " 5. Environment Report" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 0. Disk Alert * " >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " If one of these three exceed 60% turn this page Yellow/Warn -- Over 75% turn Red/Panic" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " Current percentages used" >> /tmp/diskstatus
echo " IBDATA is ${DISKSPACE7}% used" >> /tmp/diskstatus
echo " DB partition ${DISKSPACE}% used" >> /tmp/diskstatus
echo " Log partion ${DISKSPACE4}% used" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " DISK Info" >> /tmp/diskstatus
echo " IBDATA MAX ${IBDATAMAX}M" >> /tmp/diskstatus
echo " ${DISKSPACE2}M of /var/lib/mysql used " >> /tmp/diskstatus
echo " ${DISKSPACE3}M of /var/lib/mysql available " >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " Threshold Info" >> /tmp/diskstatus
echo " Global DISK threshold Default in Xymon: Turn Yellow at 90% and Red at 95%" >> /tmp/diskstatus
echo " Custom DISK threshold set in analysis.cfg for APISEC GW boxes: Turn Yellow at 70% and Red at 85%" >> /tmp/diskstatus
echo " Custom ITM-Custom threshold set in this ITM-Custom script for specific Disk partitions: Turn Yellow at 60% and Red at 75%" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 1. Disk Report * " >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " Disk Free" >> /tmp/diskstatus
echo " df -mP" >> /tmp/diskstatus
df -mP >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Summary of Some Disk Statistics" >> /tmp/diskstatus
echo "vmstat -D" >> /tmp/diskstatus
vmstat -D >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 2. CPU Report *" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "top -b -n -1 " >> /tmp/diskstatus
top -b -n 1 >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Top Five CPU Using Processes" >> /tmp/diskstatus
echo "ps auxf | sort -nr -k 3 | head -6" >> /tmp/diskstatus
ps auxf | sort -nr -k 3 | head -6 >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Process Tree" >> /tmp/diskstatus
echo "pstree" >> /tmp/diskstatus
pstree >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 3. Memory Report *" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Active and Inactive Memory five second delay thrice" >> /tmp/diskstatus
echo "vmstat -a 5 3 " >> /tmp/diskstatus
vmstat -a 5 3 >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Free Memory" >> /tmp/diskstatus
echo "free -m " >> /tmp/diskstatus
free -m >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Top Five Memory Using Processes" >> /tmp/diskstatus
echo "ps auxf | sort -nr -k 4 | head -6" >> /tmp/diskstatus
ps auxf | sort -nr -k 4 | head -6 >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Event Counters and Memory Statistics" >> /tmp/diskstatus
echo "vmstat -s" >> /tmp/diskstatus
vmstat -s >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Meminfo Statistics" >> /tmp/diskstatus
echo "cat /proc/meminfo" >> /tmp/diskstatus
cat /proc/meminfo >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 4. Network Report *" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ss -s" >> /tmp/diskstatus
ss -s >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ss -l" >> /tmp/diskstatus
ss -l >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ip route" >> /tmp/diskstatus
ip route >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ip -s lin" >> /tmp/diskstatus
ip -s lin >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ip maddr" >> /tmp/diskstatus
ip maddr ls >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ifconfig" >> /tmp/diskstatus
ifconfig >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "ethtool eth0" >> /tmp/diskstatus
ethtool eth0 >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "netstat -s" >> /tmp/diskstatus
netstat -s >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo " * 5. Environment Report *" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "id" >> /tmp/diskstatus
id >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "env" >> /tmp/diskstatus
env >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "Redhat Release" >> /tmp/diskstatus
cat /etc/redhat-release >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "uptime" >> /tmp/diskstatus
uptime >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
MSG="${MSG}
`cat /tmp/diskstatus`
"
# As an example, go yellow if diskspace used is less than alert threshold
elif [ $DISKSPACE -lt $ALERT4 ] && [ $DISKSPACE4 -lt $ALERT5 ] && [ $DISKSPACE7 -lt $ALERT6 ]
then
COLOR=yellow
echo "" >> /tmp/diskstatus
echo -n "Your DB partition disk space is ${DISKSPACE}% used." > /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo -n "Your LOG partition disk space is ${DISKSPACE4}% used." >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo -n "Your IBDATA is ${DISKSPACE7}% used." >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
MSG="${MSG}
`cat /tmp/diskstatus`
This is an early warning sytem that turns Yellow at 60% used and Red at 75% used.
As a fire drill, the correct functioning of this Yellow Alert can be verified by temporarily setting the Alert threshold lower.
"
else
COLOR=red
echo "" >> /tmp/diskstatus
echo -n "Your DB partition disk space is ${DISKSPACE}% used." > /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo -n "Your LOG partition disk space is ${DISKSPACE4}% used." >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
echo -n "Your IBDATA is ${DISKSPACE7}% used." >> /tmp/diskstatus
echo "" >> /tmp/diskstatus
MSG="${MSG}
`cat /tmp/diskstatus`
This is an early warning sytem that turns Yellow at 60% used and Red at 75% used.
As a fire drill, the correct functioning of this Red Alert can be verified by temporarily setting the Alert threshold lower.
"
fi
# Tell Xymon about it
$XYMON $XYMSRV "status $MACHINE.$COLUMN $COLOR `date`
${MSG}
"
exit 0
Known Bugs and Issues
To Do
Credits
Changelog
- YYYY-MM-DD
- Initial release