zabbix自定义监控


项目需求:监控日志查看,文件上传是否成功,并通过zabbix监控

1、提取日志信息,持续将上传状态覆盖写入状态码日志

#!/bin/bash
#version 1.0 by zhangkui
#for 检测SMSMTupdate上传状态

que() {
today=`date +%Y-%m-%d`
#定义日志目录
logdir="/home/mtv/app/dmm/log"
#查看20分钟修改过的dmm日志
logfile=`find ${logdir}/ -name dmm.${today}* -type f -mmin -20`

#判断是否有dmm日志是否有修改,如果没有修改则退出
if [ ! -n "$logfile" ];then
        echo "3:dmm日志没有更新" >${logdir}/SMSMTupdate_status.log 
else
        #查看最后一次下载文件的行号
        lineno=`cat -n ${logfile} | grep '下载文件'| tail -1| awk '{print$1}'`
        #echo $lineno
        sleep 15
        #行号+2后判断改行是否有存储库编号"storeMsg Num"
        let updatesuccesslineno=lineno+2
        storeMsg=`cat ${logfile}  | awk "NR==$updatesuccesslineno"`
        #echo ${storeMsg}
        echo ${storeMsg}  | grep "下载文件">/dev/null 
        if [ $? -ne 0 ];then
                echo "0" >${logdir}/SMSMTupdate_status.log
        else
                echo "2:dmm日志中没有上传文件"  >${logdir}/SMSMTupdate_status.log
        fi
fi
}
while :
do
que 
done

2、创建反馈给zabbix数据的脚本(提取信息脚本执行时间比较长,直接加入zabbix键值,报错响应时间过长不可用)

#!/bin/bash
#version 1.0 by zhangkui
#for 检测SMSMTupdate上传状态
ps -ef| grep -v grep | grep SMSMTup_select.sh>/dev/null
[ $? -ne 0 ] && echo "404"&& exit 
status=`cat /home/mtv/app/dmm/log/SMSMTupdate_status.log `
echo $status

3、编辑zabbix_agent配置文件

vi zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

cat <<-EOF  >userparameter_SMSMTupdate.conf 

UserParameter=SMSMTupdate.status,/home/mtv/script/SMSMTup.sh

EOF

重启zabbix_agentd

systemctl restart zabbix_agentd

systemctl status zabbix_agentd

4、创建zabbix监控项

主机-模板--应用集--监控项--触发器

创建监控项:选择键值对的时候,需要手动输入userparameter_SMSMTupdate.conf文件中的UserParameter的值。

创建触发器:

    表达式:{sms_status:SMSMTupdate.status.last()}<>0

告警设置:创建动作--操作

5、查看启用状态、验证监控是否准确