稼動状況をモニタする MB温度からCPU使用率まで2

['04/03/06] 内容修正(CPU温度とM/B温度が入れ替わっていた)
['03/02/26] 初稿
■['04/03/06] お詫びと訂正
 ['04/03/06]以前に本ページで公開されていた設定では,CPU 温度と M/B 温度が入れ替わって 検出されるようになっていました.恐れ入りますが,以前の設定を用いて温度を計測している場合は, 設定の変更をお願いします.

    ○MRTGの場合
    こちらを参照し,温度情報を MRTG に渡すスクリプトを修正して下さい.
    ○RRDtool+HotSaNICの場合
    こちらを参照し,SENSORモジュールの設定ファイルを修正して下さい.

 また,RRDtool+HotSaNICを使用している場合,以下の手順で過去のデータを引き継ぎつつ 上記修正を行うことが出来ます(以下,HotSaNICが/usr/local/HotSaNIC/にインストールされている という前提で説明します).

    1. HotSaNICの停止
    /usr/local/HotSaNIC/rrdgraph stop
    2.事故に備えて現在のファイルをバックアップ
    /usr/local/HotSaNIC/data-sensors ディレクトリ以下を別の場所にコピーしておきます
    3./usr/local/HotSaNIC/data-sensors/settings の書き換え
    こちらを参照して下さい
    4.センサの expires データを削除
    /usr/local/HotSaNIC/data-sensor/expires の中のファイルを削除します
    5.統計データファイルのリネーム
    /usr/local/HotSaNIC/data-sensor/rrd 以下にある cputemp.rrd,mbtemp.rrd の ファイル名を入れ替えます.
    例)
    cp -f cputemp.rrd mbtemp.rrd.n
    mv -f mbtemp.rrd cputemp.rrd
    mv -f mbtemp.rrd.n mbtemp.rrd

    1. HotSaNICの起動
    /usr/local/HotSaNIC/rrdgraph start
m9841.info!さん,御指摘ありがとう ございました.
■監視用ソフト
■監視に必要なことあれこれ
 『今の状態』を知るだけであれば, 前回のページで 解説したソフト類の他に何も準備するものは ありません.各コマンドを叩くことにより,現在の状態を確認することが できますし,画面上に常時 CPU 温度を表示するなんてことも,プログラムを 組めば簡単に実現できます.

 しかし,状態を監視するということは,たいていの場合は『その瞬間』のデータ ではなく,長期的なデータの推移を見たいことの方が多いでしょう.例えば温度変化を 監視したい場合,1日(24時間)でどのように変化しているかや,夏の暑い盛りから 冬の寒い 時期まで,どのように温度が上下動するかを見たいこともあるでしょう.

 おそらく,各種ステータスの監視を行う際には,次のような要件が重要に なって来ると思います.

  • 時系列で監視データを蓄積できる
  • 見やすい形でデータを整形して表示できる
  • カスタマイズ次第で様々なデータ監視に対応
  • フリーで使用できる(個人で利用する際には重要なファクター)
  • 設定が容易

 これらを実現することを目的としたソフトは,多くのものが開発,公開されて います.その中でも最もメジャーであると思われる MRTG ,そして綺麗な グラフ表示で最近人気を集めている RRDtool を今回は採り上げ, インストールから運用方法まで解説したいと思います.

■監視用ソフトのインストール1【MRTG】
■MRTG
 MRTG とは,Multi Router Traffic Grapher の略であり,Tobias Oetiker氏 らの手により開発されたソフトです.本家は こちら のページであり, MRTG 公式日本語サイト もあります.

 MRTGの歴史的を見ると,1994年に Oetiker氏は 64kbps のラインでインターネットと 接続されているサイトで仕事をしていたときに,そのトラフィックに関心を持った ことから開発が始まります.そして回線負荷状況を Web 上にグラフ化して表示し, 逐次更新するプログラムとして,1995年に最初の版が公開されました.その後全て Perl で書かれていたプログラムの一部を C に書き直して劇的な高速化が計られ, MRTG-2 が公開されます.そして現在は,ログデータの持ち方をがらりと変更する などの大きな変更が加えられる MRTG-3 が計画されており,新しい版では完全に RRDtool ベースにする旨がアナウンスされています.

 MRTG は設定が容易で使い勝手が良く,また,出力として得られる折れ線 グラフも必要充分な情報が得られるため,非常に多くのサイトで利用されて います.また,出力されるグラフは Web 経由で閲覧することが可能なため, サイトによってはそのままの形で公開されていることもあります.そのため, Web であちこちを回っていると,様々な形で利用されている,MRTG の出力 するグラフを目にすることも多いでしょう.

■前準備
 まずは MRTG で監視する前に,snmpd がきちんと動いていることを 確認してください(前回のページ 参照のこと).なお,トラフィック,CPU使用率,メモリ使用率およびディスク 利用率に関しては SNMP 経由で情報を取得し,温度に関してはローカルマシンの データをじかに読むことにします.

 まずは,SNMP で監視する対象のデータが取得できるかを確認してみましょう.

■トラフィックデータが取得できるか確認
# snmpwalk localhost private .1.3.6.1.2.1.2

interfaces.ifNumber.0 = 6
interfaces.ifTable.ifEntry.ifIndex.1 = 1
…
interfaces.ifTable.ifEntry.ifIndex.5 = 5
…
interfaces.ifTable.ifEntry.ifDescr.5 = eth0
…
interfaces.ifTable.ifEntry.ifAdminStatus.5 = up(1)
…
interfaces.ifTable.ifEntry.ifInOctets.5 = Counter32: 4132503042
(後略)
■CPU使用率が取得できるか確認
# snmpwalk localhost private .1.3.6.1.4.1.2021.10.1.5

enterprises.ucdavis.laTable.laEntry.laLoadInt.1 = 2
enterprises.ucdavis.laTable.laEntry.laLoadInt.2 = 2
enterprises.ucdavis.laTable.laEntry.laLoadInt.3 = 0
■メモリ使用率が取得できるか確認
# snmpwalk localhost private .1.3.6.1.4.1.2021.4

enterprises.ucdavis.memory.memIndex.0 = 0
enterprises.ucdavis.memory.memErrorName.0 = swap
enterprises.ucdavis.memory.memTotalSwap.0 = 522104
enterprises.ucdavis.memory.memAvailSwap.0 = 491120
enterprises.ucdavis.memory.memTotalReal.0 = 498944
…
■ディスク利用率が取得できるか確認
# snmpwalk localhost private .1.3.6.1.4.1.2021.9

enterprises.ucdavis.dskTable.dskEntry.dskIndex.1 = 1
enterprises.ucdavis.dskTable.dskEntry.dskIndex.2 = 2
enterprises.ucdavis.dskTable.dskEntry.dskPath.1 = /
enterprises.ucdavis.dskTable.dskEntry.dskPath.2 = /export/hd1
enterprises.ucdavis.dskTable.dskEntry.dskDevice.1 = /dev/hda3
enterprises.ucdavis.dskTable.dskEntry.dskDevice.2 = /dev/hdb1
…

■インストール
 まずは,tarボールで固められたソースコードを ここ からダウンロードしてください.私はちょっと古くなってしまいましたが, mrtg-2.9.7.tar.gz を現在使用しています('03/02 現在の最新版は mrtg-2.9.27.tar.gz ).  なお,MRTG が動作するためには,以下のソフト(ライブラリ)も必要と なりますが,Vine2.6 であれば,一通り既にインストールされていますので, 改めて入れ直す必要はありません.

    GD
    グラフを描くためのライブラリ.
    libpng
    PNG 形式のグラフを作成するために必要
    libpng
    グラフの圧縮を行うために必要

 MRTG 本体のインストールは至って簡単で,以下のように行うだけです.

# tar xvzf mrtg-2.9.7.tar.gz
# cd mrtg-2.9.7
# make
# make install

 上記の例はバージョン 2.9.7 で行う場合です.異なるバージョン を使用する場合は,青字の部分を書き換えてください.また,そのまま make install すると,/usr/local/mrtg-2/ にインストールされますので, インストール先を変更する場合は,Makefile を書き換えてください.

 なお,当然ながら,エラーが出た場合は適時問題を fix するようにして ください.

■設定1【トラフィック】
 MRTG を動かすためには,設定ファイルを作成する必要があります. 設定ファイルの書式は極めて簡単ですので,手でスクラッチから記述しても 良いでしょう. また,トラフィックのみを監視する場合は,設定ファイルを簡単に作成 するためのコマンドが用意されていますので,今回はそちらも併用する ことにします.

# /usr/local/mrtg-2/bin/cfgmaker private@terminator > /tmp/ether.cfg

 cfgmaker の詳細な使い方の説明は省略しますが,上記の例で説明すると, 『terminator という名前のホストに private というコミュニティ名でアクセス し,トラフィック情報を監視するための設定ファイルを出力せよ』と,なります. 出力された設定ファイルのテンプレートは,この実行例では /tmp/ether.cfg に 出力されますので,内容をチェックしてみてください.

 おそらく,殆どの行が"#"でコメントアウトされたファイルが出来ていると 思います.cfgmaker は一通りのネットワークインターフェイスの情報を取得 して出力しますが,リンクダウンしているインターフェイスに関しては,コメント アウトした状態で出力します.このファイルの中で,コメントアウトされていない 部分のみを抜き出し,別ファイルに保存しておきましょう.以下の例は私の Terminator での該当部分です.

Target[terminator_5]: 5:private@terminator:
SetEnv[terminator_5]: MRTG_INT_IP="192.168.0.4" MRTG_INT_DESCR="eth0"
MaxBytes[terminator_5]: 1250000
Title[terminator_5]: Traffic Analysis for 5 -- terminator
PageTop[terminator_5]: <H1>Traffic Analysis for 5 -- terminator</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>terminator in Asus Terminator TU</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>Root <root></TD></TR>
   <TR><TD>Description:</TD><TD>eth0  </TD></TR>
   <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
   <TR><TD>ifName:</TD>     <TD></TD></TR>
   <TR><TD>Max Speed:</TD>  <TD>1250.0 kBytes/s</TD></TR>
   <TR><TD>Ip:</TD>         <TD>192.168.0.4 (terminator)</TD></TR>
 </TABLE>

■設定2【CPU使用率】
 次に CPU 使用率(負荷平均率)を監視する設定をします.OID では, enterprises.ucdavis.laTable.laEntry.laLoadInt.1〜3 を参照することにより, 値が取得できます.順に 1, 5, 15分での負荷平均率です.今回は 5分,15分の データを監視することにしますので,MRTG の設定は以下のようになります.

Target[terminator_cpu]: .1.3.6.1.4.1.2021.10.1.5.2&.1.3.6.1.4.1.2021.10.1.5.3:private@terminator
MaxBytes[terminator_cpu]: 100
Title[terminator_cpu]: CPU Load Avalage -- terminator
PageTop[terminator_cpu]: <H1>CPU Load Avalage -- terminator</H1>
Options[terminator_cpu]: nopercent, integer, gauge, absolute, withzeroes, growright
YLegend[terminator_cpu]: CPU Load Avalage(%)
ShortLegend[terminator_cpu]: percent
Legend1[terminator_cpu]: 5 min CPU Load Avalage
Legend2[terminator_cpu]: 15 min CPU Load Avalage
LegendI[terminator_cpu]: 5 min
LegendO[terminator_cpu]: 15 min

■設定3【メモリ使用率】
 メモリ使用率は,実メモリおよびスワップに関して監視することにします. ここで用途によって,『空きメモリ容量を監視』するか,『使用中のメモリ容量』 を監視するかという2つのアプローチを採ることができます.まずは前者に関して ですが,このデータは enterprises.ucdavis.memory 以下のツリーで SNMP でじかに 取得することが出来ますので,設定は簡単です.MRTG の設定は以下のようになります.
Target[terminator_mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@terminator
MaxBytes1[terminator_mem]: 498944
MaxBytes2[terminator_mem]: 522104
Title[terminator_mem]: memory -- terminator
PageTop[terminator_mem]: <H1>Memory Used(free size) --terminator</H1>
Options[terminator_mem]: gauge, absolute, growright
YLegend[terminator_mem]: Mem Free[kBytes]
ShortLegend[terminator_mem]: kBytes
Legend1[terminator_mem]: Real Memory
Legend2[terminator_mem]: Swap Memory
LegendI[terminator_mem]: Real
LegendO[terminator_mem]: Swap

 なお,青字の部分は,それぞれ実メモリ,スワップメモリの容量ですので, 利用中の環境に合わせて書き換えてください.snmpget コマンドを使用し, enterprises.ucdavis.memory.memTotalReal.0, enterprises.ucdavis.memory.memTotalSwap.0 の値を確認し,転記すれば OKです.

 次に『使用中のメモリ容量』を見る場合ですが,SNMP 経由では,実メモリ+スワップメモリ のトータルでの空き容量しか確認することができません. そのため,使用量を見るためには,SNMP で得た情報を加工し,MRTG に渡す必要があります.

 まずはデータを MRTG に渡すためのスクリプトですが,例えば次のようにな ります.これを任意の場所に保存し,『chmod +x ファイル名』で 実行パーミッションを付けておいてください.以下, "/usr/local/mrtg-2/conf/mem2.sh" として保存したとして説明します.

#!/bin/sh
HOST=$1
COMNAME=$2
SNMPG="/usr/bin/snmpget $HOST $COMNAME "

# Get data from snmpd
MEM_MAX=`$SNMPG enterprises.ucdavis.memory.memTotalReal.0 | /bin/cut -f 3 -d " "`
MEM_AVG=`$SNMPG enterprises.ucdavis.memory.memAvailReal.0 | /bin/cut -f 3 -d " "`
SWP_MAX=`$SNMPG enterprises.ucdavis.memory.memTotalSwap.0 | /bin/cut -f 3 -d " "`
SWP_AVG=`$SNMPG enterprises.ucdavis.memory.memAvailSwap.0 | /bin/cut -f 3 -d " "`

# print memory free size
#REAL MEM
echo `expr $MEM_MAX - $MEM_AVG`
#SWAP MEM
echo `expr $SWP_MAX - $SWP_AVG`

 一度 "/usr/local/mrtg-2/conf/mem2.sh" を実行し,実メモリの使用量, スワップの使用量が2行に分けて出力されるかを確認してください. 現在のメモリの使用量に関しては,"free"コマンドの出力からも計算で 求めることができます.

 次にMRTGの設定ですが,前記のメモリ空き容量の設定のうち,

Target[terminator_mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@terminator

 の部分を,

Target[terminator_mem]: `/usr/local/mrtg-2/conf/mem2.sh terminator private`

に書き換えてください.空き容量,使用量をどちらも監視したい場合は, 片側は"terminator_mem"の部分を"terminator_mem2"のようにしておくように します.

■設定4【ディスク利用率】
 ディスク使用量は,enterprises.ucdavis.dskTable.dskEntry 以下のツリーで 参照することが可能です.なお,MRTG では1つのグラフに2つまでのデータ推移 しかプロット出来ませんので,snmpd で複数のデータが参照可能に設定されている 場合でも,任意の2つまでを監視することになります.

 設定は次のようになります.

Target[terminator_disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:private@terminator
Options[terminator_disk]: gauge, absolute, growright, nopercent
MaxBytes[terminator_disk]: 100
Title[terminator_disk]: disk -- terminator
PageTop[terminator_disk]: <H1>Disk Used -- terminator</H1>
WithPeak[terminator_disk]: dmwy
YLegend[terminator_disk]: Disk Used (%)
LegendI[terminator_disk]: /hd0
LegendO[terminator_disk]: /hd1
ShortLegend[terminator_disk]: (%)
Unscaled[terminator_disk]: dwmy

■設定5【CPU,M/B温度】
 最後に CPU および M/B 温度ですが,今回はローカルのファイルから値を読む ことにします.SNMP を使用し,ネットワーク経由で読みたい場合は,メモリ使用量の 設定を参考にしてください.また,今回も,MRTG に値を渡すための前処理が必要に なりますので,スクリプトを組むことにします.

#!/bin/sh
SENSOR_DIR=/proc/sys/dev/sensors/it87-isa-0290
# CPU temp
awk '{print int($3+0.5)}' $SENSOR_DIR/temp1
# MB temp
awk '{print int($3+0.5)}' $SENSOR_DIR/temp2

 実行パーミッションを付けることも忘れないようにしてください.
 ファイルの保存後,一度スクリプト単体で実行し,CPU温度,M/B温度の 順で2行に分けて出力されることを確認してください.なお,スクリプト中で+0.5を しているのは,四捨五入をして整数値にするためです.MRTG はデータとして,整数 しか扱うことができないためです.

 以下,このスクリプトを"/usr/local/mrtg-2/conf/temp_chk.sh"として 保存したとして説明を続けます.MRTG の設定は,次のようになります.

Target[terminator_temp]: `/usr/local/temp_chk/temp_chk.sh`
MaxBytes[terminator_temp]: 100
YLegend[terminator_temp]: Temperature
LegendI[terminator_temp]:  CPU temp:
LegendO[terminator_temp]:  M/B temp:
ShortLegend[terminator_temp]: degrees
Options[terminator_temp]: integer, gauge, growright, nopercent, absolute
Title[terminator_temp]: terminator : Temperature
PageTop[terminator_temp]: <H1>Temperature for tadachi's terminator</H1>

■設定のまとめ
 これで各々の設定に関しては終わりです.あとはこれら設定を別々に ファイルに保存し,MRTG を個別に起動するか,設定を1つのファイルに まとめておき, MRTG を1つ起動するだけで全てをグラフ化するようにするかです.私は 後者の方法を採りました.

 なお,これまでに説明した一通りの設定を1つのファイルにまとめて保存する際に, 一番最初の行に,HTMLファイルおよびグラフの画像ファイルをどの ディレクトリに書き出すかを指定するのを忘れないようにしてください. 例えば Vine でしたら,apache の公開用ディレクトリは "/home/httpd/html" 以下になりますので,この下に"mrtg"という ディレクトリに出力させることにします.ディレクトリを作成した後に, MRTGの設定ファイルに,次のように記述しておいてください.

WorkDir:/home/httpd/html/mrtg/

 なお,これらの設定を全てまとめると, このようなファイルになります.これを "/usr/local/mrtg-2/conf/mrtg.cfg" に保存するとして話を進めます.

※設定ファイル中の細かなオプションに関しては, 説明を省略させて頂きます.詳しくは MRTG のマニュアルを 参照してください.

■実行
 まずは手動で MRTG を起動し,問題なく動作するかを確認します.

# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/conf/mrtg.cfg

 いくつか『こんなファイル無いよ』というエラーが出ると思いますが, (設定ファイル関連のエラー以外は)気にしないでください.これを3回ほど繰り 返して実行すると,エラーが出なくなるはずです.

 次に,MRTG で監視している情報を,一覧することが可能なページを作成します.

# /usr/local/mrtg-2/bin/indexmaker\
    /usr/local/mrtg-2/conf/mrtg.cfg > /home/httpd/html/mrtg/index.html

 実行後,Webブラウザで http://(MRTGを動かしたホスト名)/mrtg/ にアクセス すると,データはまだプロットされていないと思いますが,グラフが並んで表示 される筈です.(MRTG等のアイコンは表示できていないと思いますが,動作上は 問題ありません.気になるようであれば,/usr/local/mrtg-2/lib/mrtg2/*.png を /home/httpd/html/mrtg にコピーしてください)

 MRTG が正常にグラフを生成できていることが確認できたら,次に自動的に グラフを更新するように cron を設定します.crontab -e コマンドを実行し, 以下のエントリーを追加してください.このように設定することにより,5分 毎に自動的にグラフが更新されるようになります.

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/conf/mrtg.cfg > /dev/null

MRTG の出力する画面の例

indexmaker の生成した MRTG のインデックス
(ある程度データが溜まった後の状態の画面です).
ここで,各グラフの画像を クリックすると,各監視データの,より詳細なデータのページに飛びます.
MRTG の生成した温度グラフ.
上から順に,1日,1週,1ヶ月,1年のグラフになる. 注)画面中では,CPU温度とM/B温度のキャプションが入れ替わっています

上記グラフは,容量を抑えるためにJPEGの圧縮率を高めて 保存しています.オリジナルのグラフは,とてもシャープに表示されます.

 なお,MRTG が生成するグラフは単に画像ファイルとして置かれていますので, indexmaker の作成する HTML ファイルを使わず,自分の用途に合った HTML ファイルを作成し,監視用のTOPページとして使用すると良いと思います.

■監視用ソフトのインストール1【RRDtool+HotSaNIC】
■RRDtool+HotSaNIC
 MRTG を使用していると,そのグラフの表現力や実行速度の限界に何かと 不満を持つかと思います.特に個人的に感じているのは,MRTG はデータを 蓄積する際に,次第に平均を取るレンジが広くなることです.そのため, ピーク値を見たい場合であっても,例えば年グラフでは鈍ったグラフになって しまいます.

 この辺りを解決するソフトとして, RRDtool という表現力の高いグラフ化ツールがリリースされています.RRDtool が作成 可能なグラフは,非常に多様で表現力もあり,また,データを蓄積するエンジン も高速なため,MRTG と比較して大きなアドバンテージがあります.しかし難点としては, その設定の煩雑さです.

 RRDtool が MRTG 程普及しないのは,この辺りに原因があるのではないかと 個人的には思っています.しかし,この辺りを解決するためのツールとして,多くの フロントエンドソフトが公開されています.これらフロントエンドを使用する ことにより,RRDtool を使用するための設定作業が容易になり,見栄えも素晴らしい グラフを簡単に作成できるようになります.

 今回私が使用したフロントエンドは,『Graphical overview about a large number of network- and system statistics for you Unix Box』と,説明され ているHotSaNIC というソフトです.本体は Perl で書かれており,インストールおよび設定が 極めて簡単なパッケージになっています.

■インストール
 まずは RRDtool のインストールを行います.

 Vineの場合,標準状態で様々なコマンドの出力に日本語が含まれるため,英語版 RRDtool を使用すると,グラフ内各所で文字化けしてしまいます(例えば曜日等. Vine 側の設定で対応することも出来なくはない).そのため,日本語パッチが当てられた RRDtool をインストールすることにします.

なお,英語版をインストールする場合は こちら からリンクを辿り,rrdtool-1.0.40-1.7.2.src.rpmを.日本語パッチの当たった 版を利用する場合は, こちらからリンクを辿り,rrdtool-1.0.40-1.7.2j.src.rpm をダウンロード します(パッチを作成,公開して下さっている大野洋史氏に感謝!).なお,これら バージョンは, '03/02 現在の最新の安定版です.

 バイナリパッケージが提供されている場合でも,ソースパッケージ(SRPM)を ダウンロードしたのには意味があります.半ばコダワリに近いかもしれませんが, Vine 用として提供されているもの以外の RPM パッケージは,私は基本的にソースから rebuild することにしています.RPMパッケージの設定に不備があった場合に, それを FIX し易いと思われるためです.

 まずは RRDTool の SRPM パッケージを rebuild してみましょう.なお,以下説明に おいて,パッケージ 名は日本語版のもので記述しています.英語版を使用する場合には読み替える ようにしてください.

# rpm --rebuild rrdtool-1.0.40-1.7.2j.src.rpm

 ~/rpm/RPMS/i386 の下に,"rrdtool-1.0.40-1.7.2j.i386.rpm", "rrdtool-devel-1.0.40-1.7.2j.i386.rpm" という2つの rpm ファイルが 作成されます.これらを次のようにしてインストールしてください.

# cd ~/rpm/RPMS/i386

■中身がきちんと出来ているかを確認
# rpm -qlp ./rrdtool-1.0.40-1.7.2j.rpm

# rpm -qlp ./rrdtool-devel-1.0.40-1.7.2j.i386.rpm

■インストール

# rpm -ivh ./rrdtool-1.0.40-1.7.2j.rpm
rrdtool        ##################################################
# rpm -ivh ./rrdtool-devel-1.0.40-1.7.2j.i386.rpm
rrdtool-devel     ##################################################
# ldconfig

※人によっては,/usr/local 以下にインストールしたいと 考えるかもしれません.その場合は,インストール先を変更してからビルドする必要 があります.

 次に HotSaNIC をインストールします.HotSaNIC は こちらからダウンロード できるので,stable(安定版)の最新版をダウンロードしましょう.開発版は大抵 pre? のような名前がついています.なお,今回は "HotSaNIC-0.4.0.tgz" を使用しました.

 インストールは至って簡単で,たとえば /usr/local にインストールする場合は, 次のようにファイルを展開するだけです.なお,HotSaNIC が動作するためには, ImageMagic および Perl5 がインストールされている必要がありますが,Vine の 場合は標準でインストールされているため,改めてインストールする必要は無いでしょう.

# cd /usr/local
# tar xvzf (ダウンロード場所)/HotSaNIC-0.4.0.tgz

■設定
 基本的に,RRDtool はインストールを行うだけで良く,HotSaNIC 側の 設定を行うことにより,監視が行えるようになります.

 まずは HotSaNIC のスクリプトを実行し,基本的な設定行います.

# cd /usr/local/HotSaNIC
# ./setup.pl
Module found: SENSORS
----------------------------------------
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module's graphs on the webpage ? (Y)es / (n)o >

setting up data-sensors ...
…

 設定は対話式で行われ,質問に答えていくことにより行われます.
 質問内容は,『この項目は監視するか?』『この項目は Web で見られるようにするか?』のようなものが大半です.上記例のように デフォルトで無難なものが選ばれますので,フルコースで監視したい場合は, はリターンを押していけば良いでしょう.ただし,監視項目によっては,より詳細な 内容を確認して来ますので,内容をきちんと理解した上で答えるようにしてください.

 モジュールは合計9個ありますが,必ずしも全てを使用する必要は ありません.私の場合,SENSORS,PART,TRAFFIC,DISKIO,SYSTEM の 5つを 使用するようにしました.

モジュール名 内容,備考 私が行った設定
SENSORS 温度,電圧等の監視(lm_sensorsの出力する物)
PART ディスク容量の監視
TRAFFIC ネットワークトラフィックの監視
DISKIO ディスクI/O(読み込み/書き出し)の監視
SYSTEM システム一般(CPU使用率,ロード等)の監視
DNET ここを参照のこと ×
PING pingへの応答時間を監視 ×
NETWORK 特定のホスト/ネットワークへの通信の監視
iptablesがインストールされている必要有り
×
WORMS httpd のアクセスログに記録された,ワームのアタック数の監視 ×

 なお,setup.pl を実行することにより,基本的な設定は完了しますが, 一部未設定になる部分や,誤って設定される部分があります.

 まずは,HotSaNIC 全体に関する設定ファイルである "/usr/local/HotSaNIC/settings" ファイルを修正します.

変更前 変更後 備考
BINPATH="not configured" BINPATH="/usr/bin" RRDtoolのインストール場所
WEBDIR="not configured" WEBDIR="/home/httpd/html/rrdtool" Web ページの格納先
IMAGEFORMAT="gif" IMAGEFORMAT="png" グラフの画像フォーマット

 上記設定は,あくまでも一例です.自分の環境に合わせて修正 してください.

 次に,RRDtool の生成する HTML ファイル等の格納先ディレクトリを作成 します.

# mkdir /home/httpd/html/rrdtool

 最後に,setup.pl で設定されない各モジュールの設定ファイルを 修正します.

■SENSORモジュールの設定ファイル
  /usr/local/HotSaNIC/data-sensors/settings に以下の2行を追加.なお, 漢字コードはEUCで保存した.

SENSOR=/proc/sys/dev/sensors/it87-isa-0290/temp1,cputemp,CPU temp,3,1,0,度
SENSOR=/proc/sys/dev/sensors/it87-isa-0290/temp2,mbtemp,MB temp,3,1,0,度

■PARTモジュール
  /usr/local/HotSaNIC/data-part/settings に, 『DRIVE=ファイルシステム,マウント場所』と,書かれている無意味な行があったので, この行を削除.

■DISKIOモジュール
 cat /proc/stat をして,『disk_io:」のところを見る.例えば

disk_io: (3,0):(471176,92636,3013450,378540,12126724) (3,1):(97807,54960,757450,42847,3364496)

 と,なった場合,ディスクは2台あって(3,0)と(3,1)です. これを反映させる場合(Kernel 2.4 の場合), /usr/local/HotSaNIC/data-diskio/settings に以下の2行を書きます.

DEV=3_0,hda
DEV=3_1,hdb

 ちなみに,私の環境の設定ファイルは,最終的に次のようになりました.

モジュール名ファイル名
全体設定 settings
SENSORS data-sensors/settings
PART data-part/settings
TRAFFIC data-traffic/settings
DISKIO data-diskio/settings
SYSTEM data-system/settings

 今回は使用しませんでしたが,SNMP 経由での情報取得も可能です.その他 設定に関する詳細は,HotSaNICの(あまり充実していませんが…)ドキュメント および各設定ファイル内のコメントを参照してください.

■実行
 まず,HotSaNIC のインデックスページを作り,手動で RRDtool を 実行し,一度データを取得します.

# /usr/local/HotSaNIC/makeindex.pl
# /usr/local/HotSaNIC/rrdtimer -i

 実行後,設定ファイルで指定した URL に,Web ブラウザでアクセスして みてください.おそらくグラフ画像は表示されていないと思いますが,設定 した監視項目は一通り表示されていると思います.

 表示されていることが確認できたら,次に手動でデーモンモードで起動し, グラフが自動更新されるかを確認します.

# /usr/local/HotSaNIC/rrdgraph start

 エラーが出ていなければ,起動成功です.定期的にグラフが更新される 筈です.なお,先程のページにブラウザでアクセスしてもグラフが表示されない場合, しばらく(数分〜15分くらい)待った後に以下のコマンドを実行し,グラフを 手動で更新してみてください(通常は不要です).

# /usr/local/HotSaNIC/diagrams
# /usr/local/HotSaNIC/convert.pl

 きちんと動いているようであれば,マシン起動時に自動的に実行される ようにします.以下の行を,/etc/rc.d/rc.local に追加してください.

# for RRDtool+HotSaNIC
/usr/local/HotSaNIC/rrdgraph start

 これで作業は完了です.以下のようなグラフがWeb経由で見ることができる はずです.なお,このページは makeindex.pl で作成したページであり, 各リンクやグラフをクリックすることにより,より詳細な情報ページへジャンプします.

RRDtool+HotSaNIC の出力する画面例
HotSaNIC のデフォルトのインデックスページ.横長で今ひとつ使い易く ないので,カスタマイズするのが吉.グラフ等からリンクが張られており, クリックにより詳細ページにジャンプする
注)画面中では,CPU温度とM/B温度のキャプションが入れ替わっています
CPU温度詳細情報の画面.1時間,6時間,1日,1週,1ヶ月,1年 毎のグラフが表示される.このように,最大値,最小値,平均が全てプロット されるため,ピークを見たい場合には大変都合がよい.
注)画面中では,M/B温度となっていますが,CPU温度です
■まとめ
■MRTGとRRDtool
 前述したとおり,MRTG-3 は RRDtool ベースになることがアナウンス されています.しかし,現在は(MRTG-2は)デフォルトで RRDtool を使用 しませんので,その動作を前提として比較することにします.

 両者共にメリット,デメリットがあります.MRTG は設定はし易いが 凝ったグラフは描けず,動作が低速で負荷も比較的高くなります.一方 RRDtool は柔軟なグラフが描け,動作も軽い反面,設定が煩雑でフロント エンドの手を借りないとかなり大変でしょう.また,今回はフロントエンド として HotSaNIC を使用しましたが,そのインデックスページはとても容量 が大きくなると共に,今ひとつ使い易くありません.おそらく多くの人は, インデックスページをカスタマイズして使用することになるでしょう.

 個人的には,RRDtool での監視体制が出来てしまえば,MRTG は不要かなと 思います.特に,MRTG では,温度のグラフでピーク値が取れないのは致命的でした. ただし,特殊なデータを簡単にプロットしたいという用途に対して は,MRTGを使用することもあるかもしれません.つまり,至極当たり前な結論 になりますが,用途に合わせ,自分に合ったツールを使うのが良いと思います.

■まとめ
 会社では,多くのマシンや Ethernet Switch を管理するために,古くから MRTG を愛用してきました.しかし,家ではそれほどシビアな用途に PC を使用 することもなく,監視ソフト系を使用することはありませんでしたが,Terminator を使い始めたことにより,その状況は変わりました.

 Terminator 使いの一番の興味(そして切実な関心)の対象として,CPU および M/B 温度がどの程度まで上昇するのか見たいという問題があります.これは静音化 と密接に関係した問題なわけですが,私はこのデータを監視&蓄積するために,まずは 夏の暑い盛りに,MRTG を動かし始めました.その結果,現在の静音化を施した構成で 問題無さそうであることが分かりました.

 その後監視対象は増え,また,現在は動作の重い MRTG は止め,RRDTool で監視を 行っています.様々なデータが集まると,これまで見えなかった問題も見えてくるよう なり,新たな発見もありました

 現在は Web で外部からも自宅マシンの状態がチェックできるようにしており, 出張のときなどに,宿泊先のホテルから,CLIE+AirH”の組み合わせでグラフを眺めたり 等しています(あまり意味無いけど :-) ).

 今後の課題としては,SNMP で言うところのアラームの扱いです.異常時に緊急停止 する仕組み(例えば,M/B 温度が70度を超えた場合は『落とすよ』と,メールを打った 後に自動 shutdown するなど)をどう実装しようか考えているところです.欲を言うと, lm_sensors で電圧等も監視できれば,電源がヘタって何らかのサインが出たときや, もう少し厳密に電源の限界が見えるかなと思っています.


『Asus Terminator 活用メモ』 へ戻る