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、查看启用状态、验证监控是否准确