Linux

Zabbix 發現 JSON 格式

  • June 25, 2017

我嘗試創建一個發現規則來監控企業應用程序,並且我的腳本返回以下 JSON。

{
   "data": [{
           "{#NODENAME}": "node1",
           "{#NODEINTERFACE}": ["eth0", "eth1"]
       },
       {
           "{#NODENAME}": "node2",
           "{#NODEINTERFACE}": ["eth2", "eth3"]
       }
   ]
}

在 Zabbix 界面上,我使用以下參數創建了發現:

名稱: : 發現節點和介面

類型:Zabbix 代理

關鍵app.discovery

在“過濾器”選項卡中:

計算類型:和/或


Zabbix 上的預期行為是創建以下鍵:

密鑰格式:

app.getinfo["{#NODENAME}","{#NODEINTERFACE}]

即為每個NODENAME創建N個鍵,每個介面一個

發現鍵:

app.getInfo["node1","eth0"]
app.getInfo["node1","eth1"]

app.getInfo["node2","eth2"]
app.getInfo["node2","eth3"]

該行為收到了它的:

如果計算類型And/Or,Zabbix不會創建項目

如果計算類型Or,Zabbix 為每個 NODENAME 創建一項,並忽略/不辨識 NODEINTERFACE


我的疑問是,如何創建發現規則,對於每個 NODENAME,使用 NODEINTERFACE 資訊創建 N 個項目

首先,原型鍵可能是錯誤的——引號沒有用app.getinfo["{#NODENAME}","{#NODEINTERFACE}].

其次,你的 JSON 應該是這樣的:

{
   "data": [
   {
       "{#NODENAME}": "node1",
       "{#NODEINTERFACE}": "eth0"
   },
   {
       "{#NODENAME}": "node1",
       "{#NODEINTERFACE}": "eth1"
   },
   {
       "{#NODENAME}": "node2",
       "{#NODEINTERFACE}": "eth2"
   }
   {
       "{#NODENAME}": "node2",
       "{#NODEINTERFACE}": "eth3"
   }
]
}

請注意每個條目如何必須包含您希望在創建的實體中表示的一組值。

引用自:https://serverfault.com/questions/857806