I trying to create a discovery rule to monitor a enterprise application, and my script return the follow JSON.
{ "data": [{ "{#NODENAME}": "node1", "{#NODEINTERFACE}": ["eth0", "eth1"] }, { "{#NODENAME}": "node2", "{#NODEINTERFACE}": ["eth2", "eth3"] } ] }
On Zabbix Interface i created the discovery with the follow parameters:
Name:: Discovery nodes and interfaces
Type: Zabbix agent
Key app.discovery
And in “Filters” TAB:
Type of calculation: And/Or
The expected behavior on Zabbix is to create the followings keys:
Format of keys:
app.getinfo["{#NODENAME}","{#NODEINTERFACE}]
That is, for each NODENAME create N keys, one for each interface
Discovery keys:
app.getInfo["node1","eth0"] app.getInfo["node1","eth1"] app.getInfo["node2","eth2"] app.getInfo["node2","eth3"]
The behavior received its:
If Type of calculation is And/Or, Zabbix not create the items
And if Type of calculation is Or, Zabbix create one item for each NODENAME, and ignore/not recognize the NODEINTERFACE
My doubt is, How to create an discovery rule, For each NODENAME, create N items with the NODEINTERFACE information
Answer
First, the prototype key is likely wrong – quotes are not closed in app.getinfo["{#NODENAME}","{#NODEINTERFACE}]
.
Second, your JSON should be like this:
{
"data": [
{
"{#NODENAME}": "node1",
"{#NODEINTERFACE}": "eth0"
},
{
"{#NODENAME}": "node1",
"{#NODEINTERFACE}": "eth1"
},
{
"{#NODENAME}": "node2",
"{#NODEINTERFACE}": "eth2"
}
{
"{#NODENAME}": "node2",
"{#NODEINTERFACE}": "eth3"
}
]
}
Note how each entry must hold a single set of values you want to be represented in the created entities.
Attribution
Source : Link , Question Author : CorTheZ , Answer Author : Richlv