10分钟教会你使用Zabbix API出报表(附代码)

原创
01/17 08:00
阅读数 13



感谢本文作者张宇,Zabbix高级认证专家ZCP,在线课讲师。本文代码及配套在线课见文末。



一、ZABBIX API 介绍

API是什么:

API能做什么:

API结构体:

Zabbix API 使用 JSON-RPC 协议进行通信,其结构主要包括请求和响应两个部分。请求和响应都是 JSON 格式的数据,其中请求包括一个方法(Method)、方法参数(Params)、请求 IDId),而响应包括一个结果(Result)、错误信息(Error)、响应 IDId)。以下是 Zabbix API 的基本结构:

请求格式:

{

  "jsonrpc": "2.0",

  "method": "some.method",

  "params": {

    "param1": "value1",

    "param2": "value2"

  },

  "id": 1

}

响应结构:

{

  "jsonrpc": "2.0",

  "result": {

    "response_data": "value"

  },

  "id": 1

}

获取token

{

  "jsonrpc": "2.0",

  "method": "user.login",

  "params": {

    "user": "your_username",

    "password": "your_password"

  },

  "id": 1

}

响应示例:

成功认证后,Zabbix 会返回一个认证令牌,形如:

{

  "jsonrpc": "2.0",

  "result": "your_auth_token",

  "id": 1

}

二、ZABBIX API获取数据

使用 "host.get" 查询主机信息

{

  "jsonrpc": "2.0",

  "method": "host.get",

  "params": {

    "output": ["hostid", "host"],

    "filter": {

      "host": ["your_host_name"]

    }

  },

  "auth": "your_auth_token",

  "id": 2

}

响应示例:

成功查询后,Zabbix 会返回符合条件的主机信息。

{

  "jsonrpc": "2.0",

  "result": [

    {

      "hostid": "12345",

      "host": "your_host_name"

      // 其他主机信息字段

    }

  ],

  "id": 2

}

使用 "history.get" 获取监控项历史数据

{

  "jsonrpc": "2.0",

  "method": "history.get",

  "params": {

    "output": "extend",

    "history": 0,  // 0 表示数值型监控项的历史数据

    "itemids": ["your_item_id"],

    "time_from": "your_start_timestamp",

    "time_till": "your_end_timestamp",

    "limit": 1000,  // 获取的历史数据条数

    "sortfield": "clock",

    "sortorder": "DESC"

  },

  "auth": "your_auth_token",

  "id": 5

}

响应示例:

成功获取监控项历史数据后,Zabbix 会返回符合条件的历史数据。

{

  "jsonrpc": "2.0",

  "result": [

    {

      "itemid": "your_item_id",

      "clock": "your_timestamp",

      "value": "your_value"

      // 其他历史数据字段

    },

    // 可能有多条历史数据

  ],

  "id": 5

}

使用 "trend.get" 获取监控项趋势数据

{

  "jsonrpc": "2.0",

  "method": "trend.get",

  "params": {

    "output": "extend",

    "itemids": ["your_item_id"],

    "time_from": "your_start_timestamp",

    "time_till": "your_end_timestamp",

    "limit": 1000,  // 获取的趋势数据条数

    "sortfield": "clock",

    "sortorder": "DESC"

  },

  "auth": "your_auth_token",

  "id": 6

}

响应示例:

成功获取监控项趋势数据后,Zabbix 会返回符合条件的趋势数据。

{

  "jsonrpc": "2.0",

  "result": [

    {

      "itemid": "your_item_id",

      "clock": "your_timestamp",

      "num": "your_num",

      "value_min": "your_min_value",

      "value_avg": "your_avg_value",

      "value_max": "your_max_value"

      // 其他趋势数据字段

    },

    // 可能有多条趋势数据

  ],

  "id": 6

}


三、Zabbix 监控报表数据获取,Excel写入

API 获取趋势数据

    def trend_get(self, token, itmid, time_f, time_t):

        method = "trend.get"

        params = {

            "output": "extend",

            "itemids": itmid,

            "time_from": time_f,

            "time_till": time_t,

            "sortfield": "clock",

            "sortorder": "DESC"

        }

        response_json = self.do_request(token, method, params)

        return response_json['result']

对趋势数据分析合并:

 

对磁盘文件系统大小进行单位自动转换:

 

实际EXCEL样式:

四、总结

 

 

代码附件百度云盘地址:

链接:https://pan.baidu.com/s/1c8ReIISru6JqCrX1gra0nA?pwd=sgnw

提取码:sgnw

本文内容配套课程,可扫码报名观看。

你想学什么主题,欢迎告知!

认真填写,有机会得2023年课程哟

延伸阅读

密码重置、API调用、远程命令,Zabbix用户必知的几个技巧

实用的Zabbix API - 5个API用例来提升你的API工作流

本文分享自微信公众号 - Zabbix开源社区(china_zabbix)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部