我想在zabbix
服务器上自动创建主机,而无需在主机上使用代理。尝试使用发现规则并通过data
发送JSON zabbix_sender
。但是没有运气。服务器不接受data
。
Environment: Zabbix server 3.4 installed on Centos 7.Hosts with Windows or Ubuntu.
在服务器上,我创建了名为host
的{{1}}
在该主机中,我使用密钥zab_trap
创建了发现规则,然后键入zab_trap.discovery
。然后在发现规则中,我创建了名为{#RH.NAME}的Host原型。
带有JSON“数据”的命令行:
Zabbix_trapper
我希望将创建“ HOST1”。但是执行后我得到了:
zabbix_sender.exe -z zab_server -s zab_trap -k zab_trap.discovery -o "{"data":[{"{#RH.NAME}":"HOST1"}]}"
zabbix_server.log中没有错误(调试级别为5) 我看到了:
"info from server: "processed: 0; failed: 1; total: 1; seconds spent: 0.000188"
sent: 1; skipped: 0; total: 1"
我认为JSON语法可能有问题。
请帮助。
答案 0 :(得分:1)
似乎我找到了解决方法。问题以发送JSON的方式隐藏。据我了解,如果直接在命令行中写入JSON,它将无法正常工作或语法(引用)有问题。但是,如果zabbix_sender使用JSON发送文件,则可以使用。
命令行:
zabbix_sender -z zab_server -s zab_trap -i test.json
文件test.json包含以下行:
-zab_trap.discovery {“ data”:[{“ {#RH.NAME}”:“ HOST1”}]}
主机已创建。
答案 1 :(得分:1)
如果要使用命令行而不使用json文件,则需要使用以下命令清除字符串:
zabbix_sender.exe -z zab_server -s zab_trap -k zab_trap.discovery -o“ $(echo'{” data“:[{” {#RH.NAME}“:” HOST1“}]}}'| tr- cd'[:print:]')“