通过http请求 zabbix api 获取监控的流量数据

zabbix获取流量监控数据(之前有问题,修正了下)

       zabbix没有提供监控流量数据的api(至少我没有找到),历史表有一部分数据,但是不全,所以只能从趋势数据表里获取。流量数据是隔段时间保存一次的,每次保存的是截止该时间点的总流量,所以要获取某时间点的瞬时流量或者平均流量,都得自己计算。

       以下是我总结网上的方法,找到的一个思路,每一步的http请求的body总结如下,请求地址是http://127.0.0.1/zabbix/api_jsonrpc.php,ip换成你的zabbix服务器ip即可。参数列表还有很多个性化参数,例如排序字段,筛选等,具体参考zabbix  apihttps://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格式的字符串,按自己的需求进行解析即可

 

猜你喜欢

转载自blog.csdn.net/lihaiyong92/article/details/83057584