python - 如何在 Zenoss 映射中导入 DMD?

标签 python mysql solaris python-2.4 zenoss

我有 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: %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 中遇到此错误:

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 已定义并可供使用:)

关于python - 如何在 Zenoss 映射中导入 DMD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126119/

相关文章:

python - virtualenvs 应该在哪里创建?

c - mq_unlink 将 errno 设置为 EEXIST

linker - 为什么 "/lib/libc.so.1"挂载在solaris 10上?

mysql - 修改表: only allow either unique or empty

backup - 显示表状态会显示表中的确切行吗?

linux - Unix 搜索忽略大写

python - Google Colab 笔记本的演示模式

python - 鼠兔,stop_consuming 不起作用

python - Django 的序列数据库?

php - 如何在 php 中允许特殊标签?