转载于:http://njulinq.blog.51cto.com/1257169/291044
在上一篇中曾提到,在OpenNMS中有两种类型的事件,一种是OpenNMS内部产生的事件,而另外一种就是外部事件,如SNMP
Trap。OpenNMS中有个trapd服务专门负责接收SNMP Trap。而这是通过eventconf.xml文件中的<mask>元素来控制的:
- <event>
- <mask>
- <maskelement>
- <mename>id</mename>
- <mevalue>.1.3.6.1.4.1.9.9.70.2</mevalue>
- </maskelement>
- <maskelement>
- <mename>generic</mename>
- <mevalue>6</mevalue>
- </maskelement>
- <maskelement>
- <mename>specific</mename>
- <mevalue>17</mevalue>
- </maskelement>
- </mask>
- <uei>http://uei.opennms.org/vendor/Cisco/traps/ciscoC3800SysAggregateStatusChange</uei>
- <event-label>CISCO-C3800-MIBdefinedtrapevent:ciscoC3800SysAggregateStatusChange</event-label>
- <descr>&lt;p&gt;Notificationthattheaggregatestatusofanode
- haschanged.&lt;/p&gt;&lt;table&gt;
- &lt;tr&gt;&lt;td&gt;&lt;b&gt;
- c3800SysNextTrapSeqNum&lt;/b&gt;</td&gt;&lt;td&gt;%parm[#1]%
- &lt;/td&gt;&lt;td&gt;&lt;p;&gt;</p&gt;&lt;/td;&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;
- sysName&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%parm[#2]%
- &lt;/td&gt;&lt;td&gt;&lt;p;&gt;&lt;/p&gt;&lt;/td;&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;
- c3800SysTrapSeverity&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%parm[#3]%
- &lt;/td&gt;&lt;td&gt;&lt;p;&gt;
- clear(1)minor(2)major(3)&lt;/p&gt;
- &lt;/td;&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;
- c3800SysAggregateStatus&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%parm[#4]%
- &lt;/td&gt;&lt;td&gt;&lt;p;&gt;
- clear(1)minor(2)major(3)</p>
- &lt;/td;&gt;&lt;/tr&gt;&lt;/table&gt;
- </descr>
- <logmsgdest='logndisplay'><p>CiscoEvent:C3900:NodeStatushaschanged.</p></logmsg>
- <severity>Indeterminate</severity>
- </event>
这是针对Cisco C3800设备的一个事件,该事件看起来与OpenNMS的内部事件很像,不过比内部事件多了个<mask>元素。<mask>又是由一系列的<maskelement>元素构成的。只有当定义的所有<maskelement>都匹配时,才会生成该事件。
对于上面这个例子而言,对于一个企业OID(id)为.1.3.6.1.4.1.9.9.70.2,且generic的值为6,而specific值为17的snmp
trap才会匹配到该事件,从而产生该事件。
关于SNMP trap的具体内容可以参考RFC1157,这里重点讨论OpenNMS是怎么样将SNMP Trap映射到一个事件上的。
<mename>中的取值可以为以下几个之一:
-
uei
-
source
-
host
-
snmphost
-
nodeid
-
interface
-
service
-
id
-
specific
-
generic
-
community
另外还可以使用%作为通配符,如:
<mask>
<maskelement>
<mename>id</mename>
<mevalue>.1.3.6.1.4.1.9.%</mevalue>
</maskelement>
</mask>
这里就表示Cisco设备的所有SNMP Trap。
这里有个地方需要注意,就是OpenNMS在匹配SNMP Trap与eventconf.xml里面定义的事件时,当它匹配到第一个满足所有匹配调节的event后,就停止继续匹配,所以eventconf.xml文件中event定义的顺序非常重要。例如,如果我们把上面的带有通配符的事件定义在上面的ciscoC3800SysAggregateStatusChange事件之前,则ciscoC3800SysAggregateStatusChange事件
将永远不会被匹配到,从而也就永远不会发生。另外还有一点就是上面提到的通配符,其实只是简单的字符串替换的作用,相当于字串匹配。还是以.1.3.6.1.4.1.9.%为例,它只是会匹配以.1.3.6.1.4.1.9.开头的所有OID,而比如.1.3.6.1.4.1.9,则不会
被匹配,因为少了最后那个点。而如果我们去掉最后那个点,即变成.1.3.6.1.4.1.9%,如果有个OID为.1.3.6.1.4.1.99的事件,而又在这之后定义了.1.3.6.1.4.1.9%,则那么对于.1.3.6.1.4.1.9,则只会匹配到.1.3.6.1.4.1.99,而无法匹配到.1.3.6.1.4.1.9%。
OpenNMS中,对于有些事件,特别是SNMP Trap事件,还可以在事件中包含一些额外的信息,这些信息被称之为“variable bindings”或者简称为"varbinds"。在上述的ciscoC3800SysAggregateStatusChange事件中就包括了4个,这些信息可以通过parm元素访问它们。这些信息
其实就像事件的属性,它们由键值对组成,包括以下内容:
事件parm元素
参数名称 |
取值 |
%parm[all]%
|
将返回以空格隔开的所有参数名称及其取值,
如parmName1="parmValue1" parmName2="parmValue2
|
%parm[values-all]%
|
将返回以空格隔开的所有参数的取值,
如:parmValue1 parmValue2
|
%parm[names-all]%
|
将返回以空格隔开的所有参数的名称,
如:parmName1 parmName2
|
%parm[<name>]%
|
如果包含有以<name>为名称的属性,则返回该属性的值 |
%parm[##]%
|
返回属性的个数 |
%parm[#<num>]%
|
返回第<num>个参数的值 |
%parm[name-#<num>]%
|
返回第<num>个参数的名称 |
以ciscoC3800SysAggregateStatusChange事件为例,在该事件的描述中列出了该事件所有的参数,所以对于第2个参数,
即sysName,则可以通过%parm[#2]来访问其值并打印出来。我们既然可以访问这些值,自然也可以通过这些值进一步对SNMP Trap进行过滤,在下一篇文章中将介绍如果通过varbinds对SNMP Trap进一步进行匹配。
分享到:
相关推荐
7. **事件处理和通知**:OpenNMS的核心功能之一是事件处理,包括触发警报、执行自动化操作和发送通知。这些功能基于复杂的规则引擎实现。 8. **服务监测**:通过Ping、SMTP、HTTP等协议检查网络服务的可用性,确保...
openNMS1.6.5源码,最新稳定的版本。OpenNMS是第一个开发在开源模式下的企业级网络管理平台应用。OpenNMS的目标是成为一个真真的分布式、可升级的网络管理平台,尽管它看似一个FCAPS网络管理模型,使之可用于开放...
1. **核心框架**:这部分代码构建了openNMS的基础,包括事件处理、通知服务、数据采集等核心模块。这些模块通过模块化设计,实现了对网络监控的全面覆盖。 2. **SNMP支持**:由于SNMP(简单网络管理协议)在企业级...
"opennms-source.tar.gz_SNMP_openNMS"这个压缩包,便是OpenNMS源码的载体,它包含了使用SNMP(简单网络管理协议)进行网络监控和管理所需的所有组件。 SNMP,全称Simple Network Management Protocol,是一种广泛...
2. **事件处理**:系统记录所有监控事件,并通过邮件、短信或集成其他通知方式将报警信息传递给管理员。 3. **故障恢复确认**:当故障解决后,OpenNMS会进行恢复确认,避免发出不必要的重复报警。 五、报告与分析 ...
OpenNMS-Helm是基于OpenNMS监控系统的Grafana插件,它能够扩展Grafana的功能,以适应更复杂的网络监控需求。OpenNMS-Helm的安装和配置涉及到多个步骤,包括系统的前置安装条件、安装OpenNMS-Helm、启动服务、启用...
standalone-opennms-1.6.8.jar
OpenNMS-阈值-事件-生成器一种基于当前阈值设置生成良好阈值事件定义(和通知)的工具。 要编译该工具,请使用 Maven: mvn install这将生成一个带有依赖项的 JAR,以便能够轻松执行该工具,例如: java -jar ...
opennms 中文 http://www.qoswork.com OpenNMS 官方文档 https://qoswork.github.io/odoc/
OpenNMS Javascript API 用于访问OpenNMS网络监视平台的客户端API。 在代码中使用OpenNMS.js API 中提供了有关入门以及如何使用API的。 完整的API列表可在。 使用OpenNMS.js命令行 安装 运行npm install -g ...
) 使脚本可执行将通知命令添加到 $OPENNMS_HOME/etc/notificationCommands.xml 调用脚本。 (脚本头中有一个例子) 重启 OpenNMS 并登录导航到 Admin->Configure Notifications->Destination Paths 选择并升级,...
通过opennms-ksc-grafana,用户可以充分利用Grafana的可视化优势,对OpenNMS KSC的监控数据进行深度分析和展示,这对于网络运维团队来说,无疑是一种提升效率、优化工作流程的有效手段。无论是日常监控、问题排查,...
为了使用 OpenNMS Modules Manager,你需要先将其克隆或下载到本地,例如,你可以找到名为 "opennms-modules-manager-master" 的压缩包文件,解压后通过 Java 运行环境执行相应的脚本或命令。在执行前,确保你的系统...
本文将深入介绍如何在OpenNMS中配置邮件通知,让管理员能够通过邮件接收来自OpenNMS的事件通知。 首先,我们需要了解邮件服务器的配置。在OpenNMS中,邮件服务器的配置主要通过修改配置文件来实现。默认情况下,...
OpenNMS-IP-发现-供应-适配器可选的Provisioning Adapter,用于将IP接口的自动发现管理为非托管动机找到想要发现并持久存储数据库中所有IP接口,但仅主动监视受监控的服务的OpenNMS用户和操作员是很常见的,这些服务...
opennms-事件使用 Kibana 分析 opennms 事件安装(来自源码) 这是一条骆驼路线,因此它需要 Java、Maven 3、Elasticsearch 和可以访问 opennms 存储其数据的 postgres 数据库的数据库用户。 克隆这个存储库,然后 ...
厨师食谱,用于管理OpenNMS Horizon的安装和配置。 当前版本支持CentOS 6和7的发行版16、17、18、19、20、21、22、23、24、25、26。 版本号 从OpenNMS Horizon 16开始,该食谱版本的MSB与其支持的OpenNMS ...
OpenNMS-KSC至Grafana 将 KSC报表转换为仪表板。 已针对Grafana 4.x,5.x和6.x进行了测试; 尽管该工具仅在Grafana 5.x或更高版本上在标准输出上提供有关生成的仪表板的信息。 由于Grafana的工作方式不同,它不会...
OpenNMS集成API 该项目旨在通过引入一个稳定的接口来对其进行编写,从而使其更容易为OpenNMS编写插件和扩展。 然后,OpenNMS和Meridian的版本将实现API的至少一个主要版本。 特征 API的用户当前可以利用以下功能和...