我尝试创建一个发现规则来监控企业应用程序,并且我的脚本返回以下 JSON。
{
"data": [{
"{#NODENAME}": "node1",
"{#NODEINTERFACE}": ["eth0", "eth1"]
},
{
"{#NODENAME}": "node2",
"{#NODEINTERFACE}": ["eth2", "eth3"]
}
]
}
在 Zabbix 界面上,我使用以下参数创建了发现:
姓名::发现节点和接口
类型:Zabbix 代理
钥匙应用程序发现
在“过滤器”选项卡中:
计算类型:和/或
Zabbix 的预期行为是创建以下键:
密钥格式:
app.getinfo["{#NODENAME}","{#NODEINTERFACE}]
也就是说,对于每个节点名称创造否键,每个接口一个
发现钥匙:
app.getInfo["node1","eth0"]
app.getInfo["node1","eth1"]
app.getInfo["node2","eth2"]
app.getInfo["node2","eth3"]
该行为得到了以下结果:
如果计算类型是和/或, 扎比克斯不是创建项目
而如果计算类型是或者,Zabbix创建一每个 NODENAME 的项目,并忽略/不识别 NODEINTERFACE
我的疑问是,如何创建发现规则,对于每个 NODENAME,使用 NODEINTERFACE 信息创建 N 个项目
答案1
首先,原型键很可能是错误的——引号没有闭合app.getinfo["{#NODENAME}","{#NODEINTERFACE}]
。
其次,你的 JSON 应该是这样的:
{
"data": [
{
"{#NODENAME}": "node1",
"{#NODEINTERFACE}": "eth0"
},
{
"{#NODENAME}": "node1",
"{#NODEINTERFACE}": "eth1"
},
{
"{#NODENAME}": "node2",
"{#NODEINTERFACE}": "eth2"
}
{
"{#NODENAME}": "node2",
"{#NODEINTERFACE}": "eth3"
}
]
}
请注意,每个条目必须包含您想要在创建的实体中表示的一组值。