如何在Zenoss mapping中导入DMD?

2024-09-30 10:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有solaris10+zenoss2.7.0,没有甲骨文的许可证我无法升级它,所以我试图找到解决办法,这就是为什么我请求您的帮助。在

对于过去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: %s\n' % error)
    sys.exit(1)

dmd = None

try:
    dmd = ZenScriptBase(connect=True).dmd
except Exception as error:
    logging.error(
        'ApplyTestDMD. Connection to zenoss dmd failed: %s\n' % 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日志公司名称:

^{pr2}$

Tags: andimporteventifdevicesys事件error
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:56

从脚本中完全删除dmd,它已经在执行事件转换期间在locals()中定义。没有必要自己定义它,就像evt已经定义一样。在

要亲自查看,请定义以下单行事件转换,然后使用事件控制台添加按钮为刚刚为其创建转换的事件类添加新事件,以便快速测试:

在执行摘要=str('dmd'在locals()中)

在事件摘要中应该会看到一个True,这意味着dmd已经定义,可以使用了:)

相关问题 更多 >

    热门问题