我有Solaris 10 + Zenoss 2.7.0,没有Oracle许可证我无法升级它,所以我试图找到解决办法,这就是为什么我请求你的帮助。
我需要防止事件移动到历史表,对于在过去5分钟内收到的来自同一设备的任何事件,然后删除事件,如果计数大于5。
这就是我想做的(映射是放在/Unknown/linkUp)
try:
import Globals
import sys
from Products.ZenUtils.ZenScriptBase import ZenScriptBase
except Exception as error:
logging.error('ApplyTestZSB. Cannot import ZenScriptBase: %sn' % error)
sys.exit(1)
dmd = None
try:
dmd = ZenScriptBase(connect=True).dmd
except Exception as error:
logging.error(
'ApplyTestDMD. Connection to zenoss dmd failed: %sn' % error)
sys.exit(1)
ourMessage = str(getattr(evt, "message"))
ourDevice = str(evt.device)
ourLastTime = float(evt.lastTime)
old_elements = 0
if evt.device and evt.component and evt.eventClass and evt.eventKey:
ourDedupId = '|'.join(
[evt.device, evt.component, evt.eventClass, evt.eventKey, ''])
for event in dmd.ZenEventManager.getEventList():
if (event.lastTime > ourLastTime - 301) and
((ourDedupId in str(event.dedupid) and event.severity > 0) or
(ourMessage == event.message and ourDevice == event.device)):
old_elements += event.count
if old_elements > 4:
evt._action = 'drop'
我在zenhub.log中有这个错误:
2013-06-15 21:21:11 ERROR zen.Events: Error transforming EventClassInst linkUp (1)
2013-06-15 21:21:20 ERROR root: ApplyTestDMD. Connection to zenoss dmd failed: 2
2013-06-15 21:21:20 ERROR zen.Events: Error transforming EventClassInst linkUp (1)
2013-06-15 21:21:24 ERROR root: ApplyTestDMD. Connection to zenoss dmd failed: 2
2013-06-15 21:21:24 ERROR zen.Events: Error transforming EventClassInst linkUp (1)
2013-06-15 21:21:28 ERROR root: ApplyTestDMD. Connection to zenoss dmd failed: 2
2013-06-15 21:21:28 ERROR zen.Events: Error transforming EventClassInst linkUp (1)
从脚本中完全删除dmd,它已经在事件转换执行期间在locals()中定义。没有必要自己定义它,就像evt已经定义一样。
要自己查看,定义以下一行事件转换,然后使用事件控制台添加按钮为您刚刚创建转换的事件类添加一个新事件,以快速测试:
evt。Summary = str('dmd' in locals())
您应该看到在事件摘要中放置了一个True,这意味着dmd已经定义,并且可以使用了:)