筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2009-05-12 夏に向けて
■ net-snmp でハードディスクの温度を監視する
Linux では hddtemp や smartmontools でハードディスクの温度を取得することができますが、FreeBSD では smartmontools を使います。
ハードディスクが S.M.A.R.T. に対応していれば簡単です。
# portinstall smartmontools # smartctl -a /dev/ad4 | grep ^194 194 Temperature_Celsius 0x0022 039 042 000 Old_age Always - 39 (0 20 0 0)
この情報を net-snmp で取得できるようにします。
まずは hddtemp の -n オプションに相当する、ハードディスク温度の数値のみが出力されるようにする必要があります。適当に awk でも使って 数値のみを切り出し、これをシェルスクリプトにし /root/tools/get_hddtemp.sh として保存します。
複数のハードディスクがある場合のために、引数でハードディスクのデバイスファイルを与えるようにしました。
#!/bin/sh /usr/local/sbin/smartctl -a $1 | /usr/bin/awk '{if($1=="194") print $10}'
これを実行するとこのようになります。
# /root/tools/get_hddtemp.sh /dev/ad4 41
net-snmp でこの情報を取得できるようにするため /usr/local/etc/snmp/snmpd.conf に次の1行を追加し、restart します。
extend ad4temp /root/tools/get_hddtemp.sh /dev/ad4
# /usr/local/etc/rc.d/snmpd restart
snmpwalk で試しに取ってみます。
$ snmpwalk -v 1 -c community localhost NET-SNMP-EXTEND-MIB::nsExtendOutLine NET-SNMP-EXTEND-MIB::nsExtendOutLine."ad4temp".1 = STRING: 41 NET-SNMP-EXTEND-MIB::nsExtendOutLine."echotest".1 = STRING: hello world
OID を取得するため、-On オプションをつけます。
$ snmpwalk -v 1 -c community localhost NET-SNMP-EXTEND-MIB::nsExtendOutLine -On .1.3.6.1.4.1.8072.1.3.2.4.1.2.7.97.100.52.116.101.109.112.1 = STRING: 41 .1.3.6.1.4.1.8072.1.3.2.4.1.2.8.101.99.104.111.116.101.115.116.1 = STRING: hello world
あとはこれを、snmp の監視ツールに適当にセットしてやればグラフの描画なりなんなり好きにできます。