1. 程式人生 > >通過http請求 zabbix api 獲取監控的流量資料

通過http請求 zabbix api 獲取監控的流量資料

zabbix獲取流量監控資料(之前有問題,修正了下)

       zabbix沒有提供監控流量資料的api(至少我沒有找到),歷史表有一部分資料,但是不全,所以只能從趨勢資料表裡獲取。流量資料是隔段時間儲存一次的,每次儲存的是截止該時間點的總流量,所以要獲取某時間點的瞬時流量或者平均流量,都得自己計算。

       以下是我總結網上的方法,找到的一個思路,每一步的http請求的body總結如下,請求地址是http://127.0.0.1/zabbix/api_jsonrpc.php,ip換成你的zabbix伺服器ip即可。引數列表還有很多個性化引數,例如排序欄位,篩選等,具體參考zabbix  api

https://www.zabbix.com/documentation/3.4/manual/api/reference/item/get

第一步:登陸認證,拿到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格式的字串,按自己的需求進行解析即可