psutil是一个跨平台进程和系统监控的Python库,而gopsutil是其Go语言版本的实现。本文介绍了它的基本使用。
Go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文介绍的gopsutil库是知名Python库:psutil的一个Go语言版本的实现。
go get github.com/shirou/gopsutil
2.1 CPU
采集CPU相关信息。
import quot;github.com/shirou/gopsutil/cpuquot; // cpu info func getCpuInfo() { cpuInfos, err := cpu.Info() if err != nil { fmt.Printf(quot;get cpu info failed, err:%vquot;, err) } for _, ci := range cpuInfos { fmt.Println(ci) } // CPU使用率 for { percent, _ := cpu.Percent(time.Second, false) fmt.Printf(quot;cpu percent:%v\nquot;, percent) } }
获取CPU负载信息:
import quot;github.com/shirou/gopsutil/loadquot; func getCpuLoad() { info, _ := load.Avg() fmt.Printf(quot;%v\nquot;, info) }
2.2 Memory
import quot;github.com/shirou/gopsutil/memquot; // mem info func getMemInfo() { memInfo, _ := mem.VirtualMemory() fmt.Printf(quot;mem info:%v\nquot;, memInfo) }
2.3 Host
import quot;github.com/shirou/gopsutil/hostquot; // host info func getHostInfo() { hInfo, _ := host.Info() fmt.Printf(quot;host info:%v uptime:%v boottime:%v\nquot;, hInfo, hInfo.Uptime, hInfo.BootTime) }
2.4 Disk
import quot;github.com/shirou/gopsutil/diskquot; // disk info func getDiskInfo() { parts, err := disk.Partitions(true) if err != nil { fmt.Printf(quot;get Partitions failed, err:%v\nquot;, err) return } for _, part := range parts { fmt.Printf(quot;part:%v\nquot;, part.String()) diskInfo, _ := disk.Usage(part.Mountpoint) fmt.Printf(quot;disk info:used:%v free:%v\nquot;, diskInfo.UsedPercent, diskInfo.Free) } ioStat, _ := disk.IOCounters() for k, v := range ioStat { fmt.Printf(quot;%v:%v\nquot;, k, v) } }
2.5 net IO
import quot;github.com/shirou/gopsutil/netquot; func getNetInfo() { info, _ := net.IOCounters(true) for index, v := range info { fmt.Printf(quot;%v:%v send:%v recv:%v\nquot;, index, v, v.BytesSent, v.BytesRecv) } }
3.1 获取本机IP的两种方式
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 }
或:
// Get preferred outbound ip of this machine func GetOutboundIP() string { conn, err := net.Dial(quot;udpquot;, quot;8.8.8.8:80quot;) if err != nil { log.Fatal(err) } defer conn.Close() localAddr := conn.LocalAddr().(*net.UDPAddr) fmt.Println(localAddr.String()) return localAddr.IP.String() }
补充:Go语言获取当前系统信息
import runtime fmt.Println(runtime.GOOS) fmt.Println(runtime.GOARCH) Win7 64bit系统: windows amd64 macOS(10.13.4) 64bit系统: darwin amd64
name, err := os.Hostname() if err == nil { fmt.Println(name) }
输出: my-pc //计算机名称
fmt.Println(runtime.GOMAXPROCS(0)) //4核机器返回:4
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
标签:西双版纳 青海 儋州 物业服务 电子产品 海南 辽宁 安康
巨人网络通讯声明:本文标题《Go语言获取系统性能数据gopsutil库的操作》,本文关键词 语言,获取,系统,性能,数据,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。上一篇:golang获取网卡信息操作
下一篇:go语言 bool类型的使用操作