Linux サーバのハードディスクの温度を MRTG でグラフ化する。ディレクトリ構成を少し工夫する。
MRTG (Multi Router Traffic Grapher) はネットワークのトラフィックをグラフ化するツールであが(MRTG.JP - MRTG Official Japanese site),トラフィック以外の表示にも使うことができる。Vine Linux サーバのハードディスクの温度が調べられるようになったので(nlog(n): ハードディスクの温度を計測),これをグラフ化する。
MRTG でグラフ化する項目が増えていくと,ファイルが山盛りに増えてしまい,何だか手におえない気分になってくる。実際は,重要なファイルは2つだけである。*.cfg で設定して,*.log に記録が残る。この他の画像ファイルや *.html ファイルは自動生成されるので,仮に消えてしまったとしても悲しくない。とはいっても,普段は見ない自動生成のファイルでも,増えすぎるとうんざりしてくる。そこで,私はグラフ化する対象毎にディレクトリを分けることにしている。
例えば,ハードディスクの温度監視用 MRTG データのディレクトリ構成は次のようになっている。tpt22 は自宅サーバのホスト名で,「-temp」は温度 (temperature) の意味で名づけている。
mrtg ディレクトリには,設定用のコンフィグレーションファイル tpt22-temp.cfg が置かれている。他にトラフィック監視もしているので,そのコンフィグレーションファイルもこのディレクトリに置かれている。tpt22-temp.ok ファイルは MRTG が勝手に作る,大きさ 0 のファイルである。MRTG が上手く動作していることを示している。
mrtg ディレクトリには data ディレクトリがあり,data ディレクトリ内には,監視している対象のディレクトリが並ぶ。そのディレクトリ tpt22.temp 内に,ログファイルと画像ファイルが生成される。HTML ファイルの名前は index.html にしている。ディレクトリを分ける場合,index.html にしておくのが便利である。
このようにディレクトリを分けておくと,1つのディレクトリに「ドワーッ」と画像ファイルが並ばないので,気分的に楽な感じがする。
さて,このような構成にするためのコンフィグレーション tpt22-temp.cfg の内容は次のようになっている。
それぞれの項目の意味については,オンラインマニュアルで解説されている(MRTG 設定リファレンス)。Options に noo を追加すると,緑色の塗りつぶしだけになり,noi を追加すれば 青い線だけになる。どちらも指定しなければ,両方が表示される。noo と noi の意味は,それぞれ NO Input traffic graph,NO Output traffic graph である。unknaszero は「アンクナスゼロ」とつい読んでしまうが,UNKNown data AS ZERO の意味で,値が返ってこないときにグラフを0にする指定である。MaxBytes で最大値を 65 °C に設定し,Unscaled で dwmy (Daily, Weekley, Monthly, Yearly のグラフ)に対して,最大値がグラフの最高値になるように指定している。
Target で「index」を指定することで,index.html が生成されるようになる。画像ファイルの名前もプレフィックスが「index-」になる。この Target のところで,hddtemp を呼び出している。バッククォートを使うことで,外部コマンドの呼び出しができるのである。MRTG は,外部コマンドの出力が4行あることを期待する。
1行目: 1番目の監視対象の出力値
2行目: 2番目の監視対象の出力値
3行目: 監視対象の稼働時間を示す文字列
4行目: 監視対象の名前を示す文字列
もともと MRTG は,その名前の通りトラフィックを表示するためのものなので,監視対象が入力トラフィックと出力トラフィックの2つになっているのだ。デフォルトでは,1番目の監視対象は入力トラフィック,2番目は出力トラフィックのバイト数になる。3行目と4行目は,グラフを表示する HTML に,サイトのステータス情報として次のような形で表示される。
The statistics were last updated Sunday, 4 September 2005 at 11:45, at which time 'tpt22' had been up for 11 days, 4:36, 1 user, load average: 1.08, 0.37, 0.25.
3, 4 行目をスクリプトが出力しないと,監視対象のホスト名と稼働時間が次のように「unknown」になる。
The statistics were last updated Sunday, 4 September 2005 at 11:45, at which time 'unknown' had been up for unknown
外部コマンドとしては,上で示した4行を出力するようなシェルスクリプトを書くのが一般的だが,ファイルが増えるのがイヤンなので,無理やり直接書いている。このように書く前に,次のような感じで動作検証を行っておく。
あとはこれらを「;」でつなげるだけである。
Target の指定では,言語の設定を「LANG=C」として最初に1つだけ書けば,後ろにつづくコマンドにもこの言語設定が有効となるが,bash のコマンドプロンプトでやる場合は「export LANG=C」としてエクスポートしなければならない。「;」で区切られたコマンドはそれぞれ終了時にシェルにリターンするため,前の環境を引き継がないからである。
午前4時に温度が上がっているのは,cron によるジョブが動くからである。現在の温度 57 °C。温度が高いとハードディスクの寿命が気になるなぁ…。
最近はグラフ表示に MRTG を使うのではなく,RRDTool と HotSaNIC を使うのがトレンドのようだ (yujilog » RRDToolとHotSaNICでハードディスク温度を計測)。カッコイイかも。
追記:
これを書いた後で,Fedora Core 4 での例を見つけてしまった(@IT:MRTGでハードディスクの温度変化をグラフ化するには)。簡潔に解説されている。さすがプロ。
2006年9月2日追記:
Windows マシンの温度も Linux で取得できました(nlog(n): Windows XP マシンの温度を SNMP 経由で監視)。
Master Archive Index
Total Entry Count: 1957
http://smartmontools.sourceforge.net/
Posted by: tetsu at September 04, 2005 17:11これを使ってもHDDの温度がとれますよ。
HDDの状態を示すS.M.A.R.Tというので、
そのほかの情報もとれますし。
Vine Linux は apt できるので、いかがで
しょうか?
あと、ノートPCをお使いでしたら、外付け
のファンがあるので、載せておくといいか
も。
情報ありがとうございました。便利そうですね。
Posted by: n at September 04, 2005 23:30ノートPC用の外付けファンを購入したのですが,ファンの音が大きいので止めてしまいました(安かったから? 3000円くらいしたのに…)。