感谢本文作者张宇,Zabbix高级认证专家ZCP,在线课讲师。本文代码及配套在线课见文末。
一、ZABBIX API 介绍
API是什么:

API能做什么:


API结构体:
Zabbix API 使用 JSON-RPC 协议进行通信,其结构主要包括请求和响应两个部分。请求和响应都是 JSON 格式的数据,其中请求包括一个方法(Method)、方法参数(Params)、请求 ID(Id),而响应包括一个结果(Result)、错误信息(Error)、响应 ID(Id)。以下是 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年课程哟!


延伸阅读




