1.如何编写检测脚本编写Nagios的插件可以使用PERL、SHELL、Python等脚本语音,管理员可以根据自身情况选择
一种来使用。
2.Nagios插件编写条件Nagios插件的脚本或执行程序必须(至少)要做两件事:
一是退出时给出几种可能的返回值中的一个。Nagios用插件的返回值来生成主机或服务的状态。下表里列出了合法的返回值以及对应的服务
或主机状态。
插件返回值 服务状态 主机状态0 正常(OK) 运行(UP)
1 告警(WARNING) 运行(UP)或宕机(DOWN)/不可达(UNREACHABLE)*
2 紧急(CRITICAL) 宕机(DOWN)/不可达(UNREACHABLE)
3 未知(UNKNOWN) 宕机(DOWN)/不可达(UNREACHABLE)
二是至少要给出一条输出内容到标准输出设备(STDOUT)。例如:DISKOK-freespace:/3326MB(56%);
3.检测脚本存放目录#cd/usr/local/nagios/libexec/
所有的检测脚本都放在该目录下。
4.规划编写一个监控Linux内存的插件#free -m
- # free -m
-
total used free shared buffers cached
-
Mem: 2026 1784 241 0 167 1103
-
-/+ buffers/cache: 514 1512
-
Swap: 4094 180 3913
第一行的total值:系统内存总值
第二行的free值:系统可用内存值
系统可用内存值/ 系统内存总值,所得的百分比为目前系统可用的内存百分比。
# vi /usr/local/nagios/libexec/check_mem
- #!/bin/bash
-
#from network
-
#This Nagios plugin can be checked your system memory status
-
USAGE_Method="$(basename $0) [-w|--warning] [-c|--critical]"
-
USAGE_Value="WARNING value must be large than CRITICAL value:`basename $0` $*"
-
STATE_OK=0
-
STATE_WARNING=1
-
STATE_CRITICAL=2
-
STATE_UNKNOWN=3
-
-
#设置Nagios要求的状态
-
if [ $# -lt 4 ];then
-
echo
-
echo "Usage:$USAGE_Method"
-
echo
-
exit 0
-
fi
-
-
while [ $# -gt 0 ];do
-
case "$1" in
-
-w|--warning)
-
shift
-
WARNING=$1
-
;;
-
-c|--critical)
-
shift
-
CRITICAL=$1
-
;;
-
esac
-
shift
-
done
-
-
if [[ $WARNING -eq $CRITICAL || $WARNING -lt $CRITICAL ]]
-
then
-
echo
-
echo "$USAGE_Value"
-
echo
-
echo "Usage:$USAGE_Method"
-
echo
-
exit 0
-
fi
-
-
#取当前没使用的内存,注意是未使用!
-
FREE_MEM=$(free -m|grep -|awk -F' ' '{print $4}')
-
#取当前系统总内存
-
TOTAL_MEM=$(free -m|grep Mem|awk -F' ' '{print $2}')
-
#使用bc输出百分比
-
PERCENT=$( bc<<<"scale=2;621/977"|tr '^.' ' ')
-
-
#如果监测百分比小于等于用户设置的严重错误值,返回2
-
if [ $PERCENT -le $CRITICAL ];then
-
echo "CRITICAL - $FREE_MEM MB ($PERCENT%) Free Memory"
-
exit 2
-
fi
-
-
#如果百分比小于等于用户设置的警告值就警告并返回1
-
if [ $PERCENT -le $WARNING ];then
-
echo "WARNING - $FREE_MEM MB ($PERCENT%) Free Memory"
-
exit 1
-
fi
-
-
#如果百分比大于用户设置的警告值就输出OK返回0
-
if [ $PERCENT -gt $WARNING ];then
-
echo "OK - $FREE_MEM MB ($PERCENT%) Free Memory"
-
exit 0
-
fi
5.测试插件5.1 本地测试#cd /usr/local/nagios/libexec/
#chmod +x /usr/local/nagios/libexec/check_mem
#./check_mem
Usage:check_mem.sh [-w|--warning]
[-c|--critical]
##./check_mem -w 30-c 20
OK - 1547 MB ( 63%) Free Memory
5.2 服务器端测试
1>修改客户端的nrpe.confg
#vi/usr/local/nagios/etc/nrpe.cfg
添加:
command[check_mem]=/usr/local/nagios/libexec/check_mem -w 20 -c 10
2>修改服务器端的服务定义文件
vi /usr/local/nagios/etc/objects/services.cfg
- defineservice{
-
host_name Nagios-Client
-
service_description check-mem
-
check_period 24x7
-
max_check_attempts 4
-
normal_check_interval 3
-
retry_check_interval 2
-
contact_groups sagroup
-
notification_interval 10
-
notification_period 24x7
-
notification_options w,u,c,r
-
check_command check_nrpe!check_mem
-
}
3>重新加载Nagios
#/etc/init.d/nagiosreload
Runningconfigurationcheck...done.
Reloadingnagiosconfiguration...done
4>登陆验证
省略
阅读(2887) | 评论(0) | 转发(1) |