Go 系統監控利器-gopsutil
Go 系統監控利器-gopsutil
一、簡介
什麼是 gopsutil?
要說gopsutil就不得不先了解 psutil,顧名思義,psutil = process and system utilities, 它是 Python 的跨平臺庫,能夠輕鬆實現獲取系統執行的程式和系統利用率,包括 CPU、記憶體、磁碟、網路等資訊。 而gopsutil就是psutil的 Golang 移植版。
為什麼用 gopsutil?
和直接使用 syscall 呼叫對應的系統方法相比,gopsutil 為我們遮蔽了各個系統間的差異,可移植性非常強。
二、快速上手
安裝:
go get github.com/shirou/gopsutil
使用:
package main
import (
"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,之後還會寫這方面的介紹或者對比。
參考文件:
歡迎加入我們 GOLANG 中國社群:https://gocn.vip/
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 系統效能監控利器-collectd詳解
- Go之獲取系統效能指標 - goPsutilGo指標
- 【工具】tsar 監控Linux系統狀態的利器Linux
- MySQL監控利器-InnotopMySql
- iStat Menus:Mac系統狀態監控的終極利器Mac
- 開源監控利器grafanaGrafana
- Mysql 監控系統MySql
- 監控系統元件元件
- owl - Go語言開發的分散式監控系統Go分散式
- Go 每日一庫之 gopsutilGo
- 開源監控利器Prometheus初探Prometheus
- OpManager:網路監控的利器
- 運維監控利器nagios運維iOS
- 實時監控系統,統一監控企業APIAPI
- 系統之鍬sysdig:Linux伺服器監控和排障利器Linux伺服器
- Mac系統監控工具Mac
- 打造前端監控系統前端
- 手刃前端監控系統前端
- JavaWeb的監控系統JavaWeb
- Cacti 監控 AIX 系統AI
- 智慧工地監控系統
- 智慧影片監控系統
- linux效能監控利器20個Linux
- PostgreSQL——51風控系統背後的利器SQL
- 系統監控&JVM監控指標資料查詢JVM指標
- 運維監控系統 PIGOSS BSM的監控策略運維Go
- 駕駛員監控系統(DMS)
- python搭建系統監控Python
- sysstat——系統效能監控神器
- Docker 容器監控系統初探Docker
- Prometheus監控報警系統Prometheus
- 直播間截留監控系統
- zabbix系統監控部署(上)
- fanotify 監控檔案系統
- Nagios監控系統搭建iOS
- AIX系統nmon工具監控AI
- 搭建完美的監控系統
- linux 系統監控工具Linux