【问题标题】:Zabbix Discovery Rule by custom script: need any advicesZabbix Discovery Rule by custom script:需要任何建议
【发布时间】:2015-10-21 14:45:44
【问题描述】:

我正在尝试制定发现规则来添加文件大小监视器。但是当我将我的模板添加到主机时,zabbix 说我:

值应该是 JSON 对象

  • Zabbix 代理(守护进程)v2.2.10(修订版 54806)(2015 年 8 月 10 日)
  • Zabbix 服务器 v2.2.9(修订版 52686)(2015 年 3 月 12 日)

我已经编写了 python 脚本:

import os
import sys
import json

logdir = sys.argv[1]

data = []

for (logdir, _, files) in os.walk(logdir):
        for f in files:
                if f.endswith(".log"):
                        path = os.path.join(logdir, f)
                        data.append({'#LOGFILEPATH':path})
                        jsondata = json.dumps(data)

print jsondata

它工作正常并得到以下结果:

[{"#LOGFILEPATH": "/opt/logs/projects/cms/cms.log"}, {"#LOGFILEPATH": "/opt/logs/projects/books/nginx.log"}]

我已经通过 jsonlint.com 检查了它 - 有效的 JSON。

conf.d 中的用户参数:

UserParameter = discovery.logfile.path, python /opt/scripts/zabbix/find.logfile.path.and.size.py /opt/logs/

有附件显示我的发现配置:

用户zabbix有权限访问带有脚本和日志的目录。

【问题讨论】:

  • 我也有同样的问题,你解决了吗?
  • 是的,我的问题是我错过了括号{}如果我的建议对您没有帮助,请随时在此处描述您的问题
  • 感谢您的回复

标签: python json zabbix


【解决方案1】:

它必须使数组成为键为“数据”的值。

print json.dumps({"data": data})

所以它会产生...

{ "data": [{"#LOGFILEPATH": "/opt/logs/projects/cms/cms.log"}, {"#LOGFILEPATH": "/opt/logs/projects/books/nginx.log"}] }

并且宏 {#LOGFILEPATH} 应该放在括号中{}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多