会社の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 件のコメント:
コメントを投稿