2009-01-05

なぞのUCD-DISKIO-MIB

会社のFedoraなマシンのサーバステータスをrrdtoolsを使ってグラフ化してます。グラフ化している値の中でUCD-DISKIO-MIBのdiskIONReadとdiskIONWrittenを使ったディスクIOの読み込みと書き込みをグラフ化しているんだけど、最近ちょっと変。 どう変なのかというと、sdaのつもりでとっていたdiskIONReadやdiskIONWrittenの値がループでバイスの値になっているぽい。つまり、
nabeo@foo:~[8413]% snmpwalk -c public -v 1 bar diskIODevice UCD-DISKIO-MIB::diskIODevice.1 = STRING: ram0 UCD-DISKIO-MIB::diskIODevice.2 = STRING: ram1 UCD-DISKIO-MIB::diskIODevice.3 = STRING: ram2 UCD-DISKIO-MIB::diskIODevice.4 = STRING: ram3 UCD-DISKIO-MIB::diskIODevice.5 = STRING: ram4 UCD-DISKIO-MIB::diskIODevice.6 = STRING: ram5 UCD-DISKIO-MIB::diskIODevice.7 = STRING: ram6 UCD-DISKIO-MIB::diskIODevice.8 = STRING: ram7 UCD-DISKIO-MIB::diskIODevice.9 = STRING: ram8 UCD-DISKIO-MIB::diskIODevice.10 = STRING: ram9 UCD-DISKIO-MIB::diskIODevice.11 = STRING: ram10 UCD-DISKIO-MIB::diskIODevice.12 = STRING: ram11 UCD-DISKIO-MIB::diskIODevice.13 = STRING: ram12 UCD-DISKIO-MIB::diskIODevice.14 = STRING: ram13 UCD-DISKIO-MIB::diskIODevice.15 = STRING: ram14 UCD-DISKIO-MIB::diskIODevice.16 = STRING: ram15 UCD-DISKIO-MIB::diskIODevice.17 = STRING: sda UCD-DISKIO-MIB::diskIODevice.18 = STRING: sda1 UCD-DISKIO-MIB::diskIODevice.19 = STRING: sda2 UCD-DISKIO-MIB::diskIODevice.20 = STRING: sdb UCD-DISKIO-MIB::diskIODevice.21 = STRING: sdb1 UCD-DISKIO-MIB::diskIODevice.22 = STRING: sr0 nabeo@foo:~[8414]%
というつもりでMIB値をとっているつもりが、いつのまにか
UCD-DISKIO-MIB::diskIODevice.1 = STRING: ram0 UCD-DISKIO-MIB::diskIODevice.2 = STRING: ram1 UCD-DISKIO-MIB::diskIODevice.3 = STRING: ram2 UCD-DISKIO-MIB::diskIODevice.4 = STRING: ram3 UCD-DISKIO-MIB::diskIODevice.5 = STRING: ram4 UCD-DISKIO-MIB::diskIODevice.6 = STRING: ram5 UCD-DISKIO-MIB::diskIODevice.7 = STRING: ram6 UCD-DISKIO-MIB::diskIODevice.8 = STRING: ram7 UCD-DISKIO-MIB::diskIODevice.9 = STRING: ram8 UCD-DISKIO-MIB::diskIODevice.10 = STRING: ram9 UCD-DISKIO-MIB::diskIODevice.11 = STRING: ram10 UCD-DISKIO-MIB::diskIODevice.12 = STRING: ram11 UCD-DISKIO-MIB::diskIODevice.13 = STRING: ram12 UCD-DISKIO-MIB::diskIODevice.14 = STRING: ram13 UCD-DISKIO-MIB::diskIODevice.15 = STRING: ram14 UCD-DISKIO-MIB::diskIODevice.16 = STRING: ram15 UCD-DISKIO-MIB::diskIODevice.17 = STRING: loop0 UCD-DISKIO-MIB::diskIODevice.18 = STRING: loop1 UCD-DISKIO-MIB::diskIODevice.19 = STRING: loop2 UCD-DISKIO-MIB::diskIODevice.20 = STRING: loop3 UCD-DISKIO-MIB::diskIODevice.21 = STRING: loop4 UCD-DISKIO-MIB::diskIODevice.22 = STRING: loop5 UCD-DISKIO-MIB::diskIODevice.23 = STRING: loop6 UCD-DISKIO-MIB::diskIODevice.24 = STRING: loop7 UCD-DISKIO-MIB::diskIODevice.25 = STRING: sda UCD-DISKIO-MIB::diskIODevice.26 = STRING: sda1 UCD-DISKIO-MIB::diskIODevice.27 = STRING: sda2 UCD-DISKIO-MIB::diskIODevice.28 = STRING: sdb UCD-DISKIO-MIB::diskIODevice.29 = STRING: sdb1 UCD-DISKIO-MIB::diskIODevice.30 = STRING: sr0
になっていたりする。つまり、いつの間にかloop0とかというデバイスができてしまっている。 MIB値をとっているシェルスクリプトではデバイスの番号をきめ打ちで書いているので、こういうことに対応できない。多分、udevあたりの設定でloop0を作らないようにできると思うんだけど、調べるのがめんどいし、そもそも決め打ちで書くなよということもあったので、最初にdiskIODeviceで必要なデバイスの番号を調べてから、本命のMIB値をとりにいくようにスクリプトを書き直した。 ここまできたらシェルスクリプトじゃなくて、Rubyとかで収集用スクリプトを組んだほうがいいと思うけど、いまいちRubyは勉強不足なのでできていない。今年の目標かなぁ。。。

0 件のコメント: