rrdtool fetchをフォーマットするzsh関数
ネットワークの監視のためにトラフィックのデータをmrtgやcactiでとっていると,生データを見たくなる時が時々あるのだけれども,rrdtool fetchのデフォルトの表示では分かり辛いのでフォーマットするzshの関数を書いてみた.
ひとまず1カラム目のUNIX timeをフォーマットする関数.
rrd-fetch () { rrdtool fetch $@ | gawk -F : '{ s = $1; if (match($1, /^[0-9]+/)>0) { cmd = "date -r "$1" +\"%Y/%m/%d %H:%M:%S\""; cmd | getline s; close(cmd);} print s, $2}' }
こっちはLinux用(dateコマンドの仕様が違うので)
rrd-fetch () { rrdtool fetch $@ | gawk -F : '{ s = $1; if (match($1, /^[0-9]+/)>0) { cmd = "date -d @"$1" +\"%Y/%m/%d %H:%M:%S\""; cmd | getline s; close(cmd);} print s, $2}' }
更にトラフィックデータ用にMbpsで表示する関数.
rrd-fetch-mb () { rrd-fetch $@ | gawk '{ s = $1" "$2; i=2; while (++i <= NF){ if (match($i, /nan/)==0) {s = s" "sprintf("% 7.1f",strtonum($i)*8/1024/1024) } else { s = s" nan" } } print s }' }
実行するとこんな感じ.
$ rrd-fetch-mb hoge.rrd AVERAGE 2012/01/06 23:35:00 249.2 428.3 2012/01/06 23:40:00 272.3 426.5 2012/01/06 23:45:00 241.5 445.9 2012/01/06 23:50:00 nan nan 2012/01/06 23:55:00 nan nan