ZABBIX API:高效监控的利器

2dad85aa14a7b7b061dd36a25f7d6025.gif

新钛云服已累计为您分享794篇技术干货

e8fa8dd9e77ff713328798253ca16570.gif

ZABBIX是一款广受欢迎的高效监控工具,它提供了一系列丰富的API接口,使得日常监控任务变得更加便捷。无论是查看信息、添加主机、应用监控模板,还是执行删除操作,ZABBIX API都能助您一臂之力,尤其在进行大规模监控部署时,其快速、准确的特点尤为突出。

01

准备工作:ZABBIX API调用

本文将展示如何使用Python语言,结合HTTP客户端库,通过发送HTTP请求来实现ZABBIX API的各种功能。

首先,要访问Zabbix的数据,您需要登录并获取一个身份认证token。这可以通过使用user.login方法来完成。以下是一个简单的脚本示例:

[root@zbx-server]# vim zbxapi-create-hostgroup.py
# -*- coding:utf-8 -*-
import requests
import json
import sys
url = 'http://x.x.x.x(IP)/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin","password": "zabbix",      },"id": 0,
}
response = requests.post(url, headers=post_headers, data=json.dumps(post_data))
print("Response content:", response.text)
执行脚本:
python3  zbxapi-create-hostgroup.py  {hostgroup-name}
返回结果如下:
Response content: {"jsonrpc":"2.0","result":"cfeef2fbe1b680b773e930047448bab2","id":1}

其中result的值就是id: 1对应的身份认证auth的值

1619f67298939546704119e0c096cb7a.png

02

常用API功能及使用方法

01

创建主机群组并获取ID

创建一个新的主机群组,并获取其ID是后续操作的关键步骤。以下是一个Python脚本示例,用于创建群组并打印返回的组ID:

# -*- coding:utf-8 -*-
import requests
import json
import sys
url = 'http://x.x.x.x/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {"jsonrpc": "2.0","method": "hostgroup.create","params": {"name": sys.argv[1],  },"id": "1","auth": "xxxxxxxxxxxxxxxxxxxxxx",
}
response = requests.post(url, headers=post_headers, data=json.dumps(post_data))
print("Response status code:", response.status_code)
print("Response content:", response.text)

执行脚本并传入群组名称作为参数,您将得到类似如下的响应:

{"jsonrpc":"2.0","result":"cfeef2fbe1b680b773e930047448bab2","id":1}

其中,result字段的值即为新创建的主机群组ID。

a99bf172539953d15e66cb5c47a3a4aa.png

在zabbix web页面可以看到也是成功创建的主机群组并且groupid也都为21

7aa57af3bfaf8d3c03c3a26307bb9b3d.png

获取主机群组ID这一步是比较关键的,因为后续的创建模板,创建主机等,都需要用到groupid(主机群组ID),当新创建时可以通过API创建获取,个人也是比较喜欢,因为它可以创建的同时一并将ID也返回,如果是查询之前的,则web页面会方便一些,只需要鼠标放在对应位置即可,各有优势。

02

创建监控模板

创建模板是配置监控项和触发器的前提。以下是一个创建模板的脚本示例:

[root@zbx-server]# vim zbxapi-create-template.py
# -*- coding:utf-8 -*-
import requests
import json
import sys
url = 'http://x.x.x.x/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {"jsonrpc": "2.0","method": "template.create","params": {"host": sys.argv[1],"groups": {"groupid": sys.argv[2]},
},"id": "1","auth": "xxxxxxxxxxxxxxxxxxxxxx",
}
response = requests.post(url, headers=post_headers, data=json.dumps(post_data))
print("Response status code:", response.status_code)
print("Response content:", response.text)
执行脚本:
python3  zbxapi-create-template.py  {template-name}   {groupid}

06b8d148945c13cd51acc2f00f031454.png

执行脚本并传入模板名称和所属群组ID,您将能在Zabbix的Web界面中看到新创建的模板。

e93f3d47237c9d04a31d74e1136dcba3.png

03

创建监控主机并加入指定组

创建主机并将其加入到指定的监控群组中,是实现监控的最终步骤。以下是一个创建主机的脚本示例:

vim  zbx-host-create.py
# -*- coding:utf-8 -*-
import requests
import json
import sys
url = 'http://x.x.x.x/api_jsonrpc.php'
post_headers = {'Content-Type': 'application/json'}
post_data = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {"host": sys.argv[1],"interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": sys.argv[2],"dns": "","port": "10050"}],"groups": [{"groupid": sys.argv[3],  }],"templates": [{"templateid": sys.argv[4],}],"inventory_mode": 0,"inventory": {"macaddress_a": "01234","macaddress_b": "56768"}},"id": 1,"auth": "xxxxxxxxxxxxxxxxxxxxxx",
}
response = requests.post(url, headers=post_headers,   data=json.dumps(post_data))
print("Response status code:", response.status_code)
print("Response content:", response.text) 执行脚本:python3  zbx-host-create.py  {hostname}  {ip}  {groupid}  {templateid}

31647c1eee20914c817fc177224cec53.png

执行脚本并传入主机名、IP地址、群组ID和模板ID,您将成功创建一个新的监控主机,并将其绑定到指定的群组和模板。

d6817636d11a33d7b75d54bb5ae7e542.png

03

总 结

通过ZABBIX API,我们可以高效地完成主机创建等日常监控任务。在面对大量服务器需要监控时,与传统的Web界面操作相比,API提供了一种更加快速和自动化的解决方案。

此外,ZABBIX API还支持删除操作、添加标签、设置主机宏、创建监控大屏等众多功能,极大地提升了我们使用ZABBIX的效率和深度。

对于更详细的操作和功能,您可以参考ZABBIX官方API文档:

ZABBIX API Documentation

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

更多操作功能参考ZABBIX 官方API链接地址:

https://www.zabbix.com/documentation/current/zh/manual/api

    推荐阅读   

fa3426cf56b3c6702f82c3d42321cda1.png

20bdf3c157b1d9a6ccd048715cc1ab64.png

    推荐视频    

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号带宽和上升沿时间

我们在抽取高速信号的S参数时避不开的一个环节是设置仿真带宽,经常听到有人讲要设置基频(奈奎斯特频率)的4倍or 5倍带宽,如果是这样,就有一个问题:如果是56Gbps的NRZ信号,那仿真带宽真要设置到1…

linux系统-深入学习文件系统与日志分析

目录 一、inode于block inode于block概括inode的内容inode包含文件的元信息用stat命令可以查看某个文件的inode信息Linux系统文件三个主要的时间属性目录文件架构 用户通过文件名打开文件时,系统内部的过程查看inode号码的实操硬盘分区后的结构 👇用户访…

【golang学习之旅】Go 的基本数据类型

系列文章 【golang学习之旅】报错:a declared but not used 目录 系列文章总览布尔型(bool)字符串型(string)整数型(int、uint、byte、rune)浮点型(float32、float64)复…

【我的Java学习笔记-3】

运算符和表达式 运算符: 对字面量或者变量进行操作的符号。 表达式: 用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。 举例说明: int a10; int b 20; int c a b; …

软件测试报告的用途

软件测试报告的用途十分广泛,主要体现在以下几个方面: 评估软件质量:软件测试报告是对软件进行全面、系统测试后的总结,通过报告中的各项数据和结果,可以评估软件的质量水平,包括功能的完整性、性能的稳定…

linux-进程(2)

1.通过系统调用获取进程标示符 进程id(PID) 父进程id(PPID) 每一个可执行程序运行起来之后都会成为一个进程,每个进程都有一个自己的id,以及一个父进程id,父进程就是创建自己进程的进程&#xf…

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention多变量时间序列预测

SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 SCI一区级 | Matlab实现BES-CNN-GRU-Mutilhead-Attention秃鹰算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测预测效果基本介绍…

二叉树-从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7]前序遍历的…

Group Query Attention (GQA) 机制详解以及手动实现计算

Group Query Attention (GQA) 机制详解 1. GQA的定义 Grouped-Query Attention (GQA) 是对 Multi-Head Attention (MHA) 和 Multi-Query Attention (MQA) 的扩展。通过提供计算效率和模型表达能力之间的灵活权衡,实现了查询头的分组。GQA将查询头分成了G个组&#…

分享一个2099试用码!JetBrains 2024 版

程序员痛点: 好用的编程工具收费太贵 无法找到好且免费的编程资料(书或者视频) 今天我们话几分钟分享一个激活方法,一次学习,终身受益 一分钟激活全家桶旗下所有软件 支持更新 Stage 1.下载安装 toolbox-app&…

【论文阅读】《Octopus v2: On-device language model for super agent》,端侧大模型的应用案例

今年LLM的发展趋势之一,就是端侧LLM快速发展,超级APP入口之争异常激烈。不过,端侧LLM如何应用,不知道细节就很难理解。正好,《Octopus v2: On-device language model for super agent》这篇文章可以解惑。 对比部署在…

【小浩算法cpp题解】判断环形链表

目录 前言我的思路思路一 (哈希表记录链表的访问):思路二 (双指针,快指针在前,慢指针在后): 我的代码运行结果 前言 前几天我写的代码,都是把所有的内容写在main函数里&…