简介

什么是 gopsutil?要说gopsutil就不得不先了解 psutil,顾名思义,psutil = process and system utilities, 它是 Python 的跨平台库,能够轻松实现获取系统运行的进程和系统利用率,包括 CPU、内存、磁盘、网络等信息。而gopsutil就是psutil的 Golang 移植版。

为什么用 gopsutil?和直接使用 syscall 调用对应的系统方法相比,gopsutil 为我们屏蔽了各个系统间的差异,可移植性非常强。

快速上手

安装:

go get github.com/shirou/gopsutil

使用:

package mainimport ("fmt""github.com/shirou/gopsutil/cpu""time"
)func main() {info, _ := cpu.Info()per, _ := cpu.Percent(1 * time.Second, true)fmt.Printf("CPU Percent: %f\n", per)fmt.Println(info)
}

输出:

CPU Percent: [4.040404 4.000000 5.050505 6.930693]
[{"cpu":0,"vendorId":"AuthenticAMD","family":"23","model":"49","stepping":0,"physicalId":"0","coreId":"0","cores":1,"modelName":"AMD EPYC 7K62 48-Core Processor","mhz":2595.124,"cacheSize":512,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","rep_good","nopl","cpuid","extd_apicid","tsc_known_freq","pni","pclmulqdq","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","cmp_legacy","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","topoext","ibpb","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","rdseed","adx","smap","clflushopt","sha_ni","xsaveopt","xsavec","xgetbv1","arat"],"microcode":"0x1000065"} {"cpu":1,"vendorId":"AuthenticAMD","family":"23","model":"49","stepping":0,"physicalId":"0","coreId":"1","cores":1,"modelName":"AMD EPYC 7K62 48-Core Processor","mhz":2595.124,"cacheSize":512,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","rep_good","nopl","cpuid","extd_apicid","tsc_known_freq","pni","pclmulqdq","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","cmp_legacy","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","topoext","ibpb","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","rdseed","adx","smap","clflushopt","sha_ni","xsaveopt","xsavec","xgetbv1","arat"],"microcode":"0x1000065"} {"cpu":2,"vendorId":"AuthenticAMD","family":"23","model":"49","stepping":0,"physicalId":"0","coreId":"2","cores":1,"modelName":"AMD EPYC 7K62 48-Core Processor","mhz":2595.124,"cacheSize":512,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","rep_good","nopl","cpuid","extd_apicid","tsc_known_freq","pni","pclmulqdq","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","cmp_legacy","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","topoext","ibpb","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","rdseed","adx","smap","clflushopt","sha_ni","xsaveopt","xsavec","xgetbv1","arat"],"microcode":"0x1000065"} {"cpu":3,"vendorId":"AuthenticAMD","family":"23","model":"49","stepping":0,"physicalId":"0","coreId":"3","cores":1,"modelName":"AMD EPYC 7K62 48-Core Processor","mhz":2595.124,"cacheSize":512,"flags":["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","rep_good","nopl","cpuid","extd_apicid","tsc_known_freq","pni","pclmulqdq","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","hypervisor","lahf_lm","cmp_legacy","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","topoext","ibpb","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","rdseed","adx","smap","clflushopt","sha_ni","xsaveopt","xsavec","xgetbv1","arat"],"microcode":"0x1000065"}]

分工明确

gopsutil 将不同的功能划分到不同的子包中:主要为 cpu,disk,docker,host,mem,net,process,winservices 这几个。想要使用对应的功能,要导入对应的子包。例如,上面代码中,我们要获取 CPU 信息,导入的是 cpu 子包。上述样例中,我们获取到了每个 cpu 的占用率和所有 cpu 的详细信息。

闲言

最近正在写一个 Golang 实现性能监控的 demo,之后还会写这方面的介绍或者对比。

参考文档

https://github.com/shirou/gopsutil

还想了解更多吗?

更多请查看:https://github.com/shirou/gopsutil

欢迎加入我们GOLANG中国社区:https://gocn.vip/

《酷Go推荐》招募:

各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到

新的库,并且知道怎么用。

大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!(报名地址:https://wj.qq.com/s2/7734329/3f51)

扫码也可以加入 GoCN 的大家族哟~

Gopher China2021大会日程详情来了!

点击下方「阅读原文」即可报名参加大会

【GoCN酷Go推荐】Go 系统监控利器-gopsutil相关推荐

  1. 【GoCN酷Go推荐】Html解析利器-goquery库

    简介 什么是goquery? goquery是由Go实现的基于Go的net/html包和CSS选择器库cascadia的HTML解析库. 由于net/html解析器需要UTF-8编码,goquery也 ...

  2. 【GoCN酷Go推荐】会话控制利器 gorilla/sessions

    推荐 gorilla/sessions 的背景 在日常 Web 应用开发过程中,需要对用户登录状态进行判断,而 HTTP 是无状态的,即不记录用户登录状态,想要得到用户登录状态得把登录状态保存下来,通 ...

  3. 【GoCN酷Go推荐】ip2location 解析 IP 地址库

     简介 很多时候,我们获取了用户ip,但是想知道更多信息,怎么办?使用ip2location吧. 这个库,可以从IP地址快速查找国家,地区,城市,纬度,经度,邮政编码,时区,ISP,域名,连接类型,I ...

  4. 「GoCN酷Go推荐」golang 跨平台部署利器

    1 研究背景 go程序部署时,直接将编译好的文件在服务器上运行即可,一般无需安装所依赖的第三方库. Linux下部署分为以下几种方式: 使用nohup 命令 使用 Supervisord管理 使用sy ...

  5. 【GoCN酷Go推荐】Go 操作 excel 利器 excelize

    excelize 简介 Excelize是一个用Go语言编写的库,提供了一组允许您写入和读取XLSX / XLSM / XLTM文件的功能.支持读写由Microsoft Excel™2007和更高版本 ...

  6. 「GoCN酷Go推荐」简单易用的性能分析工具——nitro

    #1 推荐理由 Golang官方在程序性能分析方面提供了用来分析cpu/内存等采样信息的pprof,以及用来追踪和分析运行时事件的trace,这两个工具对于分析程序的性能瓶颈可以说是得心应手.但是,对 ...

  7. 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...

    PairMesh是什么? Pairmesh是一款先进的虚拟局域网(VPN)工具,用来搭建与访问安全,易用,高性能的点对点的软件定义虚拟局域网,为远程办公的网络连接问题提供了开箱即用的解决方案. 拥抱开 ...

  8. 「GoCN酷Go推荐」Go 语言高性能图像处理神器 h2non/bimg

    0 推荐背景 日常业务开发中常会遇到各种图像处理需求,如,图片大小调整.翻转.旋转.提取大小.加水印.图片模糊化,格式转换,修剪等等:图像处理根据业务需求一部分图像处理需求在前端完成,如,用户裁剪编辑 ...

  9. 「GoCN酷Go推荐」重试工具 — retry-go

    简介 在微服务架构中,通常会有很多的小服务,小服务之间存在大量 RPC 调用,但时常因为网络抖动等原因,造成请求失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定.ret ...

最新文章

  1. 大年初三闪光灯下的树和远处的花炮
  2. 提升沟通效率52%  阿里政务钉钉助力政府数字化转型
  3. YOLO 系目标检测算法家族全景图!
  4. Jquery跨域请求php数据(jsonp)
  5. Android 11正式版发布!
  6. lammps数据后处理:Python ovito 计算输出位错线长度
  7. goeasy小demo
  8. SourceOffSite Server和Visual SourceSafe 6.0d锁死问题的解决
  9. 零基础如何搭建个人网站,附完整建站步骤!
  10. 学会远程开机之后,发现远程控制软件特别多,哪些好用?哪些免费?
  11. 平均 15144 元、软件工程师占比最高,2021 年 2 月程序员工资最新出炉!
  12. php dt dd,DL.DT.DD实现左右的布局简单例子
  13. C/C++语言100题练习计划 88——猜数游戏(二分查找实现)
  14. 服务器端包含SSI(Server Side Include)简介
  15. Excel表格密码保护解除
  16. Linux常用命令以及vim的使用
  17. 树莓派打造无线扫描仪.
  18. 把 html标签转化为 html标签代码
  19. 英语----非谓语的另类运用:独立主格
  20. 作业盒子生端AndrOid,作业盒子小学下载安装学生版

热门文章

  1. 感受程序员的浪漫情怀-Github婚恋项目精选
  2. UILabel上显示笑脸符号 .
  3. 上海哪家券商两融利率最低?能提供量化交易软件ptrade和QMT?
  4. Parallels Desktop 16 完美解决初始化网络失败,无法联网,无法连接USB
  5. 快捷键实现MAC或者WINDOWS下快速切换显示器输入源
  6. 利用手机号码定位城市
  7. 时尚界新宠,高级穿搭1+1
  8. VMware虚拟机电脑硬盘如何分区图文详细教程
  9. Python多线程与多进程微信公众号后台开发
  10. 负载均衡 1 ---- ALB和CLB