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)
}


相关文章
|
1月前
|
Go
Go语言中的默认参数和可选参数详解
【2月更文挑战第22天】
220 2
|
1月前
|
存储 Go
Go 语言函数、参数和返回值详解
函数是一组语句,可以在程序中重复使用。函数不会在页面加载时自动执行。函数将通过调用函数来执行。
87 0
|
1月前
|
Go 数据处理
Go杂记1-切片Slice作为函数参数那点事儿
Go杂记1-切片Slice作为函数参数那点事儿
18 0
|
1月前
|
Prometheus 监控 Cloud Native
Golang深入浅出之-Go语言中的分布式追踪与监控系统集成
【5月更文挑战第4天】本文探讨了Go语言中分布式追踪与监控的重要性,包括追踪的三个核心组件和监控系统集成。常见问题有追踪数据丢失、性能开销和监控指标不当。解决策略涉及使用OpenTracing或OpenTelemetry协议、采样策略以及聚焦关键指标。文中提供了OpenTelemetry和Prometheus的Go代码示例,强调全面可观测性对微服务架构的意义,并提示选择合适工具和策略以确保系统稳定高效。
156 5
|
1月前
|
Go
go `...` 不定长(可选)参数
go `...` 不定长(可选)参数
|
1月前
|
供应链 算法 安全
掌握Go语言:函数精髓,定义、参数、多返回值与应用(14)
掌握Go语言:函数精髓,定义、参数、多返回值与应用(14)
|
1月前
|
存储 测试技术 Go
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
|
8月前
|
Go
Go 语言怎么使用变长参数函数?
Go 语言怎么使用变长参数函数?
31 0
|
1月前
|
中间件 Go
go 打印gin 中的c.Request的参数
在 Gin 框架中,可以通过 `c.Request` 获取请求对象,从而访问请求的参数。以下是一个示例,展示如何打印出 `c.Request` 中的参数: ```go package main import ( "fmt" "github.com/gin-gonic/gin" ) func LoggerMiddleware() gin.HandlerFunc { return func(c *gin.Context) { // 打印请求方法和路径 fmt.Printf("开始处理请求: %s %s\n", c.Request.Method, c.Request.URL.Pa
116 0
|
6月前
|
Cloud Native Go C语言
GO 语言如何用好变长参数?
GO 语言如何用好变长参数?
GO 语言如何用好变长参数?