近日领导要求配置 opennms,用来监控网络设备的状态,opennms的擅长利用snmp协议自动发现网段内的所有网络设备和服务器,并监控各个端口的状态及其上运行的服务器,对于不想在客户端上安装软件又想监控网络的人来说很方便。软件安装挺简单的,网上有很多教程,这里就不多说了,安装好之后指定一个网段,配置好snmp通信字符串,就会自动扫描并监控了,但是短信报警的配置网上大多都语焉不详,自己折腾了几天搞出来了,分享给大家:
一、短信发送脚本,首先当然是要有个可以发送短信的网关,编写shell脚本访问网关,这步的关键是shell脚本只有两个参数,第一个是号码,第二是短信内容,格式是这样的:shell文件名 #mobilenumber# #text message#,这个一定要注意,我一开始就是不知道参数如何传递的,怎么都配置不通,在命令行测试能否发送短信,sendsms "mobilenumber" "text message"
二、定义手机号码,进入opennms->Admin->Configure Users,Groups and Roles->Configure Users,配置你需要短信告警的用户,在Numeric PIN填写手机号码,注意这里,我之前填写了Telephone PIN 是不对的,也可以直接修改文件,opennms home dir/etc/users.xml
三、打开报警功能,进入opennms->Admin->Notification Status 改为ON,进入Admin->Configure Notifications,有三个子选项,Configure Event Notifications 配置触发告警的事件,我这里选择的是Node DOWN触发告警,短信内容是默认,也可以修改,Configure Destination Paths配置目标路径,也就是告警要发送给哪些人,ConfigurePath Outages配置一个关键IP地址,当Node Down的情况发生,系统会检测这个IP,如果这个IP没有响应,则不发送告警
四、配置XML文件,和告警有关的文件有四个,在etc目录下,destinationPaths.xml,notifd-configuration.xml,notifications.xml,notificationCommands.xml
1、destinationPaths.xml文件配置向哪些人发送通知,上面提到也可以在WEB界面配置,建议在web界面配置;
2、notifd-configuration.xml文件,为通知守护进程配置全局属性,如:处理事件队列和自动发现,默认即可,不需要修改;
3、notifications.xml文件,配置发送通知IP地址过滤规则,目标路径、主题、内容信息,如下表述一个节点DOWN时的通知配置:
<notification name="nodeDown" status="on" writeable="yes">
<uei xmlns="">uei.opennms.org/nodes/nodeDown</uei>
<rule xmlns="">(IPADDR != '*.*.*.*') & (isICMP | isSNMP | isHTTP | isFTP | isTelnet )</rule>
<destinationPath xmlns="">Messages</destinationPath>
<text-message xmlns="">All services are down on node %nodelabel%. New Outage records have 
been created and service level availability calculations will 
be impacted until this outage is resolved. 
</text-message>
<subject xmlns="">Notice #%noticeid%: node %nodelabel% down.</subject>
<numeric-message xmlns="">111-%noticeid%</numeric-message>
</notification>默认即可,也不用修改;
4、notificationCommands.xml文件,定义如何达成在desinationPaths.xml中所使用的各种配置通知方式,如我的短信配置如下:
<command binary="true">
<name>sms</name> #这里的name要和desinationPaths.xml文件中指定的 <command xmlns="">sms</command>一样
<execute>/opt/opennms/bin/sendsms</execute> #表示执行这个文件发送短信
<comment>messages send program</comment>
<argument streamed="false"> #表示发送的短信长度超出范围则分条发送
<switch>-np</switch>
</argument>
<argument streamed="false">
<switch>-tm</switch>
</argument>
</command>
五、最后重启opennms测试是否生效!