smartctl + net-snmpd + cacti やっとこさHDD温度管理
ものすごく長い道のりでした。まず、net-snmpdのexecで渡すスクリプトから始まって、
snmpwalkの使い方、でnet-snmpdがroot権限じゃない?のでsmartctlが動かないとか、Data Template,Graph Templateの設定方法とか判らないことだらけでしたが、なんとか温度が読めるグラフを書くことが出来ました。
これも、Cactiのおかげ ホントならRRDToolの書き方なども調べないといけませんがパラメータさえちゃんと渡せば、自動的にグラフを書いてくれる物だから すぐれもの。
すぐ忘れちゃうので、少しだけ設定を控えておこう。
smartctl
まず、ソースとなる温度を取得しないといけないわけですが、今回 設定したマシンは、LS-GL そうNASBOXです。
これは、HackKitを使ってDebian化しておりますのでインストール自体は簡単。
aptitudeを使ってサクッとインストール# aptitude install smartmontools
ここからが問題のオンパレード
まず、LS-GLはmarvellを使ってますので、温度を取得するには”-d marvell”オプションを渡さないといけません。
# /usr/sbin/smartctl -d marvell -A /dev/sda | /bin/grep Temperature_Celsius | /usr/bin/awk ‘{print $10}’
46もちろんroot権限が無いと取得できません。
cronに温度取得スクリプトを登録して、poller.php稼働1分前にデータを取得するようにします。
# cat /usr/local/bin/gethddtemp.sh
#!/bin/sh
#chroot /usr/local/buffalo miconapl -a temp_get |grep ‘temp=’ | sed -e ’s/[^0-9+\.]//g’
/usr/sbin/smartctl -d marvell -A /dev/sda | /bin/grep Temperature_Celsius | /usr/bin/awk ‘{print $10}’ > /var/log/temphdd
# cat /usr/local/bin/cattemp
#!/bin/sh
tail /var/log/temphdd
# cat /etc/cron.d/crontab
*/4 * * * * root /usr/local/bin/gethddtemp.sh >/dev/null 2>/var/log/cacti/temphdd-error.log
net-snmpd
次に、snmpd.confに追加します。もちろん 温度関連
/etc/snmp/snmpd.conf
exec .1.3.6.1.4.1.2021.51 HDD_Temperature /usr/local/bin/cattemp# /etc/init.d/snmpd restart
# /usr/local/bin# snmpwalk -v 2c -c local localhost .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: “HDD_Temperature”
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: “/usr/local/bin/cattemp”
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: “47″
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.103.1 = “”snmpdで温度が取得できました。
テンプレート
とりあえず、温度判るだけの設定しかできてないが、保険のために置いておく。
cacti_data_template_ucdnet_-_hdd_tempture.xml
cacti_graph_template_ucdnet_-_hdd_tempture.xml









