SNMPをインストールする

最近、VPSの調子が悪くハングアップすることが1週間ごと起きました。原因は調べようがないので分かりませんがVPSのダッシュボードでNetworkとDisc IO とCPUの負荷状況を確認できるのでそれで判断するしかありません。しかし手の施しようのなくなるまえに何か手を打っておく方法といえばSNMPでシステムを監視することです。それでは早速インストールしてみます。snmpとかnet-snmpとかディストリビューションによって呼び方が異なりますが、基本は同じものです。Ubuntuやデビアンのインストールは次のようにします。

apt-get install snmp snmp-mibs-downloader snmpd

出力時に理解しやすいように次の行をコメントアウトします。またudp:161を使うのでファイヤーウォールの設定も必要です。
/etc/snmp/snmp.conf

#mibs :

/etc/snmp/snmpd.conf

agentAddress udp:161,udp6:[::1]:161
# 基本のシステム情報
rocommunity public  default    -V systemonly

# すべての情報
rocommunity public  default

出力例:(※注:VPN等で接続します)

snmpwalk -v1 {VPS IP} -c public UCD-SNMP-MIB::laTable

UCD-SNMP-MIB::laIndex.1 = INTEGER: 1
UCD-SNMP-MIB::laIndex.2 = INTEGER: 2
UCD-SNMP-MIB::laIndex.3 = INTEGER: 3
UCD-SNMP-MIB::laNames.1 = STRING: Load-1
UCD-SNMP-MIB::laNames.2 = STRING: Load-5
UCD-SNMP-MIB::laNames.3 = STRING: Load-15
UCD-SNMP-MIB::laLoad.1 = STRING: 0.05
UCD-SNMP-MIB::laLoad.2 = STRING: 0.15
UCD-SNMP-MIB::laLoad.3 = STRING: 0.18
UCD-SNMP-MIB::laConfig.1 = STRING: 12.00
UCD-SNMP-MIB::laConfig.2 = STRING: 10.00
UCD-SNMP-MIB::laConfig.3 = STRING: 5.00
UCD-SNMP-MIB::laLoadInt.1 = INTEGER: 5
UCD-SNMP-MIB::laLoadInt.2 = INTEGER: 15
UCD-SNMP-MIB::laLoadInt.3 = INTEGER: 18
UCD-SNMP-MIB::laLoadFloat.1 = Opaque: Float: 0.050000
UCD-SNMP-MIB::laLoadFloat.2 = Opaque: Float: 0.150000
UCD-SNMP-MIB::laLoadFloat.3 = Opaque: Float: 0.180000
UCD-SNMP-MIB::laErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrorFlag.2 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrorFlag.3 = INTEGER: noError(0)
UCD-SNMP-MIB::laErrMessage.1 = STRING: 
UCD-SNMP-MIB::laErrMessage.2 = STRING: 
UCD-SNMP-MIB::laErrMessage.3 = STRING:

snmpwalk -v1 {VPS IP} -c public UCD-SNMP-MIB::memory

UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1949692 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 1252456 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 495188 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 18744 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 1271200 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memShared.0 = INTEGER: 25880 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 23688 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 110540 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:

snmpwalk -cpublic -v1 {VPS IP} UCD-SNMP-MIB::dskTable

...
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 56
UCD-SNMP-MIB::dskPercent.2 = INTEGER: 0
UCD-SNMP-MIB::dskPercent.3 = INTEGER: 56
UCD-SNMP-MIB::dskPercent.4 = INTEGER: 11
UCD-SNMP-MIB::dskPercent.5 = INTEGER: 0
UCD-SNMP-MIB::dskPercent.6 = INTEGER: 0
UCD-SNMP-MIB::dskPercent.7 = INTEGER: 0
UCD-SNMP-MIB::dskPercent.8 = INTEGER: 35
UCD-SNMP-MIB::dskPercent.9 = INTEGER: 0
...

ディスク情報は読み解くのが難しいですね。CPU負荷平均のlaTableとメモリのmemoryだけを見ておけばよいでしょう。

ほかシステム監視に使えそうなサブツリー

snmptranslate -Tpで調べる

UCD-SNMP-MIB::systemStats
UCD-SNMP-MIB::ucdExperimental
system

参考: