WindowsのパフォーマンスログをRRDTOOLに投入したい。
監視ツールとかSNMPエージェント(net-snmpとか)を入れれば一発で済むんだろうけど、Windowsデフォルトオンリーだとこれしかない。探せば既にツールがあるような気がするんだけど、力技で作り始めてしまった。荒削りバージョン。UNIXTIMEの扱いがWindowsはデフォルトで持っていないのが面倒・・・。
- 前提事項:
処理は4段階:
-
- rrdファイルを作る。ファイル名とDSは両方とも列番号
- CSVファイルから、列番号.bat(投入データ用バッチファイル)と、列番号.txt(タイトルが入ってる)を作る。
- 作成したバッチファイルを実行する。←いまココ
- グラフを作成する(未完成)。
[rrdcreate.bat]
.\rrdtool\rrdtool create %1.rrd --start 開始時間[UNIXTIME] --step 15 DS:%1:GAUGE:600:U:U RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:6:700 RRA:AVERAGE:0.5:24:775 RRA:AVERAGE:0.5:288:797 RRA:MAX:0.5:1:600 RRA:MAX:0.5:6:700 RRA:MAX:0.5:24:775 RRA:MAX:0.5:288:797
pause
いろいろと、ファイルの操作にムリヤリ感が。
#第一引数 csvファイル #第二引数 何列目? require 'date' require 'csv'; csvfile=ARGV[0] column=ARGV[1] cmdbase = "rrdtool update "+ column +".rrd " fptitle = File::open(ARGV[1]+".txt", "a") fpbat = File::open(ARGV[1]+".bat", "a") i=0 CSV.open(csvfile, 'r') {|row| if i > 0 then datatime = DateTime.strptime(row[0][6..9]+row[0][0..1]+row[0][3..4]+row[0][11..12]+row[0][14..15]+row[0][17..18],'%Y%m%d%H%M%S').strftime('%s').to_i fpbat.puts cmdbase + datatime.to_s + ":" + row[column.to_i-1] else fptitle.puts row[column.to_i-1] end i=i+1 } fptitle.close fpbat.close