覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

Go言語 - システム情報を取得する

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等、一部のシステム情報を無事に取得することができました。



関連エントリ