python - 自定义脚本的 Zabbix 发现规则 : need any advices

标签 python json zabbix

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

Value should be a JSON object

  • 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 = discovery.logfile.path, python /opt/scripts/zabbix/find.logfile.path.and.size.py /opt/logs/

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

enter image description here

enter image description here

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

最佳答案

它必须使数组成为一个键为“data”的值。

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

所以它产生...

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

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

关于python - 自定义脚本的 Zabbix 发现规则 : need any advices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33262437/

相关文章:

javascript - 输入元素错误时访问选择方向

mysql - Zabbix 4.0 实体关系图或数据库架构

python - 从 Python Dataframe 创建术语频率矩阵

python - 如何遍历 python 中的 JSON 列表并插入到 PostgreSQL 中?

python - 可以在tinydb上输入文档ID吗? upsert 是可能的吗?

windows - 无法 telnet/ping 虚拟机上安装的服务器

python - docker zabbix 设备中的 API 连接问题

python从外部访问主程序变量

java - 发送对象时忽略 JSON 字段(反序列化)

android - 在 Android 中解析 JSON