通過http請求 zabbix api 獲取監控的流量資料
zabbix獲取流量監控資料(之前有問題,修正了下)
zabbix沒有提供監控流量資料的api(至少我沒有找到),歷史表有一部分資料,但是不全,所以只能從趨勢資料表裡獲取。流量資料是隔段時間儲存一次的,每次儲存的是截止該時間點的總流量,所以要獲取某時間點的瞬時流量或者平均流量,都得自己計算。
以下是我總結網上的方法,找到的一個思路,每一步的http請求的body總結如下,請求地址是http://127.0.0.1/zabbix/api_jsonrpc.php,ip換成你的zabbix伺服器ip即可。引數列表還有很多個性化引數,例如排序欄位,篩選等,具體參考zabbix api
第一步:登陸認證,拿到auth { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "user", "password": "passwd" }, "id": 1, "auth": null } |
第二步:獲取hostId { "jsonrpc": "2.0", "method": "host.get", "params": { "output": ["hostid","host"], "selectInterfaces": ["interfaceid","ip"] }, "id": 1, "auth": "9658680f149ed8c699e223a7ef9a03b2" } |
第三步: 獲取itemid { "jsonrpc": "2.0", "method": "item.get", "params": { "output": "extend", "hostids": [10170,10171,10172,10173,10174,10175,10176], "search": { "key_": "net.if.in" #in為入流量,out為出流量# }, "sortfield": "name" }, "auth": "9658680f149ed8c699e223a7ef9a03b2", "id": 1 } |
第四步: 從趨勢表查詢clock,value { "jsonrpc": "2.0", "method": "trend.get", "params": { "output": [ "itemid", "clock", "num", "value_min", "value_avg", "value_max" ], "itemids": [ "25025" ], "limit": "50", "sortfield": "clock"
}, "auth": "2991836a40e28b6fd2d32c41a563570f", "id": 1 } |
注意:
1. 請求不是rest風格的,以上引數應放在body中
2. clock欄位是從1970-01-01 00:00:00到儲存時間的秒數,注意是秒不是毫秒(java,js構造器用的都是毫秒)
3. 資料表示的是截止某時間點的總流量,要獲取每秒的資料,就得根據時間間隔計算
4. 返回資料都是json格式的字串,按自己的需求進行解析即可