如何使用 Zenoss 3.x 获取转换中的事件详细信息

如何使用 Zenoss 3.x 获取转换中的事件详细信息

我需要从事件转换中的陷阱中获取事件详细信息。

陷阱在事件详细信息中带有 OID。问题是 OID 不可预测,因为最后一位数字是 SAN 本身上的事件编号。

例如,列出的两个 oid 包含在我从阵列中拔出磁盘时发送的陷阱中。这是针对不同的磁盘,但唯一不同的数字是 10000779 和 1419,它们映射到 SAN 上的事件 ID。

1.3.6.1.3.94.1.11.1.9.32.128.0.192.255.20.149.189.0.0.0.0.0.0.0.0.10000779 1.3.6.1.3.94.1.11.1.9.32.128.0.192.255.20.149.189.0.0.0.0.0.0.0.0.1419

我能够使用 zendmd 深入了解事件详细信息并打印出其中一个值,但我似乎无法在事件转换中获得正确的咒语。

emgr = dmd.Events.getEventManager()
event = emgr.getEventDetail(dedupid='172.24.40.25||/Storage/SAN||4|snmp trap msaEventInfoTrap')
event.getEventDetails()
(('1.3.6.1.3.94.1.11.1.3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9999', '9999'), ('1.3.6.1.3.94.1.11.1.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9999', '3'), ('1.3.6.1.3.94.1.11.1.9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.9999', 'Event type: 312, Test SNMP trap, type HP StorageWorks P2000 G3 FC'), ('community', 'public'), ('oid', '1.3.6.1.4.1.11.2.51.0.3001'))
event.getEventDetails()[0][1]
'9999'
event.getEventDetails()[2][1]
'Event type: 312, Test SNMP trap, type HP StorageWorks P2000 G3 FC'

evt.summary 和 evt.severity 之类的东西在转换中起作用,但 evt.getEventDetails() 则不行。

答案1

嗨,Nick,

       You need to create an EventClassMapping and add a rule. An in the Transform field you need to use

Variable1=getattr(evt,'1.3.6.1.3.94.1.11.1.9.32.128.0.192.255.20.149.189.0.0.0.0.0.0.0.0.10000779')

Variable2=getattr(evt,'1.3.6.1.3.94.1.11.1.9.32.128.0.192.255.20.149.189.0.0.0.0.0.0.0.0.1419')

evt.message = variable1 + ' ' + variable2
evt.summary = variable1 + ' ' + variable2
evt.severity=5 #Sets the severity to critical

答案2

- 更新了简单示例 -

Event Enrichment.Org 上对这个主题有相当详尽的指南。

注意:提供的示例与 Zenoss 4.2 相关。

http://www.eventenrichment.org/enrich-zenoss-events-embedding-details/

极端悬崖笔记版本:在事件转换中使用 _map.keys() 函数。

例如:

       对于 evt.details._map.keys() 中的 d:  
          如果 d =='monitor.13.0':  
              查询 = evt.details.get(d)  
              evt.message = “以下查询花费的时间超过了分配的间隔:\n”+查询  
          如果 d =='status.1.0':  
              evt.summary = evt.summary + “:”+evt.details.get(d)  
          如果 d =='monitor.20.0':  
              evt.组件 = evt.details.获取(d)  
          如果 d =='monitor.8.0':  
             evt._action = '历史'   

最好的,

· 奥菲尔

相关内容