Golangで、システム情報というかOSのuptime(稼働時間)が取得したかったんですが、
Go sigar
を利用すると楽そうだったのでお世話になります。
とりあえず、ライブラリのダウンロードを行います
go get github.com/cloudfoundry/gosigar
uptimeとか取得してみる
そして早速サンプルコードですが、uptimeだけ取得しても寂しかったので、ロードベレージやメモリの使用率なども取得してみました。
■サンプルコード
package main import ( "fmt" "github.com/cloudfoundry/gosigar" ) func main() { uptime := sigar.Uptime{} uptime.Get() // uptime fmt.Printf("Uptime: %s \n", uptime.Format()) avg := sigar.LoadAverage{} avg.Get() // ロードアベレージ(1分、5分、15分) fmt.Printf("Load average: %.2f, %.2f, %.2f\n", avg.One, avg.Five, avg.Fifteen) mem := sigar.Mem{} mem.Get() // メモリ使用量 fmt.Printf("Mem(MB): total=%d, used=%d, free=%d\n", formatMB(mem.Total), formatMB(mem.Used), formatMB(mem.Free)) } func formatMB(val uint64) uint64 { return val / 1024 / 1014 }
■実行結果
Uptime: 46 days, 11:56 Load average: 1.52, 1.58, 1.82 Mem(MB): total=16545, used=9082, free=7463
まとめ
簡単にuptime等、一部のシステム情報を無事に取得することができました。