1. 程式人生 > >OpenNMS閥值、事件及警告配置筆記--開源監控軟體

OpenNMS閥值、事件及警告配置筆記--開源監控軟體


一.閥值Thresholds

   1.配置流程
       (1)首先,必須要收集你想要監控閥值的資料。
        (2)然後,在 thresholds.xml中為你想要監控的資料配置一個閥值。
        (3)然後在threshd-configuration.xml中設定需要監控閥值的裝置、IP段、介面。
        (4)最後為閥值監控建立報警或通知。
   2.閥值監控的種類(type)
按照data source分類有兩種。
Basic Threshold——直接對data source進行監控。
Expression based Threshold——監控按照表達式進行處理後的data source
       (1).high:當資料高於設定的閥值時,觸發一個'highthreshold'事件,直到資料低於re-arm值時,事件才被取消。
        (2).low:與high相反。
(3).relativeChange:監控資料的相對變化,如下配置資料上漲了50%將引發事件(rearm值relativeChange無效)
<!-- Note: the "rearm" and "trigger" values are not currently used. -->
<threshold type="relativeChange" ds-name="ifInOctets"  ds-type="if" value="1.5" rearm="1.0" trigger="1"/>
(4)absoluteChange:監控資料的絕對變化,如下配置資料上漲或下降3將引發事件。
<!-- Note: the "rearm" and "trigger" values are not currently used. -->
<threshold type="absoluteChange" ds-name="loss"  ds-type="node" value="3" rearm="1.0"trigger="1"/>
3.配置檔案中的標籤和屬性含義:
thresholds.xml
type:閥值監控的型別:‘high’ ‘low’ ‘relativeChange' 'absoluteChange'
rrdRepository:rrd資料存放目錄,指向SNMP收集到的資料存放地址
expression:對資料來源進行計算處理的數學表示式
ds-name:data source的名稱
ds-type:data source型別,節點資料對應“node",介面資料對應‘if’
ds-label:data source的標籤
value:閥值,對不同的type有不同的意義,如果設定為負數,將取其絕對值
rearm:The value at which the threshold will reset itself. Not used for relativeChange thresholds.
trigger:設定資料超過閥值的多少次才會引發事件,對 relativeChange 不適用
triggeredUEI:當閥值監控被觸發時,向event傳送事件時的UEI,如果設定為空,將預設生成一個標準thresholds UEIs.
rearmedUEI:threshold rearm時傳送事件時的UEI
filters:一個正則表示式,用於對data source進行過濾
filterOperator:多個filter之間的連線符,可用or和and,預設值為or


threshd-configuration.xml


在thresholds.xml中,為每一個thresholds配置了相關的閥值、過濾、資料來源等,並將其分到不同的group中,而在threshd-configuration.xml中為每一個group建立一個package,可以在其中配置被監控的裝置IP段、
filter:對IP地址進行過濾,符合條件的裝置才進行監控
include-range:將一個IP段加入到監控中
4.在web UI中管理thresholds
Admin->Manage Thresholds->選擇一個Group,點選Edit進行編輯
NOTE:早期的OpenNMS中,threshd進行閥值監控和collectd不是同步的,threshd取出的資料可能是錯誤。後期OpenNMS將threshd和collectd進行了同步,collected收集到資料後,立即由threshd將資料與閥值進行比較,對於ICMP的資料,threshd和poller是同步的,如果需要開啟SNMP同步功能可以在collectd-configuration.xml中,新增一個parameter

<parameter key="thresholding-enabled" value="true"/>

5.配置舉例:為disk設定閥值
在threshd-configuration.xml中新增一個group:
<package name="Your NetWare Server Name">
               <filter>IPADDR IPLIKE *.*.*.*</filter>
               <specific>"Your NetWare IP Address"</specific>
               <service name="SNMP" interval="300000" user-defined="false" status="on">
                       <parameter key="thresholding-group" value="Your NetWare server name-snmp"/
               </service>
               <outage-calendar>zzz from poll-outages.xml zzz</outage-calendar>
</package>


在thresholds.xml中為group配置閥值:
  <group name="Your NetWare server name-snmp"
               rrdRepository = "/var/opennms/rrd/snmp/">
               <threshold type="low" ds-name="disk-sys-free" ds-type="node" value="1204764" rearm="1304764" trigger="3"/>
               <threshold type="low" ds-name="disk-dept-free" ds-type="node" value="20062184" rearm="2104764" trigger="3"/>
               <threshold type="low" ds-name="disk-nos-free" ds-type="node" value="2085172" rearm="2185172" trigger="3"/>
               <threshold type="low" ds-name="disk-ts-free" ds-type="node" value="564680" rearm="664680" trigger="3"/>
               <threshold type="low" ds-name="disk-psft-free" ds-type="node" value="20897928" rearm="21897928" trigger="3"/>
               <threshold type="low" ds-name="disk-user-free" ds-type="node" value="10025812" rearm="11025812" trigger="3"/>
               <threshold type="low" ds-name="disk-apps-free" ds-type="node" value="7417340" rearm="7517340" trigger="3"/>
       </group>


note:ds-name可以在$OPENNMS_HOME/etc/datacollection/*.xml中查詢到


二.事件events

1.event種類
(1).由OpenNMS內部產生的“internal event”.(2).通過SNMP traps 生成的event
2.配置檔案:eventconf.xml
UEI:Universal Event Identifier 用於辨識事件
event-label:web UI 中顯示的時間標籤
dscr:對事件的描述,支援html標籤
logmsg:對事件的簡短描述,包含一個“dest”屬性,用於指明是否在資料庫中log或在web Ui中展現,dest包含以下幾個選項
logndisplay:在資料庫中記錄,並在web UI中展示
logonly:只記錄,不展示
suppress:不記錄也不展示
donotpersist:不在資料庫中記錄,但依然想其餘程序傳送event
discardtraps:只適用與trapd程序丟擲trap的時候 ,trapd將不生成事件,直接忽略trap
severity:事件的嚴重程度,包含七個級別,並用不同顏色區分

Critical (dark red):表明網路中大量裝置被這個event影響,應立即得到修正
Major (light red):裝置完全down或有down的風險,事件應收到重視
Minor (orange):部分服務或功能損壞
Warning (yellow):不太緊要的,事件有可能需要得到注意,但是不用立即解決。
Normal (green):正常的事件
Cleared (light grey):表明之前的一個錯誤事件已經被糾正,服務已經恢復
Indeterminate (yellow-green):事件的影響無法預測
operinstruct:給管理員的操作提示
mouseovertext:web Ui中滑鼠停留在event上時的文字提示
event-file:包含其他檔案中的event
修改eventconf.xml檔案後應用以下命令通知OpenNMS事件配置已經修改:
          $OPENNMS_HOME/bin/send-event.pl uei.opennms.org/internal/eventsConfigChange
可以利用一下指令碼來測試event配置:
$OPENNMS_HOME/bin/send-event.pl

$OPENNMS_HOME/bin/send-trap.pl

3.Event translator

event translator 允許對已經生成的event進行更改,它將clone一個相同的事件,並按照配置檔案修改event中的一部份屬性。使用這個功能的原因是:
建立被動狀態事件。
將事件與不同的節點關聯起來。
配置檔案為:$OPENNMS_HOME/etc/translator-configuration.xml
可以利用從資料庫取出的資料、正則表示式匹配的資料、String來替換event原有的屬性,並生成一個新的event
4.事件發生時呼叫bean shell script
事件觸發時,可以通過呼叫bean shell指令碼來處理事件,指令碼可以在$OPENNMS_HOME/etc/scriptd-configuration.xml中針對不同的UEI配置,也可以配置針對所有事件全域性的指令碼。
5.通過XML-RPC遠端傳送event
OpenNMS有一個個xmlrpcd程序,允許通過xml-RPC向遠端系統轉發event,配置檔案為:$OPENNMS_HOME/etc/xmlrpcd-configuration.xml
1.配置舉例:
<xmlrpcd-configuration max-event-queue-size="5000">
        <external-servers retries="3" elapse-time="15000">
                <xmlrpc-server url="http://10.1.8.10:8000" />
        </external-servers>
        <subscription>
                <subscribed-event uei="uei.opennms.org/nodes/nodeLostService"/>
                <subscribed-event uei="uei.opennms.org/nodes/nodeRegainedService"/>
                <subscribed-event uei="uei.opennms.org/nodes/nodeUp"/>
                <subscribed-event uei="uei.opennms.org/nodes/nodeDown"/>
                <subscribed-event uei="uei.opennms.org/nodes/interfaceUp"/>
                <subscribed-event uei="uei.opennms.org/nodes/interfaceDown"/>
                <subscribed-event uei="uei.opennms.org/internal/capsd/updateServer"/>
                <subscribed-event uei="uei.opennms.org/internal/capsd/updateService"/>
                <subscribed-event uei="uei.opennms.org/internal/capsd/xmlrpcNotification"/>
        </subscription>
</xmlrpcd-configuration>

標籤和屬性含義:


max-event-queue-size:儲存佇列的最大值
generic-msgs:預設是false,表示僅轉發預設的六種basic event(node/service/interface +down/up)。設定為true時,表示轉發所有訂閱的event
external-servers:需要轉發的xmlrpc伺服器地址
retries:重試次數
elapse-time:重試等待時間
subscription:一組訂閱的需要轉發的事件,可以設定一個name
subscirption-event:一個訂閱的需要轉發的事件
OpenNMS系統將對external-servers中配置的所有伺服器轉發event,如果所有伺服器都不可達,系統將儲存5000條資料(max-event-queue-size)
2.啟用xmlrpcd:
該程序預設是關閉的,如果需要開啟這個功能,應該編輯$OPENNMS_HOME/etc/service-configuration.xml 解除以下配置程式碼的註釋:
<service>
<name>OpenNMS:Name=Xmlrpcd</name>
<class-name>org.opennms.netmgt.xmlrpcd.jmx.Xmlrpcd</class-name>
<invoke at="start" pass="0" method="init"/>
<invoke at="start" pass="1" method="start"/>
<invoke at="status" pass="0" method="status"/>
<invoke at="stop" pass="0" method="stop"/>
</service>
3.執行流程
xmlrpcd初始化時,為每一個XMLRPC server建立一個EventListener和queue,當EventListener監聽到一個被訂閱的event時,將將event加入到queue中等待處理。當事件被處理時,xmlrpcd先檢查generic-msgs屬性,如果為false,只有預設的6種事件會被轉發給XMLRPC server。
6.Automation 自動化
automation是opennms從1.3版本開始提供的功能,它由一個trigger和一個操作資料庫的action statement構成,它可以完成一系列自動化的動作,比如定期清楚過期資料或當一個event長事件沒有acknowledged,自動的將其severity級別升級。
配置檔案:$OPENNMS_HOME/etc/vacuumd-configuration.xml
1.automation的屬性:
name(required):用於區別automation的String
interval(required):整數,單位為毫秒,指明多長事件允許一次automation
trigger-name:通過名字來引用trigger
action-name(required):通過名字來引用action
action-event:需要傳送的action-event名字
2.trigger:包含下列三個屬性,並球有一個SQL statement,SQL語句的結果將由action中的語句進行處理。
name:名字 row-count和operator:兩個屬性一起使用,共同決定是否應該執行action
如:
<trigger name="selectNumBlafasel" operator="&gt;=" row-count="1" >
        <statement>
                select
                distinct(ipaddr) as _ipaddr,
                count(nodeid)
                nodeid as _nodeid
                from events
                where
                eventuei='uei.opennms.org/test/blafasel' and
                eventtime &gt;= now()-'2 minutes'::INTERVAL
                group by nodeid,ipaddr
                having count(nodeid) &gt; 10;
        </statement>
    </trigger>

當statement中的查詢結果數量大於1時才執行action
3.action:action是automation中必須的一個組成部分,包括name和可以處理trigger中結果或獨立執行的SQL statement。如:
UPDATE alarms SET severity = least(7, severity+1)
 WHERE alarmid = ${alarmid}


 AND alarmAckUser is NULL


automation將對語句進行解析,並確定trigger中的result set包含語句中所需的欄位,然後執行語句,更新資料庫。
4.action-event:當automation執行時生成一個或多個event,但不是必須的。

三.警報 Alarms

Alarms是由event衍生出來的,它的配置同event整合在一起,在$OPENNMS_HOME/etc/eventconf.xml中.在event中新增alarm-data標籤來配置alarm:
1.alarm-data的屬性:
reduction-key:用於區分警報,對事件進行過濾,防止重複報警。如一下配置:
<alarm-data reduction-key="%uei%:%nodeid%" alarm-type="1" auto-clean="false" />


alarm將把event中的uei和nodeid儲存到報警列表中,對之後的生成的有相同uei和nodeid的event將不會產生報警,而是隻更新alarm的lastEventTime, lastEventID,這樣就防止了重複警報


alarm-type:這個屬性共有三個可能值 “1”表示需要解決,“2”表示警報已解決方案,“3”表示可能沒有解決方案。
auto-clean:如果設定為true將自動從資料庫刪除滿足 reduction-key中的條件的event
clear-key:僅當alarm-type設定為2的時有效,用於在故障恢復後,自動將滿足clear-key的alarm清除