7月18日任务

20.23/20.24/20.25 告警系统邮件引擎
20.26 运行告警系统

把zabbix中的mail.py拷贝到shares子目录mail下的mail.py

回到mail目录,创建mail.sh (做告警收敛,目的是服务出现问题时不会连续不断的发告警邮件,而是通过一个计时器的计时范围代替,范围内不告警),并输入如下内容(当服务出现异常时才会调用mail.sh )

log是一个变量(参数1)(见之前的具体监控项名称,格式为$ip addr\监控项名)

t_s定义一个时间戳 t_s2 定义两个小时以前的时间戳

如果日志不存在,则需要创建日志 (且第一行为两个小时以前的时间戳t_s2)

t_s2再次赋值后,把当前时间的时间戳写入到/tmp/$log中 (其中t_s2的第一次赋值和t_s2的第二次赋值等同,如果日志本身存在,那t_s2就会覆盖前面的赋值)

定义一个变量v = [ $t_s-$t_s2];两个时间戳的比值差,echo $v 并做判断

如果系统没有出现问题,则不会执行mail.py中的告警脚本,也不会生成一个时间戳;如果出现问题,则每次都会生成一个时间戳,

如果比值差超过一个小时,则会调用mail.py,并生成一个新的$log.txt(类似于计数器)

如果比值差小于1小时,则继续判断

①如果$log.txt计数器不存在,则创建/tmp/$log.txt并echo"0"

定义两个新变量nu=cat /tmp/$log.txt nu2=$[$nu+1] 并把计数器的数值nu2写入到$log.txt中

当nu2>10的时候,则调用mail.py并输出trouble continues 10 min,并echo "0" 清空$log.txt

总结:场景一:当刚新装系统,没有执行过mail.sh;第一次告警会执行mail.sh;两个时间戳t_s, t_s2.两者之差为$v,以3600s为界,第一次告警(每分钟执行一次);当故障时间大于1小时,则执行mail.py,如果小于一小时则执行下面的代码,再次定义两个变量nu, nu2;echo $nu2>> /tmp/$log.txt,nu2=$[$nu1+1],相当于计数器,只有nu2超过10才会执行下面的脚本代码,提示故障已经持续10分钟,并不会执行mail.py把$1,$2,$3以邮件的形式发出(从而实现告警收敛)

场景二: 如果监控的项目,如502错误,持续2分钟后第3分钟恢复了,则计数器nu2=2,如果4~7分钟OK,第8分钟又开始出现502超出预设值

计数器并没有清空(只有预设的一小时以后计数器才会清空),也就是说本例中,t_s2和t_s两个时间戳的差值仅仅为6分钟,2分钟以内也在告警,但是没有发邮件,第3分钟业务恢复后,超过一小时再次发现业务异常,才会发邮件,并清空计时器,重新进入一个新的计时周期;不论系统是中途出现故障的时间多长,只要计数器在10以下(即10分钟,因为设置脚本执行为1分钟一次),都是会实现告警收敛

运行告警系统

sh -x mail.sh查看执行过程及排错 /usr/local/sbin/mon/bin/ 下的main.sh

vim ../conf/mon.conf,关闭502监控,502脚本无法执行(仅仅执行load)

在执行脚本sh -x main.sh中发现最后有exec字样,表示把后面的脚本放到../log/error.log中

  在调试的时候建议把main.sh中的正确和error.log这部分注释掉,如下图

再次执行脚本看Load成功

如果Load有问题,则执行mail.sh也需要发送3个参数

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值