nagios钉钉报警与邮件报警

发布日期:2019-07-01

 

由于公司需求,要有一个监控,并且可以钉钉、邮件报警,我就做了。虽然,我是tester,因为公司暂时没运维,我兼职了。

前提条件:

* 已经装好naigos,但没配置报警

* 需要linux下有python环境,并且安装requests第三方库

 

 

首先,我先感概一下这nagios的配置真有点麻烦,而且没有说明文档参考,靠自己慢慢摸索,当时是搞了很久。不过,挺强大的,这个工具,什么命令都可以自己配置。

1、在commands.cfg文件,配置一下报警命令

python /usr/local/nagios/etc/objects/police_host.py "$NOTIFICATIONTYPE$" "$HOSTADDRESS$" "$HOSTNAME$" "$SERVICEDISPLAYNAME$" "$SERVICEDESC$" "$LONGDATETIME$" "$SERVICEOUTPUT$"

2、把dindin-bj-host这个命令加到联系人和联系人组中去(即contacts.cfg和contactgroups.cfg)

修改contacts.cfg

修改contactgroups.cfg

3、然后传入报警参数(nagios可用宏),自定义报警函数再调用即可,在police-service.py文件中

自定义报警函数:

dindin-对应钉钉

SendTextMailParameterization-对应邮件报警,后面我会补充一下为什么不能sendEmail(一个邮件发送程序)发送邮件,而是自己写。

3.1 传入报警参数

 

3.2 自定义报警函数-钉钉报警

3.3 自定义报警函数-邮件报警

3.4 导入基础包,代码部分到这里基本完成了

4、开始执行代码,先测试一下  python   目录/police_host.py  11 22 33 44 55 66 77

执行代码

钉钉报警内容

邮件报警内容

 

 

 

5、因为,我是在window上写代码的,而监控主机在linux。还的迁移一下到服务器,并测试一下。同样的测试命令执行,结果为下图1,不要怀疑。这是对的。因为那个时间nagios并不会报警,nagios报警是有个时间段,每隔多少分钟

才会报警,所以,那个时间的报警参数(nagios可用宏)就不会有。那么就等待15分钟把(我设置的是15分钟发送一次报警信息),就会有结果了,参考下图2和3

 

 

 

 

 

 

补充1   

钉钉报警webhook在群机器人管理那添加,然后点击设置就有了

 

 

补充2     

为什么不用sendEmail发送邮件呢?

其实,我刚开始装nagios,也是百度,百度说邮件报警可以用这个。但我发现,阿里云服务器禁用了25端口,连接时总会提示超时。然后用我994端口,也是提示超时。所以,就得找原因。一般连接超时,都是出外网有问题。所有就ping smtphm.qiye.163.com,可以通。再telnet一下端口,发现只有994端口可用,25端口被阿里云禁用了。根据我几个月写小代码的经验,这个994是加密端口,必须使用ssl。所以,我就sendEmail中搜索一下ssl,看一下是否支持,然后发现可用-0 tls=yes,但最终还是不行,说当前系统不支持。所以,我最终自己写个邮件程序,来发送。

Sendmail发送邮件提示超时

sendEmail发送加密提示不支持,需要安装xxx