Go语言获取系统性能数据gopsutil库的操作
程序员文章站
2022-08-12 17:14:37
psutil是一个跨平台进程和系统监控的python库,而gopsutil是其go语言版本的实现。本文介绍了它的基本使用。go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文...
psutil是一个跨平台进程和系统监控的python库,而gopsutil是其go语言版本的实现。本文介绍了它的基本使用。
go语言部署简单、性能好的特点非常适合做一些诸如采集系统信息和监控的服务,本文介绍的库是知名python库:的一个go语言版本的实现。
一、安装
go get github.com/shirou/gopsutil
二、使用
2.1 cpu
采集cpu相关信息。
import "github.com/shirou/gopsutil/cpu" // cpu info func getcpuinfo() { cpuinfos, err := cpu.info() if err != nil { fmt.printf("get cpu info failed, err:%v", err) } for _, ci := range cpuinfos { fmt.println(ci) } // cpu使用率 for { percent, _ := cpu.percent(time.second, false) fmt.printf("cpu percent:%v\n", percent) } }
获取cpu负载信息:
import "github.com/shirou/gopsutil/load" func getcpuload() { info, _ := load.avg() fmt.printf("%v\n", info) }
2.2 memory
import "github.com/shirou/gopsutil/mem" // mem info func getmeminfo() { meminfo, _ := mem.virtualmemory() fmt.printf("mem info:%v\n", meminfo) }
2.3 host
import "github.com/shirou/gopsutil/host" // host info func gethostinfo() { hinfo, _ := host.info() fmt.printf("host info:%v uptime:%v boottime:%v\n", hinfo, hinfo.uptime, hinfo.boottime) }
2.4 disk
import "github.com/shirou/gopsutil/disk" // disk info func getdiskinfo() { parts, err := disk.partitions(true) if err != nil { fmt.printf("get partitions failed, err:%v\n", err) return } for _, part := range parts { fmt.printf("part:%v\n", part.string()) diskinfo, _ := disk.usage(part.mountpoint) fmt.printf("disk info:used:%v free:%v\n", diskinfo.usedpercent, diskinfo.free) } iostat, _ := disk.iocounters() for k, v := range iostat { fmt.printf("%v:%v\n", k, v) } }
2.5 net io
import "github.com/shirou/gopsutil/net" func getnetinfo() { info, _ := net.iocounters(true) for index, v := range info { fmt.printf("%v:%v send:%v recv:%v\n", index, v, v.bytessent, v.bytesrecv) } }
三、net
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("udp", "8.8.8.8:80") if err != nil { log.fatal(err) } defer conn.close() localaddr := conn.localaddr().(*net.udpaddr) fmt.println(localaddr.string()) return localaddr.ip.string() }
补充:go语言获取当前系统信息
1. 获取当前操作系统架构和名称:
import runtime fmt.println(runtime.goos) fmt.println(runtime.goarch) win7 64bit系统: windows amd64 macos(10.13.4) 64bit系统: darwin amd64
2. 获取本机名称:
name, err := os.hostname() if err == nil { fmt.println(name) }
输出: my-pc //计算机名称
3. 获取本机cpu个数:
fmt.println(runtime.gomaxprocs(0)) //4核机器返回:4
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。