MRTGで取得情報を増やす(Vine Linux)

MRTGのTargetにOIDを指定してやれば、SNMPで何でも情報が取れるようなので、色々追加してみた。
追加するのは、以下。

・HDD温度
・CPU使用率


hddtempインストール

#wget http://www.guzu.net/linux/hddtemp.db

WARNING: Drive /dev/hda doesn't appear in the database of supported drives
WARNING: But using a common value, it reports something.
WARNING: Note that the temperature shown could be wrong.
WARNING: See --help, --debug and --drivebase options.
WARNING: And don't forget you can add your drive to hddtemp.db
/dev/sdb: ST31500341AS                            ST31500341AS?: 34°C

警告が出るので


#vi /usr/share/misc/hddtemp.dbに追加
"ST31500341AS" 194 C "Seagate ST31500341AS"
番号の部分は--debugオプションで温度表示と同じfield番号を使用する。


# yum install net-snmp
# vi /etc/snmp/snmpd.conf
41行目
#com2sec notConfigUser default public
コメントアウト
追加
com2sec mynetwork 192.168.0.0/24 test
HDD情報をhddtempの結果を含めMIB情報として出力するようにする。

exec .1.3.6.1.4.1.2021.51 sdb /usr/local/sbin/hddtemp -n /dev/sdb
exec .1.3.6.1.4.1.2021.52 sdc /usr/local/sbin/hddtemp -n /dev/sdc
exec .1.3.6.1.4.1.2021.53 sdd /usr/local/sbin/hddtemp -n /dev/sdd
exec .1.3.6.1.4.1.2021.54 sde /usr/local/sbin/hddtemp -n /dev/sde
ネットワーク名。LANのセグメント。コミュニティ名。

46,47行目あたりコメントアウト
#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUser

group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
追加。グループ名。snmpバージョン。ネットワーク名。

55行目あたりコメントアウト
#view systemview included .1.3.6.1.2.1.1
#view systemview included .1.3.6.1.2.1.25.1.1

view all included .1 80
追加。snmp参照範囲を全てにする。

60行目あたりコメントアウト
#access notConfigGroup "" any noauth exact systemview none none
追加。MIB読み書き権限の設定。
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

# service snmpd start
snmpd を起動中: [ OK ]

# chkconfig snmpd on
# chkconfig --list snmpd
snmpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

MRTGサーバから、MIB情報が取得できるか確認。


$snmpwalk -c test -v 2c 192.168.0.8 .1.3.6.1.4.1.2021.51

UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "sdb"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/usr/local/sbin/hddtemp -n /dev/sdb"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "32"
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.103.1 = ""

OID:.1.3.6.1.4.1.2021.51.101.1がHDD(/dev/sdb)の温度となる。

MRTGに以下の設定を追加する。

#/dev/sdb
Target[hddtemp_linux_b]:.1.3.6.1.4.1.2021.51.101.1&.1.3.6.1.4.1.2021.51.101.1:test@192.168.0.8 #OIDとコミュニティ名@対象IP
MaxBytes[hddtemp_linux_b]:100 #測定値MAX Cなので100
Title[hddtemp_linux_b]: #HDD1の温度 #htmlタイトル
Options[hddtemp_linux_b]:nopercent,gauge,absolute #パーセント表示なし、差分無し、平均無しで値をそのまま利用。
WithPeak[hddtemp_linux_b]: dwmy #日週月年の最大値を表示
YLegend[hddtemp_linux_b]: Temperature #グラフy軸ラベル
ShortLegend[hddtemp_linux_b]: C #最大(Max)平均(Average)現在(Current)の単位
LegendI[hddtemp_linux_b]: Temp: #凡例に表示する文字列
LegendO[hddtemp_linux_b]: 
Legend1[hddtemp_linux_b]: HDD Temperature in Degrees Celcius #凡例に表示する文字列
Legend2[hddtemp_linux_b]:
PageTop[hddtemp_linux_b]:<H1>【/dev/sdb】</H1>

### CPU Load Average ###
Target[cpu_linux]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:test@192.168.0.8
MaxBytes[cpu_linux]: 100
Unscaled[cpu_linux]: dwmy
Options[cpu_linux]: nopercent,gauge,absolute
YLegend[cpu_linux]: CPU Load(%)
ShortLegend[cpu_linux]: (%)
LegendI[cpu_linux]: 1分間平均
LegendO[cpu_linux]: 5分間平均
Legend1[cpu_linux]: 1分間平均(%)
Legend2[cpu_linux]: 5分間平均(%)
Title[cpu_linux]: CPU使用率
PageTop[cpu_linux]: <H1>【CPU使用率】</H1>

# /usr/local/mrtg-2/bin/indexmaker /usr/local/mrtg-2/lib/mrtg.cfg > /public/web/mrtg/index.html

PageTopで<H1>タグを使用していないと怒られる。

CPU使用率は、値を見る限り、どうも正確に出ていないっぽい。

それから、MRTGの仕様として、OIDを2つ指定しないとエラーが出る。
HDD温度の場合は&で同じOIDを2重に指定してやる必要がある。