【Golang】gopsutil包常用监控资源信息API

【Golang】gopsutil包常用监控资源信息API

码农世界 2024-05-21 后端 75 次浏览 0个评论

【Golang】gopsutil包常用监控资源信息API

大家好 我是寸铁👊

总结了一篇【Golang】gopsutil包常用监控资源信息API✨

喜欢的小伙伴可以点点关注 💝

前言

本文涵盖了最常用的系统资源监控函数,可以直接拿函数进行调用,非常方便

  • 先安装gopsutil包
    go get -u `github.com/shirou/gopsutil`
    
    • 或者导入后用go mod引入
      go mod tidy
      

      CPU

      获取Cpu相关的全部信息

      // 获取Cpu相关的全部信息
      func getCpuAllInfo() {
      	cpuInfo, _ := cpu.Info()
      	fmt.Println("返回cpu的具体信息:", cpuInfo)
      }
      

      返回cpu执行不同操作所花费的时间

      // 返回cpu执行不同操作所花费的时间
      func getCpuCountsTimes() {
      	cpuCounts, _ := cpu.Times(false)
      	fmt.Println("返回cpu执行不同操作所花费的时间 工作种类:", cpuCounts)
      	//TimesStat 包含 CPU 执行不同操作所花费的时间 工作种类。时间单位以秒为单位。它基于 linux /proc/stat 文件。
      }
      

      返回CPU的使用率

      // 返回CPU的使用率
      func getCpuPercent() {
      	cpuPercent, _ := cpu.Percent(time.Second, false)
      	fmt.Println("返回cpu的使用率:", cpuPercent)
      }
      

      内存

      获取物理内存和交换区内存信息

      // 获取物理内存和交换区内存信息
      func getVirtualMemory() {
      	m1, _ := mem.VirtualMemory()
      	fmt.Println("返回虚拟内存的信息:", m1)
      }
      

      返回交换内存的信息

      // 返回交换内存的信息
      func getSwapMemory() {
      	m2, _ := mem.SwapMemory()
      	fmt.Println("返回交换内存的信息:", m2)
      }
      

      返回交换设备的信息

      // 返回交换设备的信息
      func getSwapDevices() {
      	devices, _ := mem.SwapDevices()
      	fmt.Println("返回交换设备的信息:", devices)
      }
      

      磁盘

      返回有关文件系统挂载点的信息

      // 返回有关文件系统挂载点的信息
      func getDiskPartitions() {
      	//可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息
      	d1, _ := disk.Partitions(true) //所有分区
      	fmt.Println("有关文件系统挂载点的信息:", d1)
      }
      

      返回指定某路径的硬盘使用情况

      // 返回指定某路径的硬盘使用情况
      func getDiskUsage(path string) {
      	d2, _ := disk.Usage(path) //指定某路径的硬盘使用情况
      	fmt.Println("指定E硬盘使用情况:", d2)
      }
      

      返回关于磁盘分区的输入/输出(I/O)统计信息

      // 返回关于磁盘分区的输入/输出(I/O)统计信息
      func getDiskIOCounters() {
      	d3, _ := disk.IOCounters() //所有硬盘的io信息
      	fmt.Println("关于磁盘分区的输入/输出(I/O)统计信息:", d3)
      }
      

      文件

      返回文件压缩情况

      // 返回文件压缩情况
      func getFileFileCompression() {
      	compression := disk.FileFileCompression
      	fmt.Println("返回文件压缩情况: ", compression)
      }
      

      返回只读文件卷的数量

      // 返回只读文件卷的数量
      func getFileReadOnlyVolume() {
      	volume := disk.FileReadOnlyVolume
      	fmt.Println("返回只读文件卷的数量: ", volume)
      }
      

      网络

      返回当前网络连接信息

      // 返回当前网络连接信息
      func getNetConnections(kind string) {
      	//获取当前网络连接信息
      	n1, _ := net.Connections(kind) //可填入tcp、udp、tcp4、udp4等等
      	fmt.Println("获取当前网络连接信息: ", n1)
      }
      

      获取网络读写字节/包的个数

      // 获取网络读写字节/包的个数
      func getNetIOCounters() {
      	//获取网络读写字节/包的个数
      	n2, _ := net.IOCounters(false)
      	fmt.Println("获取网络读写字节/包的个数: ", n2)
      }
      

      返回网络过滤器计数器

      // 返回网络过滤器计数器
      func getNetFilterCounters() {
      	n3, _ := net.FilterCounters()
      	fmt.Println("过滤器计数器: ", n3)
      }
      

      返回网络的接口信息

      // 返回网络的接口信息
      func getNetInterfaces() {
      	interfaces, _ := net.Interfaces()
      	fmt.Println("网络的接口信息: ", interfaces)
      }
      

      返回本机信息的详细信息

      // 返回本机信息的详细信息
      func getHostInfo() {
      	h, _ := host.Info()
      	fmt.Println("本机信息: ", h)
      }
      

      demo

      package main
      import (
      	"fmt"
      	"github.com/shirou/gopsutil/cpu"
      	"github.com/shirou/gopsutil/disk"
      	"github.com/shirou/gopsutil/host"
      	"github.com/shirou/gopsutil/mem"
      	"github.com/shirou/gopsutil/net"
      	"time"
      )
      func main() {
      	fmt.Println("获取Cpu相关信息")
      	//获取Cpu相关信息
      	getCpuAllInfo()
      	getCpuCountsTimes()
      	getCpuPercent()
      	fmt.Println("------------------------------------")
      	fmt.Println("获取内存相关信息")
      	//获取内存相关信息
      	getVirtualMemory()
      	getSwapMemory()
      	getSwapDevices()
      	fmt.Println("------------------------------------")
      	fmt.Println("获取磁盘相关信息")
      	//获取磁盘相关信息
      	getDiskPartitions()
      	//要查看磁盘信息的路径
      	path := "E:"
      	getDiskUsage(path)
      	getDiskIOCounters()
      	getFileFileCompression()
      	getFileReadOnlyVolume()
      	fmt.Println("------------------------------------")
      	fmt.Println("获取网络相关信息")
      	//获取当前网络连接信息
      	kind := "tcp" //可填入tcp、udp、tcp4、udp4等等
      	getNetConnections(kind)
      	getNetIOCounters()
      	getNetFilterCounters()
      	getNetInterfaces()
      	fmt.Println("------------------------------------")
      	fmt.Println("获取主机相关信息")
      	//获取主机相关信息
      	getHostInfo()
      	fmt.Println("------------------------------------")
      }
      // 获取Cpu相关的全部信息
      func getCpuAllInfo() {
      	cpuInfo, _ := cpu.Info()
      	fmt.Println("返回cpu的具体信息:", cpuInfo)
      }
      // 返回cpu执行不同操作所花费的时间
      func getCpuCountsTimes() {
      	cpuCounts, _ := cpu.Times(false)
      	fmt.Println("返回cpu执行不同操作所花费的时间 工作种类:", cpuCounts)
      	//TimesStat 包含 CPU 执行不同操作所花费的时间 工作种类。时间单位以秒为单位。它基于 linux /proc/stat 文件。
      }
      // 返回CPU的使用率
      func getCpuPercent() {
      	cpuPercent, _ := cpu.Percent(time.Second, false)
      	fmt.Println("返回cpu的使用率:", cpuPercent)
      }
      // 获取物理内存和交换区内存信息
      func getVirtualMemory() {
      	m1, _ := mem.VirtualMemory()
      	fmt.Println("返回虚拟内存的信息:", m1)
      }
      // 返回交换内存的信息
      func getSwapMemory() {
      	m2, _ := mem.SwapMemory()
      	fmt.Println("返回交换内存的信息:", m2)
      }
      // 返回交换设备的信息
      func getSwapDevices() {
      	devices, _ := mem.SwapDevices()
      	fmt.Println("返回交换设备的信息:", devices)
      }
      // 返回有关文件系统挂载点的信息
      func getDiskPartitions() {
      	//可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息
      	d1, _ := disk.Partitions(true) //所有分区
      	fmt.Println("有关文件系统挂载点的信息:", d1)
      }
      // 返回指定某路径的硬盘使用情况
      func getDiskUsage(path string) {
      	d2, _ := disk.Usage(path) //指定某路径的硬盘使用情况
      	fmt.Println("指定E硬盘使用情况:", d2)
      }
      // 返回关于磁盘分区的输入/输出(I/O)统计信息
      func getDiskIOCounters() {
      	d3, _ := disk.IOCounters() //所有硬盘的io信息
      	fmt.Println("关于磁盘分区的输入/输出(I/O)统计信息:", d3)
      }
      // 返回文件压缩情况
      func getFileFileCompression() {
      	compression := disk.FileFileCompression
      	fmt.Println("返回文件压缩情况: ", compression)
      }
      // 返回只读文件卷的数量
      func getFileReadOnlyVolume() {
      	volume := disk.FileReadOnlyVolume
      	fmt.Println("返回只读文件卷的数量: ", volume)
      }
      // 返回当前网络连接信息
      func getNetConnections(kind string) {
      	//获取当前网络连接信息
      	n1, _ := net.Connections(kind) //可填入tcp、udp、tcp4、udp4等等
      	fmt.Println("获取当前网络连接信息: ", n1)
      }
      // 获取网络读写字节/包的个数
      func getNetIOCounters() {
      	//获取网络读写字节/包的个数
      	n2, _ := net.IOCounters(false)
      	fmt.Println("获取网络读写字节/包的个数: ", n2)
      }
      // 返回网络过滤器计数器
      func getNetFilterCounters() {
      	n3, _ := net.FilterCounters()
      	fmt.Println("过滤器计数器: ", n3)
      }
      // 返回网络的接口信息
      func getNetInterfaces() {
      	interfaces, _ := net.Interfaces()
      	fmt.Println("网络的接口信息: ", interfaces)
      }
      // 返回本机信息的详细信息
      func getHostInfo() {
      	h, _ := host.Info()
      	fmt.Println("本机信息: ", h)
      }
      

      看到这里的小伙伴,恭喜你又掌握了一个技能👊

      希望大家能取得胜利,坚持就是胜利💪

      我是寸铁!我们下期再见💕


      往期好文💕

      保姆级教程

      【保姆级教程】Windows11下go-zero的etcd安装与初步使用

      【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

      【Go-Zero】手把手带你在goland中创建api文件并设置高亮


      报错解决

      【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

      【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

      【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

      【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

      【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

      【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

      【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


      Go面试向

      【Go面试向】defer与time.sleep初探

      【Go面试向】defer与return的执行顺序初探

      【Go面试向】Go程序的执行顺序

      【Go面试向】rune和byte类型的认识与使用

      【Go面试向】实现map稳定的有序遍历的方式

转载请注明来自码农世界,本文标题:《【Golang】gopsutil包常用监控资源信息API》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,75人围观)参与讨论

还没有评论,来说两句吧...

Top