コンピュータ/ソフトウェア関連Tips

MuninでHDD温度を表示する(FreeBSD版)

作成日: Aug 3, 2014
カテゴリー: FreeBSD タグ: FreeBSD

MuninでHDD温度を表示するようにしたときのメモです。OSはFreeBSD 10.2 RELEASE。マシンはHP MicroServer N40L。ハードディスクはS-ATA(AHCI)です。

この記事は、FreeBSDセットアップメモの一部です。

smartmontoolsのインストール

参考: http://april.fool.jp/blogs/2014/03/freebsd%E3%81%A7smartmontools%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/

smartmontoolsが必要なので、インストールします。まずは、自分がインストールするのがどのバージョンなのかチェックします。

$ pkg search smartmontools
smartmontools-6.4_1            S.M.A.R.T. disk monitoring tools

$ sudo pkg install smartmontools

デバイスをスキャンしてみます。

$ sudo smartctl --scan
/dev/ada0 -d atacam # /dev/ada0, ATA device
/dev/ada1 -d atacam # /dev/ada1, ATA device
/dev/ada2 -d atacam # /dev/ada2, ATA device

以下のコマンドを実行するなどして、SMART値を取得できていることを確認します。

$ sudo smartctl -a /dev/ada0

Muninプラグインの設定ファイルの修正

参考: http://blog.livedoor.jp/webprog/archives/3485624.html

$ cd /usr/local/etc/munin/plugin-conf.d
$ sudo cp plugins.conf plugins.conf@2014-08-02  ← 好きな名前でコピー(バックアップ)
$ sudo chmod u+w plugins.conf
$ sudo vi plugins.conf
[hddtemp_smartctl]
group operator
env.smartctl /usr/local/sbin/smartctl

↓

[hddtemp_smartctl]
user root
env.smartctl /usr/local/sbin/smartctl
env.drives ada0 ada1 ada2 ada3
#env.type_ada0 ata ← この記述があると、プラグイン実行時にエラーとなりました。(詳細は後述します)
#env.type_ada1 ata
#env.type_ada2 ata
#env.type_ada3 ata

#[smart_*] ← この記述が無くてもHDD温度を取得できました。
#user root
#env.smartpath /usr/local/sbin/smartctl

munin-node-configure –suggestを実行してみます。

$ munin-node-configure --suggest|grep hddtemp
hddtemp_smartctl           | no   | no [first drive not supported, configure the plugin]

ダメです…。手動でシンボリックリンクを設定しました。

$ sudo ln -s /usr/local/share/munin/plugins/hddtemp_smartctl /usr/local/etc/munin/plugins/hddtemp_smartctl

プラグイン実行結果の確認

$ sudo munin-run hddtemp_smartctl
ada0.value 37
ada1.value 38
ada2.value 37
ada3.value 38

munin-node-configure –suggestを実行してみます。

$ munin-node-configure --suggest|grep hdd
hddtemp_smartctl           | yes  | no [first drive not supported, configure the plugin]

Munin-nodeの再起動

$ sudo service munin-node restart
Stopping munin_node.
Starting munin_node.

5分間待つと「HDD temperature」というグラフが表示されます。

明示的にデバイスを指定しない場合

/usr/local/etc/munin/plugin-conf.d/plugins.conf の、

env.drives ada0 ada1 ada2 ada3

を記述しない場合、デバイスをスキャンしてくれるようなのですが、

$ sudo munin-run hddtemp_smartctl
ad10.value 38
ad4.value 37
ad6.value 38
ad8.value 38
ada0.value 37
ada1.value 38
ada2.value 38
ada3.value 38

のように、ad4, ad6, ad8, ad10も表示されてしまうので、明示的にデバイスを指定した方が良いですね。

悪戦苦闘の記録

最初は、plugin.confの、[hddtemp_smartctl]セクションに、

env.type_ada0 ata
env.type_ada1 ata
env.type_ada2 ata
env.type_ada3 ata

と記載していたのですが、プラグインを実行すると、以下のエラーが表示されました。

$ sudo munin-run hddtemp_smartctl
ada0.value U
ada0.extinfo Command /usr/local/sbin/smartctl -A --nocheck=standby -d ata /dev/ada0 on drive ada0 failed: 512.  The plugin needs to have read permission on all monitored devices.
[ERROR] Command /usr/local/sbin/smartctl -A --nocheck=standby -d ata /dev/ada0 on drive ada0 failed: 512.  The plugin needs to have read permission on all monitored devices.
(略)

メッセージをそのまま解釈して、対応しようと悪戦苦闘したのですが、http://karaage.de-blog.jp/mmmm/2013/04/munin_dea1.htmlを拝見したところ、

動かないのは”-d sat,auto”が悪かった。env.type_ada0 sat,autoをplugins.confから削除したら動いたのだ。
(略)
なんとエラったら何が何でもこのメッセージを出すことになっているのだ。

ということで、同じようにしたら動いた次第です。