#上記の方法は要件を満たすことができますが、これらを実現する完全なサードパーティ ライブラリがすでに存在するため、車輪を再発明する必要はありません。私たちの収集要件。gopsutil です。
psutil (プロセス ユーティリティとシステム ユーティリティ) は、Python でプロセス ユーティリティとシステム ユーティリティを取得するためのクロスプラットフォーム ライブラリです ( CPU、メモリ、ディスク、ネットワーク、センサーなどの情報が含まれており、gopsutil はその Go 言語バージョンです。
gopsutil は、さまざまなシステムの違いから保護し、移植性に優れています。
サポートされているリスト
使用方法
import ( // "github.com/shirou/gopsutil/v3/mem" // to use v3 "github.com/shirou/gopsutil/mem" )たとえば、システム メモリの使用状況情報を確認したい場合は、次の方法で情報を取得できます。
package main import ( "fmt" "github.com/shirou/gopsutil/v3/mem" // "github.com/shirou/gopsutil/mem" // to use v2 ) func main() { v, _ := mem.VirtualMemory() // almost every return value is a struct fmt.Printf("Total: %v, Free:%v, UsedPercent:%f%%\n", v.Total, v.Free, v.UsedPercent) // convert to JSON. String() is also implemented fmt.Println(v) }結果は次のようになります。
Total: 8589934592, Free:138248192, UsedPercent:76.416254% {"total":8589934592,"available":2025828352,"used":6564106240,"usedPercent":76.4162540435791,"free":138248192,"active":1949327360,"inactive":1887580160,"wired":2214510592,"laundry":0,"buffers":0,"cached":0,"writeBack":0,"dirty":0,"writeBackTmp":0,"shared":0,"slab":0,"sreclaimable":0,"sunreclaim":0,"pageTables":0,"swapCached":0,"commitLimit":0,"committedAS":0,"highTotal":0,"highFree":0,"lowTotal":0,"lowFree":0,"swapTotal":0,"swapFree":0,"mapped":0,"vmallocTotal":0,"vmallocUsed":0,"vmallocChunk":0,"hugePagesTotal":0,"hugePagesFree":0,"hugePageSize":0}gopsutil パッケージは、ほとんどのコレクション関数が構造体オブジェクトを返すという点で使いやすく、すべて fmt.Stringer インターフェイスを実装しているため、印刷時に json 形式で出力されます。 。
たとえば、上の例では、mem.VirtualMemory は VirtualMemoryStat 構造体を返し、これが String() メソッドの json.Marshal() 関数を呼び出します。
type VirtualMemoryStat struct { Total uint64 `json:"total"` Available uint64 `json:"available"` Used uint64 `json:"used"` UsedPercent float64 `json:"usedPercent"` Free uint64 `json:"free"` Active uint64 `json:"active"` Inactive uint64 `json:"inactive"` Wired uint64 `json:"wired"` func (m VirtualMemoryStat) String() string { s, _ := json.Marshal(m) return string(s) }gopsutil は収集単位の異なるサブパッケージに分割されており、使用時に異なるサブパッケージを導入することで、関連するメソッドを呼び出すことができます。
import ( "github.com/shirou/gopsutil/v3/mem" "github.com/shirou/gopsutil/v3/cpu" "github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/docker" "github.com/shirou/gopsutil/v3/host" "github.com/shirou/gopsutil/v3/internal" "github.com/shirou/gopsutil/v3/load" "github.com/shirou/gopsutil/v3/mem" "github.com/shirou/gopsutil/v3/net" "github.com/shirou/gopsutil/v3/process" "github.com/shirou/gopsutil/v3/winservices" )たとえば、ホスト情報を取得したい場合は、github.com/shirou/gopsutil/v3/host サブパッケージを導入する必要があります
import ( "fmt" "github.com/shirou/gopsutil/v3/host" ) func main() { hostInfo, _ := host.Info() fmt.Println(hostInfo) }
输出
{"hostname":"MacBook-Pro.local","uptime":1619284,"bootTime":1644332729,"procs":301,"os":"darwin","platform":"darwin","platformFamily":"Standalone Workstation","platformVersion":"10.15.5","kernelVersion":"19.5.0","kernelArch":"x86_64","virtualizationSystem":"","virtualizationRole":"","hostId":"7a1a74f2-30fc-4cc1-b439-6b7aef22e45d"}
gopsutil 库有非常全面的覆盖单元,包括主机、磁盘、内存、CPU、网络、进程、docker等模块,它能很好地帮助我们获取系统信息。并且 gopsutil 处理了跨平台兼容性问题,对外接口基本保持一致,使用起来比较友好。
以上がまだ独自の Go システム監視関数を作成していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。