前面我们先容了zabbix 7.0 新增功能亮点(一)——T参数,本篇将向大家先容zabbix 7.0 新增的另一个功能亮点——history.push API方法。

一. history.push API方法内容解释

zabbix 7.0 中,增加了对history_push API方法的支持,用于通过Zabbix API将数据发送到Zabbix server

注: 须要合营监控项为Zabbix采集器(zabbix trap)类型指标才可吸收推送数据

zabbixapi依赖php吗Zabbix 70 新增功效亮点二historypush API办法 AJAX

更新内容详情如下:

[ZBXNEXT-8541] Support of history.push API method - ZABBIX SUPPORT

官方利用解释如下:

history.push (zabbix.com)

二. 比对7.0以前版本指标数据吸收办法1. 借助zabbix原生工具 zabbix_sender用法解释:

1.1添加指标

– 创建主机工具或监控模板

创建"Zabbix采集器(zabbix trap)"类型指标

1.2编写数据网络脚本,利用zabbix_sender命令工具命令推送

– 详细脚本可根据实际生产环境需求调度,以下脚本仅用作测试示例

• ZABBIX_SERVER_IP填写ZABBIX SERVER 做事器IP,用于推送数据到目标server

• HOST_HOST填写步骤1中创建的主机名,zabbix_trap类型指标以主机名作为吸收工具唯一标识

• key_name填写步骤1创建的指标键值,zabbix_trap类型指标以指标键值作为吸收指标唯一标识

• type 用于实例脚本中,区分字符/数字的数据类型指标时时分别推送的取值内容

#!/usr/bin/bashZABBIX_SERVER_IP=192.168.136.129HOST_HOST=${1}key_name=${2}type=${3}for i in {1..20}do if [ ${type} = "num" ];then zabbix_sender -z ${ZABBIX_SERVER_IP} -s ${HOST_HOST} -k ${key_name} -o $i -v elif [ ${type} = "text" ];then zabbix_sender -z ${ZABBIX_SERVER_IP} -s ${HOST_HOST} -k ${key_name} -o "本次采集值:$i" -v fi sleep 1done

1.3实行脚本,平台查看取值效果

– 实行脚本查看脚本实行过程

# 往数值类型监控项发送数值取值bash zbx_send.sh zabbix_trap_receive_host trap_item_1 num # 往文本类型监控项发送文本取值bash zbx_send.sh zabbix_trap_receive_host trap_item_2 text

–查看监控平台,确认平台吸收指标成功

2. 7.0 history_push 办法用法解释:

2.1添加指标

参考重复2.1章节第一步骤即可,此处不重复

2.2获取监控项itemid

方法一:页面查看

从最新数据中指标详情按钮,可查看左下角涌现的超链中包含监控项的itemid

方法二:利用API接口读取

参考官方手册item.get (zabbix.com),通过指定主机ID及键值名称,可获取item详情,返回数据中包含itemid

2.3利用api接口进行数据推送

#!/bin/env python3# -- coding: utf-8 --'''利用方法:1).修正变量中API接口IP地址,用户名,密码2).指定须要须要上报数据的itemid及value值3).实行脚本即可然后实行 python3 zbx_v7.0_history_push.py'''import requestsimport jsonimport datetimeheaders = {'Content-Type': 'application/json-rpc'}def token_get(): # global token # data = {"jsonrpc":"2.0","method":"user.login","params":{"user":username,"password":password},"id":1} data = {"jsonrpc":"2.0","method":"user.login","params":{"username":username,"password":password},"id":1} # data = json.dumps(data) response = requests.post(zabbix_api, headers=headers, json=data) a=response.json() # print(a) token=a.get('result') return tokendef history_push(): headers['Authorization']='Bearer %s'%token data = {"jsonrpc":"2.0","method":"history.push","params":[ { "itemid": itemid, "value": value } ],"id": 1} # data = json.dumps(data).encode('utf-8') response = requests.post(zabbix_api, headers=headers, json=data) print(json.dumps(data)) a=response.json() print(a) response_data=a.get('result').get('data') return response_datadef item_get(host_host,key_name): # global itemid headers['Authorization']='Bearer %s'%token data = {"jsonrpc":"2.0","method":"item.get","params":{"output":["itemid","key_"],"host":host_host,"search":{"key_":key_name}},"id":1} data = json.dumps(data) response = requests.post(zabbix_api, headers=headers, data=data) a=response.json() # 打印所有itemid itemid=a.get('result') return itemiddef logout(): headers['Authorization']='Bearer %s'%token data = {"jsonrpc":"2.0","method":"user.logout","params":[],"id":1} data = json.dumps(data) response = requests.post(zabbix_api, headers=headers, data=data) a=response.json() print("退出状态",a.get('result'))if __name__ == '__main__': zabbix_api = 'http://192.168.136.129/zabbix/api_jsonrpc.php' username = 'Admin' password = 'zabbix' key_name = 'trap_item_2' host_host = 'zabbix_trap_receive_host' value = 'python推送数据测试,当前韶光:%s'%datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') token = token_get() # 认证并获取token # print("token:%s"%token) # 查看要求返回token # itemid = item_get(host_host,key_name)[0].get('itemid') # 获取itemid itemid = 46524 # 已知itemid,直接定义,跳过item_get()函数 # print(itemid) # 打印获取的Itemid response_data = history_push() # 数据推送 print("推送状态 %s"%response_data) # 打印推送状态 logout() # 退出及关闭本次认证

2.4定义参数,测试脚本推送

实行脚本,查看实行过程

zabbix平台查看吸收数据

3. 总结

7.0新版中,支持了对Zabbix采集器(zabbix trap)类型指标利用api接口办法上报数据,大大提高了采集逻辑的可扩展性,相较于支持的zabbix_sender命令行办法而言,监控程序可以避免反复调用zabbix_sender命令,减少系统的缓存及打开文件数等关键性能;其次也令采集程序脚本更一体化,脚本中直接可以完成数据网络及上报操作,不须要额外依赖于zabbix_sender命令,避免系统中因缺失落zabbix_sender命令导致的无法上报数据成功。

以上便是history.push API方法的全部先容。
大家好,我是乐乐,专注IT运维技能研究与分享,如果小伙伴们对以上内容有不理解的地方,或有更多zabbix技能问题,欢迎到乐维社区留言~