现在的位置: 首页 > 综合 > 正文

OpenNMS扩展 – 事件配置

2014年12月03日 ⁄ 综合 ⁄ 共 11057字 ⁄ 字号 评论关闭

OpenNMS扩展 - 事件配置

1.     概述(Overview

OpenNMS包括一个强有力的事件通知系统,OpenNMS管理事件通知的进程是eventd。主要有两种类型的事件:由OpenNMS内部产生的事件和通过外部的SNMP trap产生的事件。

当事件产生时,将会设置不同的参数,比如:事件描述,事件的log信息与严重级别,另外,通过eventconf.xml文件配置能够自动加载事件发送参数到一个外部的script.

OpenNMS的事件可以伴随一个通知,特别的事件可能通过页面或Email,SMS等方式发出一个通知。

2.     事件(Events

2.1 配置文件(Configuration File

事件配置的主要文件位于$OPENNMS_HOME/etc$OPENNMS_HOME/etc/events目录下(本例OPENNMS_HOME/usr/local/opennms/source/dist)。

2.1.1 eventconf.xml

这个文件定义通用事件识别码(Universal Event IdentifiersUEIs)以及它们的事件屏蔽(masks),描述,记录文件信息和严重程度。

<?xml version="1.0"?>

<events xmlns="http://xmlns.opennms.org/xsd/eventconf">

     <global>

              <security>

                       <doNotOverride>logmsg</doNotOverride>

                       <doNotOverride>operaction</doNotOverride>

                       <doNotOverride>autoaction</doNotOverride>

                       <doNotOverride>tticket</doNotOverride>

                       <doNotOverride>script</doNotOverride>

              </security>

     </global>

<event-file>/usr/local/opennms/source/dist/etc/events/SureTech.events.xml</event-file>

<event-file>/usr/local/opennms/source/dist/etc/events/3Com.events.xml</event-file>       

<event-file>/usr/local/opennms/source/dist/etc/events/Standard.events.xml</event-file>

        <event>

                <uei>MATCH-ANY-UEI</uei>

                <event-label>OpenNMS defined event: MATCH-ANY-UEI</event-label>

                <descr>

                        &lt;p&gt;This UEI will never be generated, but exists

                        so that notifications can match any UEI for a

                        particular filter rule. Useful to see all events for

                        a particular node via notifications.

                        &lt;/p&gt;

                </descr>

                <logmsg dest='logonly'>

                        MATCH-ANY-UEI event.

                </logmsg>

                <severity>Indeterminate</severity>

        </event>

<event-file>/usr/local/opennms/source/dist/etc/events/default.events.xml</event-file>

</events>

eventconf.xml包括内部事件与外部事件的配置,内部事件主要是OpenNMS的事件,外部事件是自定义的事件,如企业事件。外部事件主要是通过<event-file>标签引入。如引入SureTech企业的外部事件:

<event-file>/usr/local/opennms/source/dist/etc/events/SureTech.events.xml</event-file>

所有的事件由企业分开。当opennms启动时,每个企业事件配置文件会被载入,根据引入文件选择顺序载入,定义在eventconf.xml文件中的事件会被事先加载。最佳实践是将内部事件定义在eventconf.xml中。

注:在eventconf.xml最底端:

<event-file>/usr/local/opennms/source/dist/etc/events/default.events.xml</event-file>

这个文件包含通用缺省事件,要始终列在最后。

 

2.1.2 trapd-configuration.xml daemon

这个文件定义SNMP trap的埠口(port)

<?xml version="1.0"?>

<trapd-configuration snmp-trap-port="162" new-suspect-on-trap="true"/>

 

2.1.3 eventd-configuration.xml daemon

这个文件定义eventd的运行参数,TCPUDP端口,监听执行的线程数,下一个事件IDSocket是否设置超时及超时时间。

<EventdConfiguration

     TCPPort="5817"

     UDPPort="5817"

     receivers="5"

     getNextEventID="SELECT nextval('eventsNxtId')"

     socketSoTimeoutRequired="yes"

     socketSoTimeoutPeriod="3000">

</EventdConfiguration>

 

2.1.4 actiond-configuration.xml daemon

在事件(events)产生时所呼叫的外部程序称为(actions). 此文件设置控制最多可以同时执行的action数量, 以及等待action执行完毕回传结果的逾时值。

<?xml version="1.0"?>

<actiond-configuration

     max-outstanding-actions="10"

     max-process-time="120000">

</actiond-configuration>

2.1.5 events.archiver.properties, events-archiver-configuration.xml

       Event模块日志配置。

2.1.5自定义事件文件(企业事件)

如:建立SureTech.events.xml

<events>

     <!-- Start of SureTech Traps -->

     <!-- Start of SureTech MIB: SureTech-MIB -->

     <event>

              <mask>

                       <maskelement>

                                 <mename>id</mename>

                                 <mevalue>.1.3.6.1.4.1.888.1</mevalue>

                       </maskelement>

                       <maskelement>

                                 <mename>generic</mename>

                                 <mevalue>6</mevalue>

                       </maskelement>

                       <maskelement>

                                 <mename>specific</mename>

                                 <mevalue>1</mevalue>

                       </maskelement>

              </mask>

              <uei>

                       uei.opennms.org/vendor/SureTech/traps/SureTechCPUResourcesConsuemed

              </uei>

              <event-label>

                       SureTech-MIB defined trap event:

                       SureTechCPUResourcesExceedConsuemed

              </event-label>

              <descr>

                       &lt;p&gt;An ECC single-bit error has been corrected in one

                       of the memory modules&lt;/p&gt;&lt;table&gt; &lt;/table&gt;

              </descr>

              <logmsg dest='logndisplay'>

                       &lt;p&gt;SureTech Event: EEC Single-bit Error

                       Corrected.&lt;/p&gt;

              </logmsg>

              <severity>Normal</severity>

     </event>

 

     <event>

              <mask>

                       <maskelement>

                                 <mename>id</mename>

                                 <mevalue>.1.3.6.1.4.1.888.%</mevalue>

                       </maskelement>

                       <maskelement>

                                 <mename>generic</mename>

                                 <mevalue>6</mevalue>

                       </maskelement>

              </mask>

              <uei>

                       uei.opennms.org/vendor/SureTech/traps/EnterpriseDefault

              </uei>

              <event-label>

                       OpenNMS-defined trap event: SureTech EnterpriseDefault

              </event-label>

              <descr>

                       &lt;p&gt;This is the default event format used when an

                       enterprise specific event (trap) is received from a SureTech

                       device for which no format has been configured (i.e. no

                       event definition exists).&lt;/p&gt;

              </descr>

              <logmsg dest='logndisplay'>

                       Received unformatted enterprise event (enterprise:%id%

                       generic:%generic% specific:%specific%). %parm[##]% args:

                       %parm[all]%

              </logmsg>

              <severity>Indeterminate</severity>

     </event>

</events>

 

事件文件以<events>标记开始以</events>标记结束。

<mename>标签的值可能有如下值:

l         uei

l         source

l         host

l         snmphost

l         nodeid

l         interface

l         service

l         id

l         specific

l         generic

l         community

例子中的menname是取id,即企业OID=.1.3.6.1.4.1.888.1,generic值为6表现根据企业特定的MIB1来产生事件。

    Generictrap类型,共分为表4中的7种。

trap类型

名字

说明

0

coldStart

代理进行了初始化

1

warmStart

代理进行了重新初始化

2

linkDown

一个接口从工作状态变为故障状态

3

Linkup

一个接口从故障状态变为工作状态

4

authenticationFailure

SNMP管理进程接收到具有一个无效共同体的报文

5

egpNeighborLoss

一个EGP相邻路由器变为故障状态

6

enterpriseSpecific

代理自定义的事件,需要用后面的特定代码来指明

当使用上述类型235时,在报文后面变量部分的第一个变量应标识响应的接口。

Specific,是企业特定代码(specific-code)指明代理自定义的时间(若trap类型为6),否则为0

每一个企业事件配置文件中必须要全局事件放置最后,uei以定义企业的事件标签命名“路径”,如:

<uei>

                       uei.opennms.org/vendor/SureTech/traps/EnterpriseDefault

              </uei>

mask value可以使用“%”通配符表示所有的企业事件,如配合所有的SureTech(企业OID.1.3.6.1.4.1.888)事件:

              <mask>

                       <maskelement>

                                 <mename>id</mename>

                                 <mevalue>.1.3.6.1.4.1.888.%</mevalue>

                       </maskelement>

                       <maskelement>

                                 <mename>generic</mename>

                                 <mevalue>6</mevalue>

                       </maskelement>

              </mask>

eventd进程侦听端口5817 ,所以其他进程,甚至那些外部OpenNMS ,可以发送事件到系统中。该<security>标记表示,这些事件不能凌驾于行动的定义在eventconf.xml文件。这样,没有人有权限通过打开“autoaction”进入该OpenNMS机器,也就是说,以root权限在这个机器上才能自动发送事件权利。

本例子中,可通过snmptrap -v 2c -c public 192.168.6.13 "" .1.3.6.1.4.1.888.1.1 AgentManager发送一个SNMP Trap,这样就会在Manager上产生一个SureTech自定义的事件。

如下图所示:

 

2.2 内部事件(Internal Events

OpenNMS内部事件定义在eventconf.xml文件中,例如一个共同的事件: nodelostservice

<event>

  <uei>http://uei.opennms.org/nodes/nodeLostService</uei>

  <event-label>OpenNMS-defined node event: nodeLostService</event-label>

  <descr>

    &#38lt;p&#38gt;A %service% outage was identified on interface

    %interface%.&#38lt;/p&#38gt; &#38lt;p&#38gt;A new Outage record has been

    created and service level availability calculations will be

    impacted until this outage is resolved.&#38lt;/p&#38gt;

  </descr>

  <logmsg dest='logndisplay'>

          %service% outage identified on interface %interface%.

  </logmsg>

  <severity>Major</severity>

</event>

每一事件以<event>标记来定义。这个标记里面有不同的定义:

uei

通用事件标识符,用来唯一标识一个事件。注意:对于内部opennms的事件, uei直接由代码产生而不能修改。

event-label

以纯文本的方式对事件加标签,有时被用来在网页的用户界面。

descr

事件描述。可以嵌入HTML,如果您希望格式的描述更充分。请注意,有要素,如%interface% ,你就可以在该事件描述和日志消息。

logmsg

事件简短的描述或概要的说明。 “dest”属性,可以如下值:

l         logndisplay 记录事件在数据库中并在Web UI中显示。

l         logonly 记录事件在数据库中,但不显示它。

l         suppress 既不在数据库记录事件又不显示它。

l         donotpersist 不记录事件在数据库中,但仍然将它传送至opennms的后台程序是监听针对此类型的活动(例如:这可以用来产生通知)。

l         discardtraps 这仅适用于陷阱。这将导致trapd抛弃的陷阱,没有创造一个事件。其他opennms的后台程序是监听针对此类型的事件将不会收到此事件。这项功能是第一个可用在opennms 1.3.0

severity

表示事件的级别。

2.2.1 事件级别(Severities

Critical

This event means numerous devices on the network are affected by the event. Everyone who can should stop what they are doing and focus on fixing the problem.

Major

A device is completely down or in danger of going down. Attention needs to be paid to this problem immediately.

Minor

A part of a device (a service, and interface, a power supply, etc.) has stopped functioning. The device needs attention.

Warning

An event has occurred that may require action. This severity can also be used to indicate a condition that should be noted (logged) but does not require direct action.

Normal

Informational message. No action required.

Cleared

This event indicates that a prior error condition has been corrected and service is restored

Indeterminate

No Severity could be associated with this event.

 

2.2.2 元素(Elements

各种元素可以包括在每一个事件的说明,日志信息,操作说明和自动动作中。并非所有的事件将有元素的值,有些是指SNMP trap

%uei% 

The UEI for the event.

 

%source% 

The source of the event (what process).

 

%time% 

The time of the event.

 

%nodeid% 

The node ID of the device that caused the event.

 

%interface% 

The interface associated with the event.

 

%service% 

The service associated with the event.

 

%severity% 

The severity of the event.

 

%snmphost% 

The host of the SNMP agent that generated the event.

 

%snmp% 

The SNMP information associated with the event.

 

%id% 

The SNMP Enterprise OID for the event.

 

%generic% 

The Generic trap number for the event.

 

%specific% 

The Specific trap number for the event.

 

%community% 

The community string for the trap.

 

%version% 

The SNMP version of the trap.  

 

%operinstruct% 

The operator instructions for the event.

 

%mouseovertext% 

The mouse over text for the event.

In version 1.1 and beyond, there are two more parameters available:

 

%nodelabel% 

Returns the node label for the node given in %nodeid% if available.

 

%interfaceresolv% 

Does a reverse lookup on the %interface% and returns its name if available.

2.3 SNMP Traps

 

2.3.1 Trap配置

除了OpenNMS内部产生事件外, OpenNMS还可以接收SNMP Traps透过trapd进程。这些都是使用<mask>标记控制在eventconf.xml文件中(例如:2.1.5自定义事件文件)。这就是与内部事件配置主要的不同之处

2.3.2 参数元素(parm Element

一些事件,特别是SNMP Traps,有额外的信息发送给他们即所谓的“variable bindings”“varbinds”。在ciscoc3800sysaggregatestatuschange事件上面列出的,有四个的他们,他们可以使用parm元素访问。每个参数由一个名称和一个值构成。

%parm[all]% 

Will return a space-separated list of all parameter values in the form parmName1="parmValue1" parmName2="parmValue2" etc.

%parm[values-all]% 

Will return a space-separated list of all parameter values associated with the event.

%parm[names-all]% 

Will return a space-separated list of all parameter names associated with the event.

%parm[<name>]% 

Will return the value of the parameter named <name> if it exists.

%parm[##]% 

Will return the total number of parameters.

%parm[#<num>]% 

Will return the value of parameter number <num>.

 

2.4 数据库

每一个事件产生后将会添加到数据库中events表中。Web UI通过Servlet提交要查询的event返回到Web UI供客户端显示。

 

注:配置事件相关的XML文件后需重启OpenNMS.

抱歉!评论已关闭.