python代码获取zabbix上机器磁盘使用率

1.需要先给机器打上标记os_type: Linux或者os_type: Windows
在这里插入图片描述
2.代码请求获取数据:

先装一下相关的数据包 pip install pyzabbix

from pyzabbix import ZabbixAPI
import requests
import urllib3
import concurrent.futuresclass ZabbixInfo():def __init__(self, zabbix_server, zabbix_user, zabbix_password):self.zabbix_server = zabbix_serverself.zabbix_user = zabbix_userself.zabbix_password = zabbix_passworddef get_hosts_disk_space_utilization(zabbix_info: ZabbixInfo):host_disks_data_list = []session = requests.Session()# 忽略 SSL 验证的设置session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)# 连接到 Zabbix APIzapi = ZabbixAPI(zabbix_info.zabbix_server, session=session)zapi.login(zabbix_info.zabbix_user, zabbix_info.zabbix_password)# 获取所有主机hosts = zapi.host.get(output=['hostid', 'name'], selectInterfaces=['interfaceid', 'ip'], selectTags='extend',selectParentTemplates=['templateid', 'name'])# 多线程处理获取数据功能with concurrent.futures.ThreadPoolExecutor() as executor:# 提交任务并获取 Future 对象futures = [executor.submit(get_host_disk_info, host, zapi)for host in hosts]# 收集所有返回值for future in concurrent.futures.as_completed(futures):host_disks_data_list.append(future.result())zapi.user.logout()return host_disks_data_listdef get_host_disk_info(host, zapi):hostid = host['hostid']# hostname = host['name']host_ip = host['interfaces'][0]['ip']host_disk_info_list = []tags = host.get('tags', [])os_type = 'Linux'# 默认是 Linux,获取机器的类型for tag in tags:if tag['tag'] == 'os_type' and tag['value'] == 'Windows':os_type = 'Windows'breakdiskset = set()# 获取机器的磁盘列表# lld_items = zapi.discoveryrule.get(#     hostids=hostid, search={'key_': 'vfs.fs.discovery'}, output=['itemid', 'name'])# for lld_item in lld_items:lld_results = zapi.item.get(hostids=hostid, output=['itemid', 'name', 'key_', 'lastvalue'])for result in lld_results:if 'vfs.fs.size' in result['key_']:fsname = result['key_'].split('[')[1].split(',')[0]# print(f"Host: {hostname} - OS: {os_type} - Filesystem: {fsname}")# 提取文件系统名称if 'Windows' == os_type or ('Linux' == os_type and str(fsname).startswith('/net') and str(fsname).endswith('/fs0')):diskset.add(fsname)# 多线程处理获取disk实际数据功能host_data_dict = {}with concurrent.futures.ThreadPoolExecutor() as executor:# 提交任务并获取 Future 对象futures = [executor.submit(do_get_disk_info, host_disk_info_list, disk, hostid, zapi) for disk in diskset]# 收集所有返回值for future in concurrent.futures.as_completed(futures):host_data_dict = {host_ip: future.result()}return host_data_dictdef do_get_disk_info(host_disk_info_list, disk, hostid, zapi):oid = 'vfs.fs.size[%s,pused]' % diskitems = zapi.item.get(hostids=hostid, search={'key_': oid}, output=['itemid', 'name', 'lastvalue'])if items:for item in items:# print(f"Host: {hostname} ({os_type}) - Item: {item['name']} - Last Value: {item['lastvalue']}")# print(#     f"Host: {hostname} ({os_type}) - {item['name']}: {item['lastvalue']}")host_disk_info_list.append({item['name']: item['lastvalue']})return host_disk_info_listif __name__ == "__main__":zabbix_info_list = []zabbix_disk_info_list = []zabbix_info_list.append(ZabbixInfo('http://xxxxxxxxxx',  'username', 'password'))zabbix_info_list.append(ZabbixInfo('http://xxxxxxxxxxxxxx',  'username', 'password'))for zabbix in zabbix_info_list:zabbix_disk_info_list.append(get_hosts_disk_space_utilization(zabbix))for item in zabbix_disk_info_list:print(item)

最后的数据结构如下,这是我自己定义的,当然可以自己动代码进行修改
在这里插入图片描述

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

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

相关文章

一个完整的crm系统都应该具备哪些功能?CRM系统功能盘点

前段时间我们去拜访一位企业老板,正好他们在开会,团队正在讨论如何与一位潜在的大客户达成交易。 客户对产品表现出浓厚的兴趣,也提出了一些具体的问题,例如上一次交易的详细信息、服务响应时间以及可能的折扣方案,但…

导师双选系统开发:Spring Boot技术详解

第一章 绪论 1.1 选题背景 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信…

CTF顶级工具与资源

《Web安全》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484238&idx1&snca66551c31e37b8d726f151265fc9211&chksmc0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene21#wechat_redirect 《网安面试指南》h…

数列分块入门

本期是数列分块入门。其中的大部分题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:here (其实是对之前分块的 blog 的整理补充) sto hzwer orz %%% [转载] ---------------------------------------------------------------------------------…

模型自动绑骨,在线生成动画,神奇的网站《Mixamo》

英文名mixamo 网站地址:Mixamohttps://www.mixamo.com/#/首先进入需要注册,国内的手机号就可以,但是会有一些慢,多试几次 1、进入界面如下 2、载入自己的模型 2、绑定骨骼 拖动这几个有颜色的圈圈分别对应右图位置,点…

2024 CSS保姆级教程四

CSS中的动画 CSS动画(CSS Animations)是为层叠样式表建议的允许可扩展标记语言(XML)元素使用CSS的动画的模块​ 即指元素从一种样式逐渐过渡为另一种样式的过程​ 常见的动画效果有很多,如平移、旋转、缩放等等&#…

Docker安装anythingllm

拉镜像 docker pull mintplexlabs/anythingllm 启动 anythingllm docker run -d --name anythingllm --add-hosthost.docker.internal:host-gateway --env STORAGE_DIR/app/server/storage --health-cmd "/bin/bash/usr/local/bin/docker-healthcheck.sh || exit 1"…

格行:从新晋网红到国货之光,它究竟做对了什么?

作为一家迅速崛起的新消费品牌,近两年来,格行饱受质疑。 无论是商家还是消费者,都有人对其爱之恨之,喜欢它的人,认为它是正义的化身,价格的屠夫,国货的骄傲,原本需要花几百才能买到…

小菜家教平台(二):基于SpringBoot+Vue打造一站式学习管理系统

目录 前言 今日进度 详细过程 一、数据库重构 二、编写登录接口 相关知识点 前言 昨天我们重启了小菜家教平台的开发,创建了新项目并初步进行了配置,今天我们继续。大家要是有需要源码的话可以在评论区跟我说,博客中就不添加源码了~ 今…

数学期望和联合概率密度

数学期望的定义 数学期望是描述随机变量平均趋势的一个重要统计量。根据随机变量的类型(离散或连续),数学期望的定义有所不同。 离散型随机变量的数学期望: 若离散型随机变量 X X X取值为 x 1 , x 2 , … , x n , … x_1,x_2,\do…

MRCTF2020:你传你ma呢

文件上传题先判断黑白名单过滤,先传个最简单的木马 这里上传不了php文件,猜测可能是对php文件进行了过滤,将文件改为任意后缀这里改为.abc 还是上传不成功,猜测可能对MIME也做了过滤,将Content-Type更改为image/jpeg再…

Harmony项目基础

项目基础 开发环境 DevEco Stuio下载和安装 DevEco Studio下载 下载链接:https://developer.huawei.com/consumer/cn/deveco-studio/ 安装IDE 直接运行安装文件即可 配置SDK及工具链 DevEco Studio 提供 SDK Manager 统一管理 SDK 及工具组件,包括如下组件包&…

《使用Gin框架构建分布式应用》阅读笔记:p307-p392

《用Gin框架构建分布式应用》学习第16天,p307-p392总结,总86页。 一、技术总结 1.AWS chapter 08讲使用AWS进行部署,可以根据需要选择是否阅读。因为使用到的概率很小,且还要绑卡,本人选择跳过。 2.CI/CD (1)什么…

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间:2023年 机构:北京邮电大学 发表在:IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址: pytorch版本:https://github.com/dyh…

windows下安装jdk并配置环境

【1】安装jdk 这里建议傻瓜式安装,不要自定义路径,直接下一步下一步。 在Windows系统中安装JDK并设置环境变量(包括JAVA_HOME和CLASSPATH)是一个常见的任务。 1. 下载并安装JDK 访问Oracle官方网站或其他可信来源下载JDK安装包…

云安全真知实践 国内头部能源企业全面灵活云安全方案大公开

能源与安全,是两个紧密相连的齿轮,驱动着当今社会的运转与发展。能源是动力源泉,而安全则是守护这一动力的坚实支撑,保障着能源系统的运作与敏感数据的安全。 亚信安全一直以来为国内能源行业提供着安全保障,从石油、…

Photoshop 2025重磅来袭 :全新功能炫耀安装!Adobe全家桶

2024年10月,备受期待的Adobe Photoshop 2025正式版如约而至。每年的十月份,Adobe都会带来其软件的重要更新,而今年的Photoshop 2025则在改进和新功能方面做出了重磅升级,让创意工作者和设计师们倍感振奋。 新界面与核心功能 Ph…

【Java面试——计算机基础——网络——一篇就够了!!!】

1. 网络分层模型 1.1 OSI七层模型 OSI 七层模型 是国际标准化组织提出的一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路由和…

C#/.NET/.NET Core技术前沿周刊 | 第 11 期(2024年10.21-10.31)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…

(C#面向初学者的 .NET 的生成 AI) 第 3 部分-ChatGPT 简介

在本部分中,将简要介绍ChatGPT。我们将了解ChatGPT是什么,稍微探讨一下ChatGPT中的角色分工,聊天和消息历史记录的作用。最后我们将查看一个使用OpenAI .NET SDK的ChatGPT代码示例。 1、ChatGPT是什么呢? ChatGPT中的GPT部分来…