Zabbix 7.0 新增功能亮点(二)——history.push API方法

Zabbix7.0LTS一经发布便吸引了众多运维小伙伴的关注,乐维社区forum.lwops.cn也伴随着不少小伙伴的热议与探讨,话不多说,抓紧上车。
前面我们介绍了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)类型指标才可接收推送数据
更新内容详情如下:
[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/bash
ZABBIX_SERVER_IP=192.168.136.129
HOST_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 1
done

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
方法一:页面查看
从最新数据中指标详情按钮,可查看左下角出现的超链中包含监控项的
在这里插入图片描述
方法二:使用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 requests
import json
import datetime

headers = {'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 token

def 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_data

def 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 itemid

def 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技术问题,欢迎到乐维社区留言(forum.lwops.cn)~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/708023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【掌握C++模板进阶】:高级编程的艺术

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

【FreeRTOS】创建任务-声光色影

参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 目录 1 基本概念2 任务创建与删除2.1 什么是任务2.2 创建分配内存2.2.1 动态任务2.2.1 静态分配内存 2.3 示例1: 创建任务2.3.1 声2.3.1.1 music.c2.3.1.2 music.h2.3.1.4 硬件接线 2.3.2 光2.3.3 色2.3.4 影 在本章中&a…

海南云亿商务咨询有限公司解锁抖音电商新纪元

在当今数字化浪潮中,抖音电商以其独特的魅力和强大的用户基础,迅速成为企业营销的新宠。海南云亿商务咨询有限公司,作为专注于抖音电商服务的领先企业,凭借专业的团队和丰富的经验,为众多企业提供了高效、精准的电商服…

试乘试驾预约小程序源码系统 前后端分离 带完整的代码包+搭建教程

系统概述 试乘试驾预约小程序源码系统是一款专为汽车行业打造的便捷工具。它采用前后端分离的架构,确保了系统的稳定性和高效性。通过这套源码系统,用户可以轻松搭建自己的试乘试驾预约平台,为汽车经销商和消费者提供更好的服务体验。 代码…

手把手教程本地调试Datax

背景:使用Datax做数仓同步数据得工具,有时需要自己开发或者修改某个reader或writer插件,那么本地调试就很重要。 一. 下载 从GitHub上下载或者clone下来Datax项目。 https://github.com/alibaba/DataX 找到Core模块,运行入口就…

个人商业模式画布 | 10分钟+6张图,帮你重新定位个人发展!

在个性化的时代浪潮中,构建个人IP成为了提升个人影响力的黄金通道。之前分享过企业的商业模式画布,很受大家喜欢,今天我们分享个人商业模式画布,它适用于个人发展,可以帮助你有效地打造个人品牌,重塑你的职…

java如何预防sql注入

1 sql注入 1.1 使用字符串拼接导致数据异常 sql语句拼接 // 构建SQL查询语句,注意这里存在SQL注入风险String sql "select name,age from user where name" username " and password " password "";System.out.println("s…

Stable diffusion3效果比midjourney强很多吗,未来会开源吗?

经过一个多月的期待,Stable Diffusion 3(SD3) 终于向会员开放了API接口,尽管每个用户的使用配额相对有限,据用户反馈,生成六张图像便可能耗尽配额。 SD曾依靠开源策略与竞争对手抗衡,但目前似…

和鲸科技携手浙江大学地球科学学院,助推地球科学研究范式变革

近日,浙江省资源与环境信息系统重点实验室(下简称“实验室)与上海和今信息科技有限公司(下简称“和鲸科技”)签订合作框架协议,双方将以助推“数据算力模型科研场景”的地球科学研究范式变革,孕…

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现增量同步

1、之前kettle cdc mysql的时候使用的方案是canalkafkakettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。 注:CDC (Change Data Capture) 是一种技术,用于捕获和同步数据库中的更改。 1)Debezium步骤解析mysql b…

【PyTorch 新手基础】Regularization -- 减轻过拟合 overfitting

Overfit 过拟合,效果如最右图所示 常见应对方案如下: 增大数据集入手:More data or data argumentation简化模型参数入手:Constraint model complexity (shallow model, regularization) or dropout dropout: torch.nn.Dropout(0…

沉睡而且“狡猾”的特工:大模型也可以是!

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

跳舞电动机器人单片机方案

这款机器人形状智能电子玩具是一款集娱乐、教育和互动于一身的高科技产品。它的主要功能包括: 1、智能对话:机器人可以进行简单的对话,回答用户的问题,提供有趣的互动体验。 2、前进、后退、左转、右转、滑行:机器人…

Flink作业执行之 2.算子 StreamOperator

Flink作业执行之 2.算子 StreamOperator 前文介绍了Transformation创建过程,大多数情况下通过UDF完成DataStream转换中,生成的Transformation实例中,核心逻辑是封装了SimpleOperatorFactory实例。 UDF场景下,DataStream到Transf…

分布式高性能计算 (HPC)的工作负载管理平台和作业调度程序—— IBM Spectrum® LSF® Suites

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用,该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…

uni-app利用renderjs实现安卓App上jssip+freeswitch+webrtc音视频通话功能

效果图 前置知识 利用renderjs在app端加载for web库 JsSIPFreeSwitchVue实现WebRtc音视频通话 原始模块 <template><viewclass"test-sip":userExtension"userExtension":change:userExtension"JsSIP.handleUserExtenSionChange":tar…

1+x(Java)中级题库易混淆理论题(五)

Java 语言具有许多优点和特点&#xff0c;多线性反映了 Java 程序并行机制的特点 字符流与字节流的区别在于每次读写的字节数不同 如果需要从文件中读取数据&#xff0c;则可以在程序中创建FileInputStream的对象 void 的含义是方法没有返回值 设 x1&#xff0c;y2&#xf…

SpringBoot集成slf4j日志配置

目录 前言 1、slf4j概述 2、pom.xml的日志依赖 3、application.yml的日志配置 4、logback.xml配置文件定义 5、logback.xml配置文件解析 5.1 定义日志的存储路径 5.2 定义日志的输出格式 5.3 定义控制台输出 5.4 定义日志相关参数 5.5 定义日志的输出级别 6、测试日…

AI大模型时代:一线大厂为何竞相高薪招揽AI产品经理?

前言 在当今日新月异的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透至各行各业&#xff0c;成为推动社会进步的重要力量。在这样的背景下&#xff0c;AI产品经理这一新兴职位逐渐崭露头角&#xff0c;成为各大企业竞相争夺的稀缺人才。那么&#xf…

​带三维重建和还原的PACS源码 医院PACS系统源码 PACS系统源码医院PACS系统源码 C/S架构 带三维重建和还原​

带三维重建和还原的PACS源码 医院PACS系统源码 PACS系统源码医院PACS系统源码 C/S架构 带三维重建和还原 ​ 主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声&#xff0c;各种X光机&#xff0c;各种红外仪、显微仪等设备产生的图…