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

~

相关文章
|
搜索推荐 Android开发 iOS开发
探析安卓与iOS系统的优劣
【2月更文挑战第7天】安卓与iOS是当今手机市场上最主流的两款操作系统,各有优劣。本文将从用户体验、开放程度、生态系统等方面对两者进行深入探析,以期帮助读者更好地了解它们的特点。
|
应用服务中间件 nginx 数据安全/隐私保护
nginx中session ticket重用Session提高https性能分析
使用session ticket机制可以提高ssl握手的效率,并节约有效的服务器计算资源
16466 0
|
6月前
|
JSON 缓存 监控
GC吞吐量跌破92%?从根因到根治的生产级实战方案
本文以电商订单服务GC吞吐量仅92%的生产问题为例,结合GCEasy日志分析与JDK17+ZGC实战,系统拆解高并发下GC性能优化全流程。通过代码层(StringBuilder复用、对象池)、JVM层(G1调优、升级ZGC)及架构层(异步处理)分层优化,将GC吞吐量从92%提升至99.9%,平均响应时间降低64%,彻底解决服务延迟与熔断问题,为Java高并发系统性能调优提供完整实践路径。
526 3
|
7月前
|
Kubernetes API 开发工具
深入浅出K8S技术原理,搞懂K8S?这一篇就够了!
本文以“K8S帝国”为喻,系统解析Kubernetes核心技术原理。从声明式API、架构设计到网络、存储、安全、运维生态,深入浅出揭示其自动化编排本质,展现K8S如何成为云时代分布式操作系统的基石。(239字)
3553 6
|
11月前
|
移动开发 安全 搜索推荐
深度链接(Deep Link)实战指南:何时做?如何做?一篇讲透
本文探讨了 App 是否需要实现深度链接的问题,从产品复杂度、营销需求和用户旅程三个维度分析,帮助判断深度链接的最佳接入时机,并提供实操建议。
663 5
|
存储 自然语言处理 固态存储
初次使用 Elasticsearch 遇多种分词难题?那是你没掌握这些原理
命名有包含搜索关键词的文档,但结果却没有?存进去的文档被分成哪些词(term)了?自定义分词规则,但感觉好麻烦呢,无从下手?
6375 0
初次使用 Elasticsearch 遇多种分词难题?那是你没掌握这些原理
|
设计模式 开发框架 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(6) -- 窗口控件脏数据状态IsDirty的跟踪处理
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(6) -- 窗口控件脏数据状态IsDirty的跟踪处理
|
监控 Java 测试技术
五步定位性能瓶颈
在进行性能测试前,了解数据流向和系统架构至关重要。绘制数据流向图以识别潜在瓶颈,使用“水池模型”分析系统架构,优化测试流程,以提高测试效率。日志分析是诊断性能问题的关键,通过快速定位问题、保持环境一致性以及灵活调整日志级别来辅助测试。硬件资源占用分析,如CPU、内存、磁盘I/O和网络I/O,能帮助发现底层性能瓶颈。数据库监控,特别是通过等待事件分析,对解决性能问题具有重要意义。最后,服务器监控和代码深度剖析是解决复杂性能问题的终极手段,利用专业工具深入应用中间件,定位软件资源限制和代码层面的问题。通过这些策略,可以系统地识别和解决性能瓶颈,提升系统性能。
53139 4
|
监控 算法 Java
CPU突然被打满的原因(全方位分析)
CPU突然被打满的原因(全方位分析)

热门文章

最新文章