snmpでlinuxのdisk パーティション監視

cacti/cloudforecastってどやって取ってるん?とふと気になって調べた。
cloudforecastのlib/CloudForecast/Data/Disk.pm 見てたらhrStorage* という単語あったので
snmpのoid見てたらこの辺だった。

各サーバのsnmpd.conf にdiskの設定追加しなくても良い方法 (cacti、cloudforecastが使ってるのはこのoid)

使ってるのはこれ以下のoidツリー

# snmptranslate .1.3.6.1.2.1.25.2
HOST-RESOURCES-MIB::hrStorage

まず HOST-RESOURCES-MIB::hrStorageIndex でパーティションに対応するindex調べる

# snmpwalk -v2c -c public localhost HOST-RESOURCES-MIB::hrStorageDescr
(略)
HOST-RESOURCES-MIB::hrStorageDescr.31 = STRING: /

=> /は31

そのindexのsizeと単位調べる

# snmpwalk -v2c -c public localhost HOST-RESOURCES-MIB::hrStorageAllocationUnits.31
HOST-RESOURCES-MIB::hrStorageAllocationUnits.31 = INTEGER: 4096 Bytes
# snmpwalk -v2c -c public localhost HOST-RESOURCES-MIB::hrStorageSize.31
HOST-RESOURCES-MIB::hrStorageSize.31 = INTEGER: 7065055

=> パーティション容量は4096*7065055/1024/1024/1024.0 = 約27GB

# snmpwalk -v2c -c public localhost HOST-RESOURCES-MIB::hrStorageUsed.31
HOST-RESOURCES-MIB::hrStorageUsed.31 = INTEGER: 781729

=> 使用量は4096*781729/1024/1024/1024.0 = 約3GB

使用率は直接mibでは取れないのでhrStorageUsed / hrStorageSize で計算する

snmpd.confに追加する方法

disk / 10000
disk /boot 10000

これでUCD-SNMP-MIB::dskTable (1.3.6.1.4.1.2021.9) 以下のoidツリーが使えるようになる

  • mount path

1.3.6.1.4.1.2021.9.1.2
UCD-SNMP-MIB::dskPath

  • 使用率

1.3.6.1.4.1.2021.9.1.9
UCD-SNMP-MIB::dskPercent