やるきなし

2016/08/03 14:34 / iowait monitoring by MRTG

File server (RAID5 w/LUKS) の iowait がなんだかひどいので,MRTG で monitoringしようとして悩む.

OID (object identifier) は .1.3.6.1.4.1.2021.11 付近の以下を monitoring.

mrtg.cfg は http://net-snmp.sourceforge.net/tutorial/tutorial-5/mrtg/ にある通りに書けば良いらしい.なお,Debian GNU/Linux の場合の UCD-SNMP-MIB.txt の PATH は /usr/share/snmp/mibs/UCD-SNMP-MIB.txt で,これは libsnmp-base package に含まれている.ちなみに LoadMIBs に複数の MIB file を記載するには comma (,) 区切りで書く

ここで問題なのはMaxBytesで,上記URLの例ではMaxBytes[...]: 100のようになっているが,これだと ssCpuRawIdle がうまく測れない(もともと iowait を monitor しようという企画なのだが...).

ssCpuRawIdle の仕様をいろいろあたってみたのだが,/usr/share/snmp/mibs/UCD-SNMP-MIB.txt によると以下のとおり.

ssCpuRawIdle OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of 'ticks' (typically 1/100s) spent
         idle.

         On a multi-processor system, the 'ssCpuRaw*'
         counters are cumulative over all CPUs, so their
         sum will typically be N*100 (for N processors)."
    ::= { systemStats 53 }

つまり MaxBytes が 100 だと invalid な数値だとして .rrd file (←私の環境ではRRDを利用している)にそもそも値が保存されない様子.ということで,monitor 対象の計算機毎に個別に設定してやる必要がある.当然ここでの CPU の数は論理プロセッサの数(コア数ではなく).たぶん上記 DESCRIPTION のとおり他の ssCpuRaw* についても同様だが,Idle は常に最大値付近の値をとるので,この問題がより顕在化しやすい.

Related articles