■['04/03/06] お詫びと訂正 | ||||||||||||
['04/03/06]以前に本ページで公開されていた設定では,CPU 温度と M/B 温度が入れ替わって
検出されるようになっていました.恐れ入りますが,以前の設定を用いて温度を計測している場合は,
lm_sensorsの設定ファイル(sensors.conf)の書き換えをお願いします.
なお,私が現在使用している設定は,
このようになっております.
m9841.info!さん,御指摘ありがとう ございました. |
||||||||||||
■サーバとネットワークとモニタリング | ||||||||||||
■サーバとして24時間運転でTerminatorを使う | ||||||||||||
Terminator は対策を行うことにより,深夜に寝室で動いていても,
気にならないレベルにまで静音化が可能です.そのため,24時間運転の
マシンとして利用している人はかなり居ると思いますが,サーバとして
利用している人も多いと思います. 何を持ってサーバと称し,サーバとして動かすことによってどんな メリットがあるかについては説明を省略しますが,サーバを管理している 人は,常にどんな状態で動作しているかをモニタしたいという欲求がある と思います. 例えば Terminator をファンレスによる静音化した場合に問題となる CPU や M/B(電源) の温度変化,ネットワークのトラフィック,CPU の 負荷の掛かり具合,ディスクの空き容量の変化等々.上げればきりが無い ほど監視したい項目が出てくると思います.特に温度変化に関しては, 関心が高いと思います.夏場に暑くなる部屋で動かしている場合,外出先で 『今日は気温が異常に高いし…温度は問題ないレベルだろうか』と,心配に なったりすることもあるでしょう. 本ページでは,Linux ベースでどのようにマシンの稼働状況を監視 出来るかについて解説します.多くの項目は Terminator に特化した ものではありませんので,UNIX が稼働しているマシンであれば,汎用的 に応用できると思います.
|
||||||||||||
■何を監視するか? | ||||||||||||
監視できるものは何でも監視したいという方向もアリだと思いますが,
とりあえずは以下の項目を監視することにしました.
なお,各ステータスは時系列での変化を追えるようにし,かつ, ネットワーク経由で他のマシンから監視を行えるようにすることを考えます.
|
||||||||||||
■モニタリングの下準備1 【i2c,lm_sensorsのインストール】 |
まずは温度変化を監視するために,lm_sensors というソフトを導入します.
このソフトをインストールすることにより,
Vcode,+12V等の各種電圧,ファンの回転数,CPUやM/B温度等のハードウエア
モニタリングが可能になります.
|
|||||||||||
■ダウンロード | ||||||||||||
Linux の一部ディストリビューションでは,既に最初から lm_sensors が
インストールされている場合もあるようです.Vine の場合はインストールされて
いませんので,新規にインストールする必要があります.まずは,
Linux System Hardware Monitoringのダウンロードページから,
lm_sensors,i2cの tar ボールをダウンロードします.
直に任意のバージョンをダウンロードする場合,
ここから
辿っても良いでしょう. bug fix や機能追加が成されている可能性があるため,最新版の方が 好ましいと思いますが,バージョンによっては,本ページの解説している 内容と設定方法が若干変更に なっている可能性もあります.ちなみに私はversion 2.7.0 を使用しました.
使用したファイル i2c-2.7.0.tar.gz lm_sensors-2.7.0.tar.gz余談ですが,私は当初 2.6.4 を入れて温度監視のみ をしていました.この版は設定が面倒でしたが,2.6.5 で Terminator TU で使用 されている SiS630 用のドライバが追加されたとのこと.2.7.0 では設定が簡単 になっていました. |
||||||||||||
■展開とインストール | ||||||||||||
任意のディレクトリで,tar xvzf <ファイル名>のように解凍&展開
を行います.2つの tar ボールに固められたファイルを展開すると,
『i2c-2.7.0』,『lm_sensors-2.0.7』
というディレクトリが作成されている筈です. 次にインストールです.本当は Makefile を編集し,Vine のルールに合った 適切な場所に インストールする方が美しいのですが,説明を簡単にするために,本ページでは ファイルの編集を行わない方法で行うことにします.なお,以下の 作業は root 権限で行ってください(本当は make install の部分だけで良い. 以降説明を省略しますが,基本的にソフトのインストール時には root で行う ようにしてください).
エラーメッセージが出力された場合,適時問題を FIX してください.
|
||||||||||||
■設定 | ||||||||||||
モジュール群は,/lib/modules/misc の下にインストールされます.Vine
の場合,モジュールは /lib/modules/<カーネルのバージョン>/...の下に
インストールする決まりがありますので,以下のコマンドを実行して,モジュール
を正規の場所に移動します.今回は Vine2.6r1 環境で,カーネルは 2.4.19-0vl26
を使用しています.移動先のディレクトリ名は,利用中の環境により,
適時読み替えてください.
※ /lib/modules/misc の下には,今回インストール した i2c, lm_sensors 関係 のモジュールのみが入っているという前提で行っています 次に,現在利用中の環境をスキャンし,適切な設定を行います.
sensors-detect コマンドを実行すると,使用されているセンサーの スキャンを行うのと同時に,設定上の質問をいくつかして来ます.基本的に 全ての質問に対し,リターンキーを押して答えて行けば良いでしょう.実行が完了 すると,"/etc/sysconfig/lm_sensors" というファイルが出来ます.Terminator TU であれば,この時点で次のような内容になっているでしょう.
ここで注意して頂きたい点は,sis5595 が認識されていることです. lm_sensors のドキュメントを読むと,SiS630 が使用されている システムの場合,sis5595 が誤認識されてしまうという記述があります.実際, Terminator TU でsis5595 モジュールを読み込ませようとした場合,エラーが 発生します. そこで,このファイルを以下のように修正します.
次にドキュメントにある通り,SiS630 を使用する場合は it87 に "temp_type=0x31" オプションを付けて読み込ませないといけないため, "/etc/modules.conf" に以下の行を追加します.
これを行わないと,CPU 温度,M/B 温度共にとんでもない値を 示してしまいます. 次に,sensor の設定ファイルを修正します.設定ファイルのサンプルが 提供されていますので,まずはこのファイルを /etc ディレクトリにコピー しましょう.
次に,コピーした /etc/sensors.conf ファイルを SiS630 用に修正します. 具体的には,
と,書かれている部分の直下,『chip "it87-*"』の行から,『chip "fscpos-*"』 と書かれている行の直前までのコメントを外します(当然ではありますが, コメントを意図して書かれている行は,コメントとして残しておいてください). 次に,Terminator TU の場合は温度センサを2つ使用可能であり, 1つ目が CPU の温度,2つ目が M/B 温度にアサインされていることから,
の部分を,以下のように修正します.
基本的な設定はこれで終わりです.
実行後,sensor コマンドを実行し,次のように温度情報等が出たとしたら, 正常に動作しています.
電圧関係は全て異常な値を表示していますが,これらは無視してください. 色々と調整してみましたが,Terminator TU で正常な値を表示することは 未だ成功していません(他の PC であれば,うまく動いているのですが…). ここで,『MB Temp』および『CPU Temp』が適正と思われる温度が表示 されているのを確認してください.なお,『庵』と表示されているのは, 『℃』が文字化けしたものです.ちなみに,BIOS や Asus Probe で 確認した温度と比較すると,若干高めの温度が表示されていると思います. これは設定ファイルを修正することにより微調整可能ですが,それほど 大きな違いは無いため,私はそのまま使用しています. (余談ですが,これら値は "/proc/sys/dev/sensors/it87-***" 以下のファイルの 内容を見ることにより,直接読むこともできます) ここで問題が無いようであれば,起動時に自動的に必要なモジュールが 読み込まれるように設定します.
|
||||||||||||
■モニタリングの下準備2 【ucd-snmpのインストール】 | ||||||||||||
SNMPとは,Simple Network Management Protocol の略で,ネットワーク
経由で通信機器やコンピュータを管理するためのプロトコルです.規格
としては,RFC1157で策定
されており,MIB(Management Information Base.RFC1156,
RFC1213等で定義)
と呼ばれる管理情報データベースを操作したり閲覧
することにより,機器類を容易に管理可能になります.この辺りの情報は,ZDnetの
SNMPにおける情報取得の基礎に詳しく解説されていますので,詳細に関しては,
そちらを参照してみてください. なお,今回インストールする ucd-snmp パッケージはには,SNMPの エージェント,ライブラリ,SNMP エージェント用のツール,SNMPトラップを 作成するためのツール等が含まれています.Linux で SNMP を使用する場合に 最も一般的に使われるパッケージであると思いますが,同パッケージは今後, net-snmp という名前になるようです.
|
||||||||||||
■ダウンロードとインストール | ||||||||||||
オリジナルの配布元はこちら
ですが,Vine を使用しているのであれば,Vine Plus で提供されている
RPM パッケージをインストールするのが楽でしょう.具体的には,まずは
Vine のミラーサイトなどから,下記ファイルをダウンロードします.
インストールしたファイル: ucd-snmp-4.2.3-1vl1.i386.rpm ucd-snmp-devel-4.2.3-1vl1.i386.rpm ucd-snmp-utils-4.2.3-1vl1.i386.rpm 次にインストールですが,root 権限で rpm コマンドを使ってインストール するだけです.
エラーが表示されていなければ,インストール完了です.
|
||||||||||||
■設定 | ||||||||||||
ucd-snmp インストール後,まずはインストールしたマシン自身の
各種値の監視が出来るように,snmpd の設定を行います.設定ファイル
は /etc/snmp/snmpd.conf に置かれており,とりあえずの初期
設定がされています.これをそのまま使い回しても良いのですが,私は
以下のように,主要な部分を一通り書き直しました.赤字で表示されている
部分が,修正を加えた部分です.
上記のように設定することにより,ローカルからは private,192.168.0.0/24 (192.168.0.0〜192.168.0.255)のマシンからは home というコミュニティ名で snmpd にアクセス可能になります.誰にでも接続を許可する場合はコミュニティ 名を public にする場合がありますが,これはパスワードのようなものなので, 慎重に選択した方が良いでしょう(書き換え権限を与えなければ,大きな問題に はることは少ないでしょうが). この他,2箇所ほど書き換えました.1つ目はシステムの名前と連絡先です.
なお,2行目の syscontact は,管理者のメールアドレスにしておきます. 私は root 宛のメールはそのままフォワードしているため,上記のようにして いますが,直接管理者のアドレスを指定しても良いでしょう. 2つ目は SNMP でディスクの空き容量もチェックするために,以下の行を追加し ました.
マウントポイントが "/" および "/export/hd1" の2台のディスクを 監視可能にし,空き容量が 5% を切ったらアラームが出る(念のため書いておく と,アラームが鳴り響くわけではない.『やばいですよ』というトリガを発し, SNMP のフロントエンドで何らかの処理を行えるようになる)ようにしました. なお,温度情報に関しても SNMP 経由で監視したい場合,例えば
のように設定し,snmpd 実行後(後述),次のようにコマンドを実行すること により,見ることができます.
青文字で書かれている部分が温度情報で,上の行は CPU 温度,下の行が M/B 温度であり,それぞれ警告敷居値の MAX, MIN, 現在の温度を示しています.
|
||||||||||||
■実行と使用 | ||||||||||||
/etc/snmp/snmpd.conf の設定が終わったら,snmpd を起動し,きちんと
情報が取得できるかを試してみます.まずは snmpd を起動するスクリプトを
実行します.
ここで OK の表示がされていなかったり,/var/log/messages にエラーが 記録されていたら,もう一度設定ファイルの内容を確認し,snmpd を再起動 してください.snmpd を再起動する場合は, /etc/rc.d/init.d/snmpd restart と,実行します. ログファイルに以下のように出力されていたら,設定ファイルにエラーが 無く,とりあえずは snmpd が動作していると言えます.(ps コマンドで, プロセスが動いているかを確認するとより確実ですが)
それでは,snmpd から情報を取得してみまましょう.ucd-snmp パッケージには, SNMP のフロントエンドとして動作するコマンドがいくつか含まれています. これらのうちよく使用されるのは,snmpgetと snmpwalk の 2つです. 共に参照するホスト名,コミュニティ名,オブジェクトIDを指定する ことにより,SNMP を利用して情報を参照することができます.snmpget は 一意となるオブジェクトID (以下OID) を指定する必要がありますが, snmpwalk は,任意の OID ツリー以下の情報を連続して出力させることができます. まずは システム情報を SNMP 経由で取得してみましょう.
環境によって表示される文字列は異なると思いますが,現在利用中のシステム の情報が表示されていたら,snmpd が正常に動作していると言えます. 次に,SNMP 経由で参照可能なデータを,全て表示してみましょう.
かなり膨大な数の情報が表示されるはずです. ここで引数として渡したパラメータを解説すると,「localhost」が ホスト名,「private」がコミュニティ名,"." から始まる番号が,OID です. なお,上記の実行例では,出力結果は OID が "system.sysObjectID.0" のように 文字列で表示されています.OID を数字で表示したい場合には, 次のように実行します.
※snmpwalk や snmpget では OID を指定する際に, 先頭に"."を付けて指定します.snmpwalk 等の出力でも先頭にピリオドが付いてい ますが,RFC等で定義されている正式な OID は,先頭にピリオドは付いてい ません. そして snmpwalk コマンドの場合,任意の OID のツリー以下を表示する ことができます.例えば,上記の例で説明すると,OID として ".1.3.6.1.2.1.1" を与えると,"1.3.6.1.2.1.1" で始まるオブジェクトを 全て表示します.一方 snmpget の場合,一意となる OID を指定しなければ なりません(例:"1.3.6.1.2.1.1.1.0"). ※数字で指定した方が入力し易いため,一般に,コマンドを 実行する際には数字で OID を指定します.しかし, 「snmpget localhost private system.sysDescr.0」のように名前で指定する こともできます きちんと snmpd が動作していることを確認したら,Linux ブート時に, 自動的に snmpd が起動するように設定します.
これで ucd-snmp 関係の設定は完了です.
|
『稼動状況をモニタする MB温度からCPU使用率まで2』 へ続きます