详解如何调用zabbix API获取主机
发布时间 - 2026-01-10 22:33:57 点击率:次前言

zabbix 作为企业级的系统和网络监控方案,对于中小型公司来说基本可以很好的满足对机器的监控需求,因为其部署方便,操作简单深受现在各个互联网公司喜爱,所以现在基本的互联网公司监控用zabbix的非常多,当你安装好zabbix服务端 后,如果启动自动注册功能,在所有客户机安装后会自动在zabbix平台上被监控到,但这里有个问题,如果你机器数量非常少,如果还能数的过来那基本没什么问题,但如果你机器上千台了,这个时候那些机器被监控中,那些没被监控,查起来就没那么方便了,所以日常运维中经常发现的问题就是某台机器故障了但没报警,经查发现这台机器zabbix客户端因为某种原因导致没有被服务端监控到,像这种问题怎么办呢?其实最简单的方案就是从zabbix里获取所有被监控的服务器列表,然后跟运维资产数据库去比对,如果数量一致,那说明监控没漏机器,如果比对不上,就把对不上的IP发出来再报个警就可以了,整体逻辑就是这样。
Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。
Zabbix API提供两项主要功能:
- 远程管理Zabbix配置
- 远程检索配置和历史数据
我们今天用zabbix api获取被监控的所有机器列表
代码如下
#!/usr/bin/evn python
import requests
import json
ZABIX_ROOT = 'http://10.0.1.29/zabbix'
url = ZABIX_ROOT + '/api_jsonrpc.php'
# user.login
payload = {
"jsonrpc" : "2.0",
"method" : "user.login",
"params": {
'user': 'Admin',
'password':'',
},
"auth" : None,
"id" : 0,
}
headers = {
'content-type': 'application/json',
}
req = requests.post(url, json=payload, headers=headers)
auth = req.json()
# host.get
payload = {
"jsonrpc" : "2.0",
"method" : "host.get",
"params": {
'output': [
'hostid',
'name'],
},
"auth" : auth['result'],
"id" : 2,
}
res2 = requests.post(url, data=json.dumps(payload), headers=headers)
res2 = res2.json()
for host in res2['result']:
with open('host.txt', 'a+') as f:
f.write(host['name'] + '\n)
脚本一共分二部分,第一部分是用户登录,登录后然后获取主机列表,最后写到一个文件里去,所以脚本运行的结果是生成一个所有被监控的IP列表,通过这个列表你就可以去跟你的资产库信息去对比了,还有这个脚本用的requests,所以看起来要清爽很多,代码比较简单,就是二个post就不做太多解释了。
总结
以上就是关于调用zabbix API获取主机的全部内容了,喜欢的小伙伴可以在此基础上修改成合适自己业务的脚本,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# zabbix
# api添加主机
# api
# 创建主机
# python通过zabbix api获取主机
# 教你使用zabbix api批量添加数百台监控主机的方法
# 如果你
# 互联网
# 新和
# 比对
# 客户端
# 都是
# 是在
# 很好
# 太多
# 有个
# 还能
# 当你
# 是从
# 不上
# 就没
# 就把
# 这个时候
# 为其
# 不做
# 你喜欢
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Android自定义控件实现温度旋转按钮效果
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
PythonWeb开发入门教程_Flask快速构建Web应用
Python结构化数据采集_字段抽取解析【教程】
Python面向对象测试方法_mock解析【教程】
香港网站服务器数量如何影响SEO优化效果?
如何在云主机上快速搭建网站?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何构建满足综合性能需求的优质建站方案?
iOS正则表达式验证手机号、邮箱、身份证号等
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
如何有效防御Web建站篡改攻击?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
什么是javascript作用域_全局和局部作用域有什么区别?
Android使用GridView实现日历的简单功能
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
如何在阿里云服务器自主搭建网站?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel如何使用Eloquent进行子查询
如何基于云服务器快速搭建网站及云盘系统?
在线教育网站制作平台,山西立德教育官网?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
详解jQuery停止动画——stop()方法的使用
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Laravel如何处理文件下载请求?(Response示例)
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
如何快速配置高效服务器建站软件?
Laravel如何保护应用免受CSRF攻击?(原理和示例)
如何正确选择百度移动适配建站域名?
浅谈Javascript中的Label语句
如何在Windows服务器上快速搭建网站?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何安全更换建站之星模板并保留数据?

