系统监控库-gopsutils
简介
在说gopsutils
之前我们必须先说下psutils
是啥, 因为gopsutils
实际上就是一个golang版本的psutils
(从名字上也能看出来)psutils
是一个比较出名的python库, psutils
是python process and system utilities
的一个缩写. 它有如下特点
- 跨平台: Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD and NetBSD的32位和64位系统
- 功能丰富: 实现了进程管理,系统诊断, 这个库基本实现了这些命令行工具的功能: ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap
如果想要了解关于gopsutils
更多的详情 请查看gopsutils github地址
安装
go get -v "github.com/shirou/gopsutil"
使用
具体的使用文档可以参考gopsutil的godoc文档
以下以测试收集cpu, disk, load, mem, net, process 为列, 注意这些对象都使用String方法, 因此可以直接调用fmt打印,String方法会将其转换成Json输出.
package main
import (
"fmt"
"github.com/shirou/gopsutil/cpu"
"github.com/shirou/gopsutil/disk"
"github.com/shirou/gopsutil/load"
"github.com/shirou/gopsutil/mem"
"github.com/shirou/gopsutil/net"
"github.com/shirou/gopsutil/process"
)
func main() {
fmt.Println("CPU统计:")
c, _ := cpu.Info()
fmt.Println(c)
fmt.Println("内存统计:")
m, _ := mem.VirtualMemory()
fmt.Println(m)
fmt.Println("磁盘用量和IO统计:")
dp, _ := disk.Partitions(true)
du, _ := disk.Usage("/")
di, _ := disk.IOCounters()
fmt.Println(du)
fmt.Println(