自定义脚本中不能使用"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
#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."
#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."
#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
#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."
#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."
#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."
#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."
#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."
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24751738/viewspace-707279/
,如需转载,请注明出处,否则将追究法律责任。