Go整合gopsutils监控系统性能指标参数

简介: Go整合gopsutils监控系统性能指标参数

1 简介

以下系统环境可以使用:

  • FreeBSD i386/amd64/arm
  • Linux i386/amd64/arm(raspberry pi)
  • Windows i386/amd64/arm/arm64
  • Darwin i386/amd64
  • OpenBSD amd64 (Thank you @mpfz0r!)
  • Solaris amd64 (developed and tested on SmartOS/Illumos, Thank you @jen20!)

这些都有部分支持:

  • CPU on DragonFly BSD
  • host on Linux RISC-V

安装方式:

go get github.com/shirou/gopsutil
复制代码

2 常用的API具体使用

2.1 CPU信息

package main
import (
   "fmt"
   "github.com/shirou/gopsutil/cpu"
   "time"
)
//获取CPU信息
func getCpuInfo() {
   //1 CPU全部信息
   cpuInfos, err := cpu.Info()
   if err != nil {
      fmt.Printf("获取CPU信息出错 , err:\n %v", err)
   }
   for _, ci := range cpuInfos {
      fmt.Println("CPU基本信息 : \n", ci)
   }
   // 实时加载CPU使用率
   for {
      //每秒加载一次
      percent, _ := cpu.Percent(time.Second, false)
      fmt.Printf("CPU负载信息 : %v\n", percent)
   }
}
func main() {
   getCpuInfo()
}
复制代码

2.2 磁盘信息

package main
import (
   "fmt"
   "github.com/shirou/gopsutil/disk"
)
// 磁盘信息
func getDiskInfo() {
   parts, err := disk.Partitions(true)
   if err != nil {
      fmt.Printf("获取磁盘信息失败 , err:%v\n", err)
      return
   }
   for _, part := range parts {
      fmt.Printf("磁盘分区 :%v\n", part.String())
      diskInfo, _ := disk.Usage(part.Mountpoint)
      fmt.Printf("该磁盘使用信息:used:%v free:%v\n", diskInfo.UsedPercent, diskInfo.Free)
   }
   ioStat, _ := disk.IOCounters()
   for k, v := range ioStat {
      fmt.Printf("%v:%v\n", k, v)
   }
}
func main() {
   getDiskInfo()
}
复制代码

2.3 内存信息

package main
import (
   "fmt"
   "github.com/shirou/gopsutil/mem"
)
//内存信息
func getMemInfo() {
   //获取内存信息
   memInfo, _ := mem.VirtualMemory()
   fmt.Printf("内存信息 :\n %v", memInfo)
}
func main() {
   getMemInfo()
}
复制代码

2.4 主机信息

package main
import (
   "fmt"
   "github.com/shirou/gopsutil/host"
)
//主机信息
func getHostInfo() {
   hInfo, _ := host.Info()
   fmt.Printf("主机信息 :\n %v", hInfo)
}
func main() {
   getHostInfo()
}
复制代码

2.5 IP地址信息

package main
import (
   "fmt"
   "net"
)
func GetLocalIP() (ip string, err error) {
   addrs, err := net.InterfaceAddrs()
   if err != nil {
      return
   }
   for _, addr := range addrs {
      ipAddr, ok := addr.(*net.IPNet)
      if !ok {
         continue
      }
      if ipAddr.IP.IsLoopback() {
         continue
      }
      if !ipAddr.IP.IsGlobalUnicast() {
         continue
      }
      return ipAddr.IP.String(), nil
   }
   return
}
func main() {
   ip, err := GetLocalIP()
   if err!=nil {
      fmt.Print(err)
   }
   fmt.Println("IP地址 : "+ip)
}


相关文章
|
15天前
|
存储 Go 文件存储
M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
【10月更文挑战第12天】本文详细介绍了如何使用M.2移动硬盘制作Win To Go系统。首先,需准备合适容量与接口类型的M.2硬盘及硬盘盒,并获取Windows镜像文件和分区工具。接着,通过Rufus软件将镜像写入硬盘。文中还提供了分区策略,包括系统分区(约80-120GB)、软件分区(根据需求设定)和数据分区(剩余空间),并指导如何使用DiskGenius或Windows自带工具进行分区。最后,强调了对各分区文件的有效管理和定期备份的重要性。
|
16天前
|
存储 固态存储 Go
M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
【10月更文挑战第11天】Win To Go 是一种将 Windows 系统安装在 M.2 移动硬盘上的技术,便于用户携带自定义系统跨设备使用。需准备高性能 M.2 硬盘及合适硬盘盒,并使用 DiskGenius 或 Rufus 进行分区与系统安装。系统分区用于安装 Windows,其余分区可根据需求存储工作或娱乐文件,便于管理和备份。
|
28天前
|
Go
Go to Learn Go之命令行参数
Go to Learn Go之命令行参数
26 8
|
7天前
|
Java Go 云计算
Go语言在云计算和高并发系统中的卓越表现
【10月更文挑战第10天】Go语言在云计算和高并发系统中的卓越表现
|
1月前
|
存储 监控 数据可视化
Go 语言打造公司监控电脑的思路
在现代企业管理中,监控公司电脑系统对保障信息安全和提升工作效率至关重要。Go 语言凭借其高效性和简洁性,成为构建监控系统的理想选择。本文介绍了使用 Go 语言监控系统资源(如 CPU、内存)和网络活动的方法,并探讨了整合监控数据、设置告警机制及构建可视化界面的策略,以满足企业需求。
44 1
|
2月前
|
关系型数据库 MySQL API
我用 go-zero 一周实现了一个中台系统
我用 go-zero 一周实现了一个中台系统
|
2月前
|
Kubernetes 监控 Cloud Native
"解锁K8s新姿势!Cobra+Client-go强强联手,打造你的专属K8s监控神器,让资源优化与性能监控尽在掌握!"
【8月更文挑战第14天】在云原生领域,Kubernetes以出色的扩展性和定制化能力引领潮流。面对独特需求,自定义插件成为必要。本文通过Cobra与Client-go两大利器,打造一款监测特定标签Pods资源使用的K8s插件。Cobra简化CLI开发,Client-go则负责与K8s API交互。从初始化项目到实现查询逻辑,一步步引导你构建个性化工具,开启K8s集群智能化管理之旅。
46 2
|
2月前
|
Go 开发者
|
2月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
34 0
|
2月前
|
存储 编译器 Go