我正在尝试制作发现规则以添加文件大小监视器。但是当我将模板添加到主机时,zabbix说我:
值应该是JSON对象
我写了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/
有附件显示我的发现配置:
用户 zabbix 拥有脚本和日志的目录权限。
答案 0 :(得分:1)
必须使用"数据"。
的键使数组成为一个值print json.dumps({"data": data})
所以它产生......
{ "data": [{"#LOGFILEPATH": "/opt/logs/projects/cms/cms.log"}, {"#LOGFILEPATH": "/opt/logs/projects/books/nginx.log"}] }
宏{#LOGFILEPATH}应放在方括号 {}