golang 获取系统的主机 CPU 内存 磁盘等信息
golang 获取系统的主机 CPU 内存 磁盘等信息
要求
需要go1.18或更高版本
官方地址:https://github.com/shirou/gopsutil
使用
#下载包
go get github.com/shirou/gopsutil/v3/cpu
go get github.com/shirou/gopsutil/v3/disk
go get github.com/shirou/gopsutil/v3/host
go get github.com/shirou/gopsutil/v3/mem
go get github.com/shirou/gopsutil/v3/net
使用gin定义接口
hostRouters := r.Group("/host", func(context *gin.Context) {}){hostRouters.GET("stats", func(c *gin.Context) {statMap := make(map[string]interface{})// 获取主机相关信息hostInfo, _ := host.Info()hostMap := make(map[string]interface{})hostMap["uptime"] = hostInfo.Uptime //运行时间hostMap["bootTime"] = hostInfo.BootTime //启动时间hostMap["procs"] = hostInfo.Procs //进程数hostMap["os"] = hostInfo.OS //操作系统hostMap["platform"] = hostInfo.Platform //平台hostMap["platformVersion"] = hostInfo.PlatformVersion //平台版本hostMap["kernelArch"] = hostInfo.KernelArch //内核hostMap["kernelVersion"] = hostInfo.KernelVersion //内核版本statMap["hosts"] = hostMap// 获取内存信息memInfo, _ := mem.VirtualMemory()memMap := make(map[string]interface{})memMap["total"] = memInfo.Total //总内存memMap["available"] = memInfo.Available //可用内存memMap["used"] = memInfo.Used //已使用内存memMap["free"] = memInfo.Free //剩余内存memMap["usedPercent"] = memInfo.UsedPercent //百分比memMap["buffers"] = memInfo.Buffers //缓存memMap["shared"] = memInfo.Shared //共享内存memMap["cached"] = memInfo.Cached //缓冲区statMap["mems"] = memMap// 获取CPU信息cpuInfo, _ := cpu.Info()var cpuMapArr []map[string]interface{}for _, c := range cpuInfo {cpuMap := make(map[string]interface{})cpuMap["cpu"] = c.CPU + 1 //第几个CPU 从0开始的cpuMap["cores"] = c.Cores //CPU的核数cpuMap["modelName"] = c.ModelName //CPU类型cpuMapArr = append(cpuMapArr, cpuMap)}statMap["cpus"] = cpuMapArr// 获取IO信息ioInfo, _ := net.IOCounters(false)var ioMapArr []map[string]interface{}for _, i := range ioInfo {ioMap := make(map[string]interface{})ioMap["ioName"] = i.Name //网口名ioMap["bytesSent"] = i.BytesSent //发送字节数ioMap["bytesRecv"] = i.BytesRecv //接收字节数ioMap["packetsSent"] = i.PacketsSent //发送的数据包数ioMap["packetsRecv"] = i.PacketsRecv //接收的数据包数ioMapArr = append(ioMapArr, ioMap)}statMap["ios"] = ioMapArr// 获取磁盘信息partitions, _ := disk.Partitions(false)var diskMapArr []map[string]interface{}for _, partition := range partitions {diskMap := make(map[string]interface{})usage, _ := disk.Usage(partition.Mountpoint)diskMap["disk"] = partition.Mountpoint //第几块磁盘diskMap["total"] = usage.Total //总大小diskMap["free"] = usage.Free //剩余空间diskMap["used"] = usage.Used //已使用空间diskMap["usedPercent"] = usage.UsedPercent //百分比diskMapArr = append(diskMapArr, diskMap)}statMap["disks"] = diskMapArrutil.R(c, nil, statMap)})}
调用接口,查看接口响应数据
{"code": "0","msg": "成功","data": {"cpus": [{"cores": 1,"cpu": 1,"modelName": ""},{"cores": 1,"cpu": 2,"modelName": ""},{"cores": 1,"cpu": 3,"modelName": ""},{"cores": 1,"cpu": 4,"modelName": ""},{"cores": 1,"cpu": 5,"modelName": ""},{"cores": 1,"cpu": 6,"modelName": ""},{"cores": 1,"cpu": 7,"modelName": ""},{"cores": 1,"cpu": 8,"modelName": ""},{"cores": 1,"cpu": 9,"modelName": ""},{"cores": 1,"cpu": 10,"modelName": ""},{"cores": 1,"cpu": 11,"modelName": ""},{"cores": 1,"cpu": 12,"modelName": ""},{"cores": 1,"cpu": 13,"modelName": ""},{"cores": 1,"cpu": 14,"modelName": ""},{"cores": 1,"cpu": 15,"modelName": ""},{"cores": 1,"cpu": 16,"modelName": ""}],"disks": [{"disk": "/etc/hosts","free": 134272794624,"total": 469202288640,"used": 311020077056,"usedPercent": 69.84618367740407},{"disk": "/dev/termination-log","free": 134272794624,"total": 469202288640,"used": 311020077056,"usedPercent": 69.84618367740407},{"disk": "/etc/hostname","free": 134272794624,"total": 469202288640,"used": 311020077056,"usedPercent": 69.84618367740407},{"disk": "/etc/resolv.conf","free": 134272794624,"total": 469202288640,"used": 311020077056,"usedPercent": 69.84618367740407}],"hosts": {"bootTime": 1704638867,"kernelArch": "aarch64","kernelVersion": "5.10.0-136.40.0.117.oe2203sp1.aarch64","os": "linux","platform": "alpine","platformVersion": "3.19.0","procs": 1,"uptime": 14905256},"ios": [{"bytesRecv": 111431059,"bytesSent": 209346524,"ioName": "all","packetsRecv": 1505753,"packetsSent": 287887}],"mems": {"available": 48697397248,"buffers": 16645812224,"cached": 33186672640,"free": 2395566080,"shared": 2713157632,"total": 133410463744,"used": 81182412800,"usedPercent": 60.85160827847815}}
}
最后图表显示

相关文章:
golang 获取系统的主机 CPU 内存 磁盘等信息
golang 获取系统的主机 CPU 内存 磁盘等信息 要求 需要go1.18或更高版本 官方地址:https://github.com/shirou/gopsutil 使用 #下载包 go get github.com/shirou/gopsutil/v3/cpu go get github.com/shirou/gopsutil/v3/disk go get github.com/shirou/gopsuti…...
Infinitar链游新发展新机遇
区块链游戏市场在近年来经历了显著增长,吸引了大量的投资和关注。随着加密货币和NFT(非同质化代币)概念的普及,越来越多的投资者、游戏开发者和看到了区块链技术在游戏领域的应用潜力,纷纷涌入市场。区块链游戏的用户量…...
Figma 被爆出它剽窃了苹果的设计后撤下了AI工具Make Designs
Figma是一款流行的界面设计工具,最近它推出了一个名为Make Designs的新功能,这个功能利用人工智能帮助用户快速设计应用程序界面。但是,这个工具生成的设计竟然和苹果公司的iOS天气应用非常相似,这让外界怀疑Figma是否剽窃了苹果的…...
ERROR | Web server failed to start. Port 8080 was already in use.
错误提示: *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop the process thats listening on port 8080 or configure thi…...
C++ 类和对象 构造函数
一 类的6个默认成员函数: 如果一个类中什么成员都没有,简称为空类。 例: #include <iostream> class Empty {// 空类,什么成员都没有 }; 空类中真的什么都没有吗?并不是,任何类在什么都不写时&a…...
纯javascript实现图片批量压缩打包zip下载后端ThinkPHP多国语言切换国际站
最近在做一个多国语言的工具站,需要实现多国语言切换,说到多国语言站,肯定是有2种方式,第一是子域名,第二就是子目录。根据自己的需要来确定。 后台配置如下: 前台显示: 前端纯javascript实现…...
使用ChatGPT写论文,只需四步突破论文写作瓶颈!
欢迎关注,为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流 地表最强大的高级学术AI专业版已经开放,拥有全球领先的GPT学术科研应用,有兴趣的朋友可…...
神领物流项目第一天
文章目录 聚焦快递领域首先第一个是验证码模块流程登录接口权限管家 聚焦快递领域 首先第一个是验证码模块流程 首先生成验证码的流程 可以使用工具类去生成验证码 LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(160, 60, 4, 26);// 获取值然后存入redis中 strin…...
[作业]10 枚举-排列类
作业: 已做: #include <iostream> using namespace std; int n; int a[100]; void func(int ,int); int main(){cin>>n;func(0,n);return 0; } void func(int k,int m){if(k>m-1){for(int i0;i<m;i){cout<<a[i];}cout<<en…...
vue2(vue-cli3x[vue.config.js])使用cesium新版(1.117.0)配置过程
看来很多解决方法都没有办法,最后终于。呜呜呜呜 这里我用的是vue-cli去搭建的项目的vue2 项目,其实不建议用vue2搭配cesium。因为目前cesium停止了对vue2的版本更新,现在默认安装都是vue3版本,因此需要控制版本,否则…...
【深度学习】常用命令行指令汇总
这些指令对于管理深度学习环境、监控资源使用、调试程序等方面 查看显卡使用情况 要实时监控NVIDIA显卡的状态,可以使用命令: nvidia-smi -l 1这条命令会每秒刷新一次显卡的使用情况,包括GPU利用率、显存使用情况等。 查看当前Python环境 查看当前使用的Python环境,可…...
谷粒商城学习-11-docker安装redis
文章目录 一,拉取Redis镜像1,搜索Redis的Docker镜像2,拉取Redis镜像3,查看已经拉取的镜像 二,创建、启动Redis容器1,创建redis配置文件2,创建及运行Redis容器3,使用docker ps查看运行…...
C++:类继承是什么,怎么继承
一、类继承是什么 首先了解什么是基类,什么是派生类 在面向对象编程中,基类(Base Class 或 Superclass)是一个类的模板,它定义了一些通用的属性和行为。子类(Derived Class 或 Inheritance)可…...
期权学习必看圣书:《3小时快学期权》要在哪里看?
今天带你了解期权学习必看圣书:《3小时快学期权》要在哪里看?《3小时快学期权》是一本关于股票期权基础知识的书籍。 它旨在通过简明、易懂的语言和实用的案例,让读者在短时间内掌握股票期权的基本概念、操作方法和投资策略。通过这本书&…...
Keepalived 双机热备
1. Keepalived 双机热备 keepalived主要用来提供故障切换(failover)和健康检查(Health Checking)。 1.2 Keepalived 热备方式 Keepalived 采用VRRP (Virtual Router Redundancy Protocol,虚拟路由冗…...
基于React和TypeScript的开源白板项目(Github项目分享)
在学习前端开发的过程中,有时候我们需要一些有趣的项目来提升我们的技能。今天我要给大家介绍的是一个非常酷的项目——NinjaSketch,这是一个用React和TypeScript构建的简易白板工具。这个项目使用了Rough.js来实现手绘风格的效果。尽管这个应用不是响应…...
1019记录
人瑞 - SDK - 外派米哈游 1,接口测试的工具 回答的是postman, 改进:JMeter 2,接口502,什么问题导致的?如何定位? 参考答案:502错误定义:是网关错误, 通俗…...
详细设计与概要设计区别-慧哥充电桩开源系统
概要设计更侧重于系统的整体构架和模块划分,而详细设计则关注具体模块的实现细节。在软件开发过程中,这两个阶段虽然紧密相关,但它们各自有着不同的目标和方法。以下是具体分析: 目标 概要设计:概要设计关注系统整体架…...
vue3 引入百度地图的三种方式
本次也是正好写了一个基于VUE3和百度地图的设计,但奈何第一次使用百度地图,在学习的途中遇到了很多问题,也发现网上的材料相对较少,因此做出了一些小总结,后续还会更新。 一、直接引入 直接在public中的index.html中进…...
鸿蒙开发设备管理:【@ohos.usb (USB管理)】
USB管理 本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import …...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
