自定义脚本中不能使用"TAB"键,只能使用"SPACE”键来控制格式,否则会出错
主动监控存放路径:/nag/
服务器IP/plugins
被动监控存放路径:/usr/lib/check_mk_agent/local
Item | Name in File | Related File | Warning | Critical |
CPU 负载% | CPU load | AIX/check_mk_agent | 80 | 90 |
文件系统使用率% | File system usage | 80 | 90 | |
交换区使用率% | SWAP Monitor | AIX/plugins/local | 10 | 15 |
网络发送出错 | Network Transmit Errors | 1 | 5 | |
网络接收出错 | Network Receive Errors | 1 | 5 | |
某进程内存占用率% | Process Memory Usage | 20 | 30 | |
网络连通性 | Network Ping Loss Package | 25 | 50 | |
磁盘IO性能 | DISK I/O BUSY CHECK | 90 | 95 | |
Java进程CPU占用率% | JAVA Process CPU Usage | 50 | 70 | |
物理内存使用率 | Memory Monitor | 80 | 90 | |
系统日志监控 | system log | AIX/plugins/logwatch | N/A | N/A |
#!/bin/sh
#设置session语言
export LANG=en_US
export LANG=en_US
#JAVA Process CPU Usage
JAVA_LINE_NUM=`ps -ef|grep java|wc -l`
#如果没有记录
if [ "$JAVA_LINE_NUM" -le 1 ];then
JAVA_CPU_SUM=0
status=0
statustxt=OK
else
JAVA_i=1
JAVA_CPU_SUM=0
status=0
while [ "$JAVA_i" -le $JAVA_LINE_NUM ]; do
JAVA_j=$JAVA_i
JAVA_LINE_CONT=`ps -ef|grep java|tail -$JAVA_j|head -1`
JAVA_PID=`echo $JAVA_LINE_CONT|awk '{print $2}'`
JAVA_CPU_USAGE=`echo $JAVA_LINE_CONT|awk '{print $3}'|sed "s/%//"`
#如果没有JAVA_PID
if [ -z "$JAVA_PID" ]; then
$JAVA_CPU_USAGE=0
fi
JAVA_CPU_SUM=`echo "$JAVA_CPU_USAGE + $JAVA_CPU_SUM"|bc`
if [ $JAVA_CPU_SUM -lt 50 ];then
JAVA_i=`echo "$JAVA_i+1"|bc`
continue
elif [ $JAVA_CPU_SUM -lt 70 ];then
status=1
statustxt=WARNING
break
else
status=2
statustxt=CRITICAL
break
fi
done
if [ $status -eq 0 ]; then
status=0
statustxt=OK
fi
fi
echo "$status JAVA_Process_CPU_Usage CPU_USAGE=$JAVA_CPU_SUM;50;70 $statustxt - ${JAVA_CPU_SUM}% used by JAVA Process."
JAVA_LINE_NUM=`ps -ef|grep java|wc -l`
#如果没有记录
if [ "$JAVA_LINE_NUM" -le 1 ];then
JAVA_CPU_SUM=0
status=0
statustxt=OK
else
JAVA_i=1
JAVA_CPU_SUM=0
status=0
while [ "$JAVA_i" -le $JAVA_LINE_NUM ]; do
JAVA_j=$JAVA_i
JAVA_LINE_CONT=`ps -ef|grep java|tail -$JAVA_j|head -1`
JAVA_PID=`echo $JAVA_LINE_CONT|awk '{print $2}'`
JAVA_CPU_USAGE=`echo $JAVA_LINE_CONT|awk '{print $3}'|sed "s/%//"`
#如果没有JAVA_PID
if [ -z "$JAVA_PID" ]; then
$JAVA_CPU_USAGE=0
fi
JAVA_CPU_SUM=`echo "$JAVA_CPU_USAGE + $JAVA_CPU_SUM"|bc`
if [ $JAVA_CPU_SUM -lt 50 ];then
JAVA_i=`echo "$JAVA_i+1"|bc`
continue
elif [ $JAVA_CPU_SUM -lt 70 ];then
status=1
statustxt=WARNING
break
else
status=2
statustxt=CRITICAL
break
fi
done
if [ $status -eq 0 ]; then
status=0
statustxt=OK
fi
fi
echo "$status JAVA_Process_CPU_Usage CPU_USAGE=$JAVA_CPU_SUM;50;70 $statustxt - ${JAVA_CPU_SUM}% used by JAVA Process."
#Process Memory Usage
PROC_LINE_CONT=`ps vx |grep -v PID |sort -rn +6 |head -1`
PROC_PID=`echo $PROC_LINE_CONT|awk '{print $1}'`
PROC_MEM_USED=`echo $PROC_LINE_CONT|awk '{print $12}'`
if [ $PROC_MEM_USED -lt 20 ];then
status=0
statustxt=OK
elif [ $PROC_MEM_USED -lt 30 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Process_Memory_Usage PROC_MEM_USED=$PROC_MEM_USED;20;30 $statustxt - ${PROC_PID} used ${PROC_MEM_USED}% memory."
PROC_LINE_CONT=`ps vx |grep -v PID |sort -rn +6 |head -1`
PROC_PID=`echo $PROC_LINE_CONT|awk '{print $1}'`
PROC_MEM_USED=`echo $PROC_LINE_CONT|awk '{print $12}'`
if [ $PROC_MEM_USED -lt 20 ];then
status=0
statustxt=OK
elif [ $PROC_MEM_USED -lt 30 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Process_Memory_Usage PROC_MEM_USED=$PROC_MEM_USED;20;30 $statustxt - ${PROC_PID} used ${PROC_MEM_USED}% memory."
#DISK I/O BUSY CHECK
DISK_TOTAL_LINE=`iostat 1 1|wc -l`
#如果没有记录
if [ "$DISK_TOTAL_LINE" -eq 0 ];then
status=0
statustxt=OK
else
DISK_NUM=`echo "$DISK_TOTAL_LINE - 7"|bc`
DISK_i=1
status=0
while [ "$DISK_i" -le $DISK_NUM ]; do
DISK_j=$DISK_i
DISK_LINE_CONT=`iostat 1 1|tail -$DISK_j|head -1`
DISK_NAME=`echo $DISK_LINE_CONT|awk '{print $1}'`
DISK_IO_BUSY=`echo $DISK_LINE_CONT|awk '{print $2}'`
if [ $DISK_IO_BUSY -lt 90 ];then
status=0
statustxt=OK
DISK_i=`echo "$DISK_i+1"|bc`
elif [ $DISK_IO_BUSY -lt 95 ];then
status=1
statustxt=WARNING
DISK_i=`echo "$DISK_i+1"|bc`
else
status=2
statustxt=CRITICAL
DISK_i=`echo "$DISK_i+1"|bc`
fi
echo "$status DISK_$DISK_NAME I/0_USAG=$DISK_IO_BUSY $statustxt - ${DISK_NAME} Usage: ${DISK_IO_BUSY}%."
done
fi
DISK_TOTAL_LINE=`iostat 1 1|wc -l`
#如果没有记录
if [ "$DISK_TOTAL_LINE" -eq 0 ];then
status=0
statustxt=OK
else
DISK_NUM=`echo "$DISK_TOTAL_LINE - 7"|bc`
DISK_i=1
status=0
while [ "$DISK_i" -le $DISK_NUM ]; do
DISK_j=$DISK_i
DISK_LINE_CONT=`iostat 1 1|tail -$DISK_j|head -1`
DISK_NAME=`echo $DISK_LINE_CONT|awk '{print $1}'`
DISK_IO_BUSY=`echo $DISK_LINE_CONT|awk '{print $2}'`
if [ $DISK_IO_BUSY -lt 90 ];then
status=0
statustxt=OK
DISK_i=`echo "$DISK_i+1"|bc`
elif [ $DISK_IO_BUSY -lt 95 ];then
status=1
statustxt=WARNING
DISK_i=`echo "$DISK_i+1"|bc`
else
status=2
statustxt=CRITICAL
DISK_i=`echo "$DISK_i+1"|bc`
fi
echo "$status DISK_$DISK_NAME I/0_USAG=$DISK_IO_BUSY $statustxt - ${DISK_NAME} Usage: ${DISK_IO_BUSY}%."
done
fi
#SWAP Monitor
SWAP_ATM=`lsps -s|tail -1|awk '{print $2}'|sed "s/%//"`
if [ $SWAP_ATM -lt 10 ];then
status=0
statustxt=OK
elif [ $SWAP_ATM -lt 15 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Swap_used swap_atm=$SWAP_ATM;10;15 $statustxt - ${SWAP_ATM}% swap used."
SWAP_ATM=`lsps -s|tail -1|awk '{print $2}'|sed "s/%//"`
if [ $SWAP_ATM -lt 10 ];then
status=0
statustxt=OK
elif [ $SWAP_ATM -lt 15 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Swap_used swap_atm=$SWAP_ATM;10;15 $statustxt - ${SWAP_ATM}% swap used."
#Network Ping Loss Package
PING_LOSS=`ping 118.118.118.212 10 10|grep "packet loss"|awk '{print $7}'|sed "s/%//"`
#如果没有记录
if [ -z "$PING_LOSS" ];then
status=0
statustxt=OK
else
if [ $PING_LOSS -lt 25 ];then
status=0
statustxt=OK
elif [ $PING_LOSS -lt 50 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
fi
echo "$status Network_Ping_Loss_Package PING_LOSS=$PING_LOSS;25;50 $statustxt - ${PING_LOSS}% package lost."
PING_LOSS=`ping 118.118.118.212 10 10|grep "packet loss"|awk '{print $7}'|sed "s/%//"`
#如果没有记录
if [ -z "$PING_LOSS" ];then
status=0
statustxt=OK
else
if [ $PING_LOSS -lt 25 ];then
status=0
statustxt=OK
elif [ $PING_LOSS -lt 50 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
fi
echo "$status Network_Ping_Loss_Package PING_LOSS=$PING_LOSS;25;50 $statustxt - ${PING_LOSS}% package lost."
#Memory Monitor
MEM_FREE=`vmstat 1 1|tail -1|awk '{print $4}'`
#如果没有记录
if [ -z "$MEM_FREE" ];then
MEM_USED_PCT=0
status=0
statustxt=OK
else
MEM_TOTAL=`vmstat 1 1|grep System|awk '{print $NF}'|awk -F = '{print $2}'|awk -F MB '{print $1}'`
MEM_FREE=`echo "$MEM_FREE*4/1024"|bc`
MEM_USED_PCT=`echo "($MEM_TOTAL-$MEM_FREE)*100/$MEM_TOTAL"|bc`
if [ $MEM_USED_PCT -lt 80 ];then
status=0
statustxt=OK
elif [ $MEM_USED_PCT -lt 90 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
fi
echo "$status Memory_used Memory_used=$MEM_USED_PCT;80;90 $statustxt - ${MEM_USED_PCT}% Memory used."
MEM_FREE=`vmstat 1 1|tail -1|awk '{print $4}'`
#如果没有记录
if [ -z "$MEM_FREE" ];then
MEM_USED_PCT=0
status=0
statustxt=OK
else
MEM_TOTAL=`vmstat 1 1|grep System|awk '{print $NF}'|awk -F = '{print $2}'|awk -F MB '{print $1}'`
MEM_FREE=`echo "$MEM_FREE*4/1024"|bc`
MEM_USED_PCT=`echo "($MEM_TOTAL-$MEM_FREE)*100/$MEM_TOTAL"|bc`
if [ $MEM_USED_PCT -lt 80 ];then
status=0
statustxt=OK
elif [ $MEM_USED_PCT -lt 90 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
fi
echo "$status Memory_used Memory_used=$MEM_USED_PCT;80;90 $statustxt - ${MEM_USED_PCT}% Memory used."
#Network Transmit Errors
Net_Tra_Err=`entstat -d ent0|grep "Transmit Errors"|awk '{print $3}'`
if [ $Net_Tra_Err -lt 1 ];then
status=0
statustxt=OK
elif [ $Net_Tra_Err -lt 5 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Network_Transmit_Errors Net_Tra_Err=$Net_Tra_Err;1;5 $statustxt - ${Net_Tra_Err} Error Found."
Net_Tra_Err=`entstat -d ent0|grep "Transmit Errors"|awk '{print $3}'`
if [ $Net_Tra_Err -lt 1 ];then
status=0
statustxt=OK
elif [ $Net_Tra_Err -lt 5 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Network_Transmit_Errors Net_Tra_Err=$Net_Tra_Err;1;5 $statustxt - ${Net_Tra_Err} Error Found."
#Network Receive Errors
Net_Rec_Err=`entstat -d ent0|grep "Receive Errors"|awk '{print $3}'`
if [ $Net_Rec_Err -lt 1 ];then
status=0
statustxt=OK
elif [ $Net_Rec_Err -lt 5 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Network_Receive_Errors Net_Rec_Err=$Net_Rec_Err;1;5 $statustxt - ${Net_Rec_Err} Error Found."
Net_Rec_Err=`entstat -d ent0|grep "Receive Errors"|awk '{print $3}'`
if [ $Net_Rec_Err -lt 1 ];then
status=0
statustxt=OK
elif [ $Net_Rec_Err -lt 5 ];then
status=1
statustxt=WARNING
else
status=2
statustxt=CRITICAL
fi
echo "$status Network_Receive_Errors Net_Rec_Err=$Net_Rec_Err;1;5 $statustxt - ${Net_Rec_Err} Error Found."
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24751738/viewspace-707279/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24751738/viewspace-707279/