Nagios插件脚本大致可以分为两类,一类是判断某个对象是否存在(如进程),另一类是判断某个对象是否处于一定范围(处于某个范围,状态正常“OK”;处于某个大一些的范围,状态警告“Warning;处于某个更大一些的范围,严重警告“Critical”)。Nagios通过脚本退出状态码(0,1,2,3)来确定返回正常或者警告或者严重警告。其中“0”代表正常,“1”代表警告,“2”代表严重警告,“3”代表未知。下边分别举例说明,供大家参考。
◎检查日志文件是否生成(check_logfile)。仅需退出状态码“0”和“2”,没有中间状态,脚本内容如下:
#!/bin/bash
#AUTHOR:sery
#Date: 2021-07-13
#E-mail:sery@163.com
#VX:formyz
source /etc/profile
cd /data/logs
logfile=$1
if [[ -f $logfile ]]
then
echo “$logfile is OK!”
exit 0
else
echo “$logfile is not exist!”
exit 2
fi
手动执行脚本,检查其有效性。
[root@haproxy168 ~]# ./is_logfile haproxy.log
“haproxy.log is OK!”
[root@haproxy168 ~]# ./is_logfile haproxy.lo
“haproxy.lo is not exist!”
◎检查日志文件大小(check_logsize)。小于等于4G正常“OK”,大于4G且小于8G警告“Warning”,大于8G严重警告“Critical”。
#!/bin/bash
#AUTHOR:sery
#Date: 2021-07-13
#E-mail:sery@163.com
#VX:formyz
source /etc/profile
cd /data/logs
logfile=$1
is_logsize_GB=`du -hs $logfile |awk '{print $1}'|grep G|wc -l`
if [[ $is_logsize_GB -eq 1 ]]
then
logsize=`du -hs $logfile |awk '{print $1}'|sed s/G//|awk -F . '{print $1}'`
if [[ $logsize -le 4 ]]
then
echo “$logsize is OK!”
exit 0
elif [[ $logsize -gt 4 ]] && [[ $logsize -le 8 ]]
then
echo “$logsize\G is Warning!”
exit 1
else
echo “$logsize is Critical!”
exit 2
fi
else
logsize=`du -hs $logfile |awk '{print $1}'`
echo “$logsize is OK!”
exit 0
fi
手动自行脚本check_logsize,验证该脚本的有效性。
[root@haproxy168 ~]# ./check_logsize /data/logs/haproxy.log
“8G is Warning!”
[root@haproxy168 ~]# >/data/logs/haproxy.log
[root@haproxy168 ~]# ./check_logsize /data/logs/haproxy.log
“64M is OK!”