ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Nagios check_mk AIX 个人定义检查

Nagios check_mk AIX 个人定义检查

原创 Linux操作系统 作者:tomshenhao 时间:2011-09-13 14:31:09 0 删除 编辑
自定义脚本中不能使用"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博客 ” ,链接:http://blog.itpub.net/24751738/viewspace-707279/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Linux 计划任务
请登录后发表评论 登录
全部评论

注册时间:2011-07-14

  • 博文量
    260
  • 访问量
    394005