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

Zabbix7.0LTS一经发布便吸引了众多运维小伙伴的关注,乐维社区(forum.lwops.cn)也伴随着不少小伙伴的热议与探讨,话不多说,抓紧上车。

前面我们介绍了,本篇将向大家介绍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/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 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留言~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容