自定义脚本的Zabbix发现规则:需要任何建议

时间:2015-10-21 14:45:45

标签: python json zabbix

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

  

值应该是JSON对象

  • Zabbix Agent(守护进程)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:

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

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

enter image description here

enter image description here

用户 zabbix 拥有脚本和日志的目录权限。

1 个答案:

答案 0 :(得分:1)

必须使用"数据"。

的键使数组成为一个值
print json.dumps({"data": data})

所以它产生......

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

宏{#LOGFILEPATH}应放在方括号 {}