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
警告が出るので
番号の部分は--debugオプションで温度表示と同じfield番号を使用する。
#vi /usr/share/misc/hddtemp.dbに追加
"ST31500341AS" 194 C "Seagate ST31500341AS"
HDD情報をhddtempの結果を含めMIB情報として出力するようにする。
# yum install net-snmp
# vi /etc/snmp/snmpd.conf
41行目
#com2sec notConfigUser default public
コメントアウト。
追加
com2sec mynetwork 192.168.0.0/24 test
ネットワーク名。LANのセグメント。コミュニティ名。
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
MRTGサーバから、MIB情報が取得できるか確認。
46,47行目あたりコメントアウト
#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUsergroup 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.1view 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
OID:.1.3.6.1.4.1.2021.51.101.1がHDD(/dev/sdb)の温度となる。
$snmpwalk -c test -v 2c 192.168.0.8 .1.3.6.1.4.1.2021.51UCD-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 = ""
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重に指定してやる必要がある。