注:此插件面向Cacti版本0.8.8h
本文的主角是Cacti,这是一款基于PHP的开源网络流量监测图形分析工具,同时,因其可以做到非常多自定义的监测项目,广受运维人员欢迎。
我们将介绍如何给Cacti设备监控系统添加短信报警,以便让运维人员及时收到设备故障报警,减少应急修复反应时间。
首先介绍完成短信报警需要接触到的两个主要程序,由Cacti的两个插件以及金笛短信Web中间件构成。
发送短信的任务由金笛短信Web中间件与金笛短信猫配合完成,下图为Web中间件的短信收发接口设置,仅需通过访问http接口,即可用Web中间件完成各类短信的收发。
而Cacti这边需要两个基本插件完成报警动作,其中Settings插件提供邮件发送接口,Thold插件提供阈值触发以及报警服务,我们只需要将这两个插件进行改造即可让Cacti拥有短信报警的功能。
Cacti的一般报警流程是这样的:Cacti部署到企业内网并添加需监控的服务器,在Thold插件中设置好报警阈值,即可在发生故障时触发Settings插件的邮件报警功能。
添加短信报警功能,我们需要做的是给settings插件添加短信处理代码块,可以实现通过金笛Web中间件发送短信报警,及时通知运维人员进行修复。
以下讲解如何给Cacti的Settings插件添加必要的代码,为Cacti添加短信报警功能,具体实施步骤如下:
1、 在settings插件的目录(\cacti\plugins\settings\)下找到setup.php和include目录下的mailer.php两个文件,分别对这两个文件进行如下修改
(1) setup.php(添加管理菜单)
将菜单代码构造如下
修改之后的效果如图,已基本将调用所有需要配置的内容囊括,而且可以在之后的代码中直接调用其值。
(2) mailer.php添加核心代码(用于发送短信的代码)
核心代码用于调用短信中间件web接口通信,可以放在mailer.php内的Mailer类中,命名为send_sms(),原理是用php的原生cURL直接调用web中间件的http接口,之后在插件中调用$Mailer->send_sms()即可实现通过中间件发短信的功能。
由于代码直接调了Cacti自带的配置文本,修改配置也非常方便。
在实际实施中我们添加了较多的判定,以保证Cacti能正确让Web中间件发送短信,以防止通讯中出错,出现漏发或Cacti崩溃的情况发生,也添加了debug记录,可以在测试中及时发现问题.
(3) mailer.php添加调用代码(发邮件同时发短信)
此文件需要更改的部分非常少,只需要在调用发邮件的方法_send_mail()之后添加调用短信发送的方法,即可调用上一步在mailer.php中构造的发短信方法来发送短信。
以上一系列配置避免了一个问题:有些插件没有根据settings文档中写的推荐方式去调用settings/includes/functions.php中的发邮件方法,比如settings插件和thold插件原作者Jimmy Conner,直接在需要发邮件的地方include(mailer.php),不通过functions.php中的发邮件方法,也避免了有些时候测试时一切正常,但是实施后漏收短信的问题。
当然,也有客户不想所有通知都发短信,觉得短信太多无法体现出通知短信的重要性。可以按照以下步骤进行代码改造:
1. 在需要发短信的Cacti插件中(比如thold的轮询功能polling),找到其调用发邮件的语句;
2. 在发邮件的代码中找到邮件正文的变量名;
3. 在调用邮件语句之后再调用一次Mailer类的send_sms()方法,将邮件正文发给这个方法;
4. 测试是否能正确调用该代码。
这样,Cacti就有了发送短信的功能,如果需要定制Cacti的发短信功能或者其他软件的发短信功能,也可以直接联系我们(400 050 1096),同时非常感谢您的阅读!
插件下载:plugins