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

news2024/12/26 21:54:21

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)~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024热门骨传导耳机购买推荐!精选五款好用不贵!

对于很多喜欢运动健身的小伙伴,在现在市面上这么多种类耳机的选择上,对于我来说的话还是很推荐大家去选择骨传导运动耳机的,相较于普通的入耳式蓝牙耳机,骨传导耳机是通过振动来传输声音的,而入耳式耳机则是通过空气传…

webstorm yarn环境配置

1. 安装nodejs https://nodejs.cn/download/ 2. 安装npm npm i yarn -g3.下载并安装webstorm https://www.jetbrains.com/webstorm/ 4. 打开settings确认node和yarn的配置正确5. 打开项目更新包 yarn install

酷开科技丨酷开系统智慧中心,解锁AI智能家居生活的无限可能

想象一下,未来的AI电视不再是冷冰冰的机器,而是家庭的智能伙伴。它学习你的喜好,预测你的需求,用声音和触感与你交流。它控制家中的灯光、温度,甚至帮你订购生活用品。 在探索智能家居的未来发展时,酷开系…

Rust 实战丨倒排索引

引言 倒排索引(Inverted Index)是一种索引数据结构,用于存储某个单词(词项)在一组文档中的所有出现情况的映射。它是搜索引擎执行快速全文搜索的核心技术,也广泛用于数据库中进行文本搜索。我们熟知的 Ela…

SpringBoot 大文件基于md5实现分片上传、断点续传、秒传

SpringBoot 大文件基于md5实现分片上传、断点续传、秒传 SpringBoot 大文件基于md5实现分片上传、断点续传、秒传前言1. 基本概念1.1 分片上传1.2 断点续传1.3 秒传1.4 分片上传的实现 2. 分片上传前端实现2.1 什么是WebUploader?功能特点接口说明事件APIHook 机制 …

休闲零食连锁迎来“万店”时代!“鸣鸣很忙”快速扩张有何秘诀?

6月12日,零食很忙与赵一鸣零食合并后的集团名称正式变更为“鸣鸣很忙”集团。目前,该集团旗下的双品牌全国门店总数已经突破10000家,标志着休闲零食连锁行业正式迎来“万店”时代。在激烈的市场竞争中,“鸣鸣很忙”以全国门店数第…

【Numpy】一文向您详细介绍 np.abs()

【Numpy】一文向您详细介绍 np.abs() 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕,曾…

rsa加签验签C#和js以及java互通

js实现rsa加签验签 https://github.com/kjur/jsrsasign 11.1.0版本 解压选择需要的版本&#xff0c;这里选择all版本了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>JS RSA加签验签</title&g…

【Altium】AD-Fill、Region、Polygon之间的区别

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 Fill、Polygon、Region介绍&#xff0c;了解三者的区别。 2、 知识点 正片层、负片层&#xff0c;以及AD叠层管理中的设置。 3、软硬件环境 1&#xff09;、无关 2&#xff09;、无关 3&#xff09;、无关 4、…

动作识别综合指南

本文将概述当前动作识别&#xff08;action recognition&#xff09;的方法和途径。 为了展示动作识别任务的复杂性&#xff0c;我想举这个例子&#xff1a; 你能明白我在这里做什么吗&#xff1f;我想不能。至少你不会确定答案。我正在钻孔。 你能弄清楚我接下来要做什么吗&…

10. 安全性

这里写自定义目录标题 第10章 安全性10.1 安全性通用场景10.2 安全性策略不安全状态避免替代预测模型 不安全状态检测超时时间戳条件监测健全性检查比较 抑制冗余限制后果屏障 恢复 10.3基于策略的安全问卷10.4 安全性的模式10.5 扩展阅读10.6 问题讨论 第10章 安全性 吉尔斯&a…

GaN VCSEL:工艺革新引领精准波长控制新纪元

日本工程师们凭借精湛的技艺&#xff0c;开创了一种革命性的生产工艺&#xff0c;让VCSEL的制造达到了前所未有的高效与精准。这一成果由名城大学与国家先进工业科学技术研究所的精英们联手铸就&#xff0c;将氮化镓基VCSELs的商业化进程推向了新的高峰。它们将有望成为自适应前…

ArcGIS for js 4.x FeatureLayer 点选查询

示例&#xff1a; 代码如下&#xff1a; <template><view id"mapView"></view></template><script setup> import "arcgis/core/assets/esri/themes/light/main.css"; import Map from "arcgis/core/Map.js"; im…

【AI基础】第五步:纯天然保姆喂饭级-安装并运行chatglm3-6b

类似于 【AI基础】第三步&#xff1a;纯天然保姆喂饭级-安装并运行chatglm2-6b&#xff0c;有一些细节不一样。 此系列文章列表&#xff1a; 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步&#xff1a;安装python开发环境-…

五分钟看完WWDC24

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 北京时间6月11日凌晨1点&…

SylixOS下UDP组播测试程序

SylixOS下UDP组播测试 测试效果截图如下: udp组播发送测试程序。 /********************************************************************************************************* ** ** 中国软件开源组织 ** ** …

华为wlan实验

分为三步&#xff1a;1、网络互通&#xff0c;2、AP上线&#xff0c;3、wlan业务 1、网络互通 crow-sw: vlan batch 20 100 dhcp enable int vlan 20 ip add 192.168.20.1 24 dhcp select interfaceinterface GigabitEthernet0/0/2port link-type accessport default vlan 100…

构建 LLM 应用为什么需要文本加载器,langchain 中如何使用文本加载器?

构建 LLM 应用为什么需要文本加载器&#xff0c;langchain 中如何使用文本加载器&#xff1f; 上一篇文章中 [使用langchain搭建本地知识库系统(新) 我们构建一个 RAG 的本地应用&#xff0c;我们使用到了网页的文本加载器用来动态获取网页的数据。 在不同的应用场景中需要使…

【Spine学习07】之跑步动作制作思路总结

前几节试着做了待机和走路动画 现在开始尝试做跑步动作 注意跑步动作和走路一样 暂时不需要使用IK约束但是会用到塞贝尔曲线&#xff08;模拟裙子飞起动效&#xff09; 第一步&#xff1a; 先将人物整体斜放置&#xff08;因为人跑步的时候&#xff0c;身体前倾&#xff09; …

速度与激情:解锁8款免费文件传输利器,让大数据秒传成为可能

以下是8个免费高速文件传输工具的推荐&#xff0c;这些工具可以帮助您彻底告别数据线&#xff0c;使文件传输更加便捷和高效&#xff1a; 1、百度网盘 特点&#xff1a;云存储和共享应用&#xff0c;支持多种形式的文件存储和分享&#xff0c;提供大容量的免费存储空间。 适用…