自己动手打造solarwinds netpermon 的短信告知功能
solarwinds 性能监控系统是款非常实用的网络设备监控系统,给我日常的管理带来很大的方便,一直在思考如何利用短信来实现告警的功能,在坛子中各位兄弟的帮助和提醒下,知道需要购买相关的插件或者第三方的软件是实现邮件告转到短信,对此本人一直念念不忘,希望找到另外一种办法,昨天突发奇想,竟然给我解决这里这个问题,解决的思路如下:
solarwinds 性能监控系统是款非常实用的网络设备监控系统,给我日常的管理带来很大的方便,一直在思考如何利用短信来实现告警的功能,在坛子中各位兄弟的帮助和提醒下,知道需要购买相关的插件或者第三方的软件是实现邮件告转到短信,对此本人一直念念不忘,希望找到另外一种办法,昨天突发奇想,竟然给我解决这里这个问题,解决的思路如下:
1. solarwinds netpermon 的sql 数据库中有个events 表,我主要就是想利用这个表来做文章,这个events 表记录着整个监控系统发生的各种事件,事件类型字段为eventtype ,参看了另外一个叫eventtype的表,里面有多种固定的事件类型,然后在events 表里面新建了一个触发器,当在events 表中新增加一条记录是,触发器就被触发,选择部分字段的信息写入到另外一张预先设计的要的表tellme ,在这个过程中我对events 表的记录触发做了一些限制,指定发生某几种事件的时候,才触发。由于原先events 表中的message 字段是text类型,在处理过程比较复杂,最后就冒险尝试修改了它的类型为nvchar 。我主要取出了events 中的eventtime ,message 这两个字段的信息到tellme表:tellme 包括(mobile,occurtime,content, author)四个字段,mobile 是短信要接受的手机号码,occurtime 是事件发生的事件,content是从message 获得,author 是发送人),经过测试,触发器触发正常。
CREATE TRIGGER insertTellme ON Events
FOR INSERT
AS
declare @occurtime datetime
declare @contnet varchar(6000)
select @occurtime =eventtime ,@contnet =message from inserted where eventtype in (1,8,10,15,17,23,1002,100)
insert tellme(mobile,content,occurtime) values(’1396828′,@contnet,@occurtime)
FOR INSERT
AS
declare @occurtime datetime
declare @contnet varchar(6000)
select @occurtime =eventtime ,@contnet =message from inserted where eventtype in (1,8,10,15,17,23,1002,100)
insert tellme(mobile,content,occurtime) values(’1396828′,@contnet,@occurtime)
2.利用我原先的短信modem 和一个轮询程序对tellme表进行轮询,当tellme表中有记录时就发送一条短信,然后删除记录,进测试完全可以。
后记; 对netpermon 数据库里面的有些表还不清楚,比如alter 信息是如何暂存,还有node with problem 这个信息是如何生成,还不清楚,希望熟悉的兄弟指导一下!
转载于:https://blog.51cto.com/ziyan/169947