≫MRTGとは
このページは、自宅サーバ(Vine Linux2.5) に MRTG をインストールした時のメモです。
MRTG とは The Multi Router Traffic Grapher の頭文字を取ったもので、ネットワークの負荷を監視してその状態を示すグラフィックイメージを含むHTMLページを生成してくれるソフトです。PerlとCで記述されており、UNIXとWindows NTで動作します。
例えばこんな感じのページを自動的に作成してくれて、サーバの状態をチェックするのが楽しみになります。
さて、MRTGを知る前に、SNMPというものを知らなければなりません。SNMPとは、RFC1157で定義されているネットワークに接続された機器類をネットワーク経由で監視するためのプロトコルです。
SNMPに対応したネットワーク機器は、SNMPエージェントと呼ばれ、例えばそれがルータなら、自身のステータス状況や流れるデータ量を記録しています。そして、その記録したデータにアクセスするためのインターフェースをSNMPマネージャと言います。
SNMPマネージャからSNMPエージェントに対しては、情報を取得したり設定したりするという関係が成り立ちます。その情報を取得するSNMPマネージャの代表格が、このページの主役 MRTG なのです。
もとい、MRTGは、その機能の一部としてSNMPマネージャの機能があるに過ぎず、本来は数値の統計を取ってグラフ化するためのソフトですが、サーバのトラフィックやCPUやメモリやディスクの状態をチェックするにはうってつけのソフトなのです。
というわけで、MRTGを使ってサーバの各種データをグラフ化してみましょう。
MRTG とは The Multi Router Traffic Grapher の頭文字を取ったもので、ネットワークの負荷を監視してその状態を示すグラフィックイメージを含むHTMLページを生成してくれるソフトです。PerlとCで記述されており、UNIXとWindows NTで動作します。
例えばこんな感じのページを自動的に作成してくれて、サーバの状態をチェックするのが楽しみになります。
さて、MRTGを知る前に、SNMPというものを知らなければなりません。SNMPとは、RFC1157で定義されているネットワークに接続された機器類をネットワーク経由で監視するためのプロトコルです。
SNMPに対応したネットワーク機器は、SNMPエージェントと呼ばれ、例えばそれがルータなら、自身のステータス状況や流れるデータ量を記録しています。そして、その記録したデータにアクセスするためのインターフェースをSNMPマネージャと言います。
SNMPマネージャからSNMPエージェントに対しては、情報を取得したり設定したりするという関係が成り立ちます。その情報を取得するSNMPマネージャの代表格が、このページの主役 MRTG なのです。
もとい、MRTGは、その機能の一部としてSNMPマネージャの機能があるに過ぎず、本来は数値の統計を取ってグラフ化するためのソフトですが、サーバのトラフィックやCPUやメモリやディスクの状態をチェックするにはうってつけのソフトなのです。
というわけで、MRTGを使ってサーバの各種データをグラフ化してみましょう。
≫レシピ
| ucd-snmp | SNMPエージェントソフト |
| Perl | 入ってないことは無いと思いますが、バージョンは5.005以降 |
| zlib | データ圧縮ライブラリ |
| libpng | PNG形式の画像用ライブラリ。zlibと依存関係にあり。 |
| GD | 画像生成用ライブラリ。libpngと依存関係にあり。 |
| MRTG | 本体です。 |
MRTG をインストールして実行するには、MRTG以外にも上の表にある様なものを揃えなければなりません。
Vine Linux2.5の場合はucd-snmpとMRTG本体以外は既に入っていました。
インストールされているかどうかは、
#>rpm -aq | grep PACKAGE_NAME
とか。
表の上から順番にインストールして設定していきます。
特に zlib より下は上下で依存関係のあるライブラリなので順番に入れないとダメです。
≫ucd-snmp のインストール
ダイ@管理人の場合は、ucd-snmp は apt で入れました。
#>apt-get update
#>apt-get install ucd-snmp
確かデフォルトの設定では apt-get しようとしても、ucd-snmp が見つからなかったので /etc/apt/sources.list を編集した記憶があります。と言っても、コメントアウトしていた所を有効に直してダウンロード先を増やしただけですが。
ucd-snmp をサイトからダウンロードして入れようとする場合は、net-snmp というのがあって紛らわしいと思いますが、この net-snmp は ucd-snmp の後継らしいです。どちらも SNMPエージェント統合環境ソフトですが、ひとまずここは ucd-snmp を入れましょう。
え?! net-snmp の方が新しくていいんじゃないの? と思うあなたはするどい。しかし、この世界では最新が最適とは限らず、ちょっと古い、いわゆる「枯れた」ソフトの方が良い場合が多いのです。なので、ucd-snmp にしときます。バージョンアップは後から出来る!まずは動くことが大切。
さて、ucd-snmp の設定ファイルは /etc/snmp/snmpd.conf です。
デフォルトで用意されているものはバックアップを取って、以下の様にしましょう。
SNMP の起動は
#>snmpd
です。
以下のようでも大丈夫。
#>service snmpd start
動いているかの確認は
#>ps -ax | grep snmpd
止める時は
#>service snmpd stop
再起動した時に SNMPを動かし忘れないように設定しときましょう。[*] snmpd
#>ntsysv
もしくは /etc/rc.d/ に起動用の設定をしましょう。
#>apt-get update
#>apt-get install ucd-snmp
確かデフォルトの設定では apt-get しようとしても、ucd-snmp が見つからなかったので /etc/apt/sources.list を編集した記憶があります。と言っても、コメントアウトしていた所を有効に直してダウンロード先を増やしただけですが。
ucd-snmp をサイトからダウンロードして入れようとする場合は、net-snmp というのがあって紛らわしいと思いますが、この net-snmp は ucd-snmp の後継らしいです。どちらも SNMPエージェント統合環境ソフトですが、ひとまずここは ucd-snmp を入れましょう。
え?! net-snmp の方が新しくていいんじゃないの? と思うあなたはするどい。しかし、この世界では最新が最適とは限らず、ちょっと古い、いわゆる「枯れた」ソフトの方が良い場合が多いのです。なので、ucd-snmp にしときます。バージョンアップは後から出来る!まずは動くことが大切。
さて、ucd-snmp の設定ファイルは /etc/snmp/snmpd.conf です。
デフォルトで用意されているものはバックアップを取って、以下の様にしましょう。
# snmpd.conf # コミュニティ名とセキュリティ名の対応を設定 # private や public は任意でユニークな名称に変更する # sec.name source community com2sec local localhost private com2sec mynetwork 192.168.0.0/24 public # グループごとに権限を設定するための設定 view all included .1 80 # view に対して権限を許可する設定 access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none # セキュリティ名とグループ名を対応させます group MyROGroup v1 mynetwork group MyROGroup v2c mynetwork group MyROGroup usm mynetwork # システム情報 syslocation SERVER_LOCATION_INFO syscontact root |
SNMP の起動は
#>snmpd
です。
以下のようでも大丈夫。
#>service snmpd start
動いているかの確認は
#>ps -ax | grep snmpd
止める時は
#>service snmpd stop
再起動した時に SNMPを動かし忘れないように設定しときましょう。[*] snmpd
#>ntsysv
もしくは /etc/rc.d/ に起動用の設定をしましょう。
≫Perl/zlib/libpng/GD のインストール
ダイ@管理人の場合(Vine Linux2.5)、全部最初から入っていました。
運が良いと、apt や rpm で一撃インストール完了の余裕しゃくしゃくだと思います。しかし、バージョンを選んでインストールしたい場合もあると思うので、以下。
■Perl
Perl のインストール方法はさすがに割愛。初心者がPerlの入ってないLinux環境をどうやって手に入れるのか、いや、手に入れない(反語)。
■zlib
■libpng
■GD
インストールが済めば特に設定などありません。
運が良いと、apt や rpm で一撃インストール完了の余裕しゃくしゃくだと思います。しかし、バージョンを選んでインストールしたい場合もあると思うので、以下。
■Perl
Perl のインストール方法はさすがに割愛。初心者がPerlの入ってないLinux環境をどうやって手に入れるのか、いや、手に入れない(反語)。
■zlib
|
#>tar xvzf zlib-X.X.X.tar.gz #>cd zlib-X.X.X zlib-X.X.X#>./configure zlib-X.X.X#>make zlib-X.X.X#>make test *** zlib test OK *** zlib-X.X.X#>make install |
■libpng
|
#>tar xvzf libpng-X.X.X.tar.gz #>cd libpng-X.X.X libpng-X.X.X#>cp ./scripts/makefile.mips ./Makefile libpng-X.X.X#>make test libpng passes test libpng-X.X.X#>make install |
■GD
|
#>tar xvf gdX.X.X.tar.gz #>cd gdX.X.X gdX.X.X#>make gdX.X.X#>make install |
インストールが済めば特に設定などありません。
≫MRTG のインストール
いよいよメインです。
MRTG はソースからコンパイルしてインストールします。
以上。
デフォルトだと、/usr/local/mrtg-2/ にインストールされます。
MRTG はソースからコンパイルしてインストールします。
|
#>tar xvfz mrtg-X.X.X.tar.gz #>cd mrtg-X.X.X mrtg-X.X.X#>./configure mrtg-X.X.X#>make mrtg-X.X.X#>make install |
以上。
デフォルトだと、/usr/local/mrtg-2/ にインストールされます。
≫MRTG の設定
MRTG の設定ファイルを作成します。
色んな所に、cfgmaker を使って、設定ファイルを作る方法が載っていると思いますが、別に使わなければならないという決まりはありません。なので、ここではツールを使わずにやります(´ν`)
では、適当に、/usr/local/mrtg-2/cfg/ というディレクトリでも作成して、その中に mrtg.cfg というファイルを作ります(普通のテキストファイルですが、文字コードはEUC、改行コードはLFに)。
中身は以下。
それぞれの意味は後述します。
ただし、
Target[Traffic_Analysis]: 5:public@192.168.0.2:
行の public@192.168.0.2 は環境に合わせて変更して下さい。
public は snmpd.conf で設定内容に合わせて。192.168.0.2 はサーバのアドレスです。
つづいて、アイコン画像をコピーします。
(しなきゃしないで支障はありませんが、表示がかっこ悪いのでちゃんとやった方がいいです)
#>mkdir -p /home/httpd/html/mrtg/icons
#>cp /usr/local/mrtg-2/lib/mrtg2/*.png /home/httpd/html/mrtg/icons/
では、MRTG を実行してみましょう。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
/usr/local/mrtg-2/bin/mrtg はデフォルトの場合で、インストール先が違えばパスが変わります。
/usr/local/mrtg-2/cfg/mrtg.cfg は先ほど作成した mrtg.cfg です。作成した場所が違えばパスが変わります。
なんかずらずらっと表示が出たと思います。5つぐらい。
Rateup WARNING: なんてのが含まれていて、ドキッとするかもしれませんが、正常な動作です。
もしここで、
gd-png: fatal libpng error: Invalid filter type specified
gd-png error: setjmp returns error condition
と出たら、libpng が古いとかバージョンの違いによるエラーなので、ライブラリなどを入れ替える必要があります。
で、もしもエラーメッセージ通り libpng を替えてもダメだぞ! という場合は、MRTG 自体のバージョンを替えてみましょう。
さあ、ここでバージョンを下げることによってうまくいったら、SNMP の段でなぜ最新の net-snmp にしなかったか、「枯れた」ものが良しと言ったのはなぜかが理解できる思います。
さて、無事 Rateup WARNING: エラーが出たら、再び MRTG を実行します。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
一度目よりは数が減るものの、まだエラーが出ます。しかし、これも正常の動作。
懲りずにもう一度実行します。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
今度はエラーも何も出ずに実行できたと思います。
/home/httpd/html/mrtg/ をのぞいてみましょう。
Traffic_Analysis-day.png
Traffic_Analysis-week.png
Traffic_Analysis-month.png
Traffic_Analysis-year.png
Traffic_Analysis.html
Traffic_Analysis.log
Traffic_Analysis.old
というようなファイル群があると思います。もし、正常に作成できていなければ、設定ファイルを見直してみましょう。
では、感動の瞬間です。
ブラウザで、http://サーバのIPアドレス/mrtg/Traffic_Analysis.html を見てみましょう。
感動しましたか?
この時点ではグラフが全然進んでませんが、実行を繰り返すと出来てきます。
実行を繰り返すといっても、いちいち手動で実行するのも馬鹿げているので、cron に登録します。
#>crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
以上でひと通りの設定は終了です。
1日くらい経つとグラフらしくなってくると思います。
上記設定では、サーバのトラフィック量をグラフ化していますが、他にもメモリや CPU やハードディスクや httpd のプロセス数なんかをグラフ化できます(それ以外にもまあ、なんでも出来るらしいが)。
下の解説などを参考にやってみてください。
色んな所に、cfgmaker を使って、設定ファイルを作る方法が載っていると思いますが、別に使わなければならないという決まりはありません。なので、ここではツールを使わずにやります(´ν`)
では、適当に、/usr/local/mrtg-2/cfg/ というディレクトリでも作成して、その中に mrtg.cfg というファイルを作ります(普通のテキストファイルですが、文字コードはEUC、改行コードはLFに)。
中身は以下。
# mrtg.cfg # 閲覧用のHTMLや画像データを出力するディレクトリ # http で閲覧できる場所に設定 WorkDir: /home/httpd/html/mrtg # MRTG のアイコンを置いておくディレクトリ # 以下の記述で /home/httpd/html/mrtg/icons/ の意味 IconDir: /mrtg/icons/ # 日本語化する設定 Language: eucjp # Traffic_Analysis Target[Traffic_Analysis]: 5:public@192.168.0.2: SetEnv[Traffic_Analysis]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="eth0" MaxBytes[Traffic_Analysis]: 1250000 YLegend[Traffic_Analysis]: Traffic Options[Traffic_Analysis]: growright Title[Traffic_Analysis]: Traffic Analysis PageTop[Traffic_Analysis]: Traffic Analysis |
それぞれの意味は後述します。
ただし、
Target[Traffic_Analysis]: 5:public@192.168.0.2:
行の public@192.168.0.2 は環境に合わせて変更して下さい。
public は snmpd.conf で設定内容に合わせて。192.168.0.2 はサーバのアドレスです。
つづいて、アイコン画像をコピーします。
(しなきゃしないで支障はありませんが、表示がかっこ悪いのでちゃんとやった方がいいです)
#>mkdir -p /home/httpd/html/mrtg/icons
#>cp /usr/local/mrtg-2/lib/mrtg2/*.png /home/httpd/html/mrtg/icons/
では、MRTG を実行してみましょう。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
/usr/local/mrtg-2/bin/mrtg はデフォルトの場合で、インストール先が違えばパスが変わります。
/usr/local/mrtg-2/cfg/mrtg.cfg は先ほど作成した mrtg.cfg です。作成した場所が違えばパスが変わります。
なんかずらずらっと表示が出たと思います。5つぐらい。
Rateup WARNING: なんてのが含まれていて、ドキッとするかもしれませんが、正常な動作です。
もしここで、
gd-png: fatal libpng error: Invalid filter type specified
gd-png error: setjmp returns error condition
と出たら、libpng が古いとかバージョンの違いによるエラーなので、ライブラリなどを入れ替える必要があります。
で、もしもエラーメッセージ通り libpng を替えてもダメだぞ! という場合は、MRTG 自体のバージョンを替えてみましょう。
さあ、ここでバージョンを下げることによってうまくいったら、SNMP の段でなぜ最新の net-snmp にしなかったか、「枯れた」ものが良しと言ったのはなぜかが理解できる思います。
さて、無事 Rateup WARNING: エラーが出たら、再び MRTG を実行します。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
一度目よりは数が減るものの、まだエラーが出ます。しかし、これも正常の動作。
懲りずにもう一度実行します。
#>/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
今度はエラーも何も出ずに実行できたと思います。
/home/httpd/html/mrtg/ をのぞいてみましょう。
Traffic_Analysis-day.png
Traffic_Analysis-week.png
Traffic_Analysis-month.png
Traffic_Analysis-year.png
Traffic_Analysis.html
Traffic_Analysis.log
Traffic_Analysis.old
というようなファイル群があると思います。もし、正常に作成できていなければ、設定ファイルを見直してみましょう。
では、感動の瞬間です。
ブラウザで、http://サーバのIPアドレス/mrtg/Traffic_Analysis.html を見てみましょう。
感動しましたか?
この時点ではグラフが全然進んでませんが、実行を繰り返すと出来てきます。
実行を繰り返すといっても、いちいち手動で実行するのも馬鹿げているので、cron に登録します。
#>crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg
以上でひと通りの設定は終了です。
1日くらい経つとグラフらしくなってくると思います。
上記設定では、サーバのトラフィック量をグラフ化していますが、他にもメモリや CPU やハードディスクや httpd のプロセス数なんかをグラフ化できます(それ以外にもまあ、なんでも出来るらしいが)。
下の解説などを参考にやってみてください。
≫mrtg.cfg の解説
mrtg.cfg ファイルは、実行時に設定ファイルを引数として渡すので、ファイル名は本当は何でもOKです(ここではわかりやすく mrtg.cfg と言ってるだけで、hoge.cfg でも何でもOK)。
例えば、トラフィック量とメモリ使用量を同時に統計出力する場合は、ひとつの mrtg.cfg ファイルに両方の設定を書きます。
中身には、 先頭位置でまず指定しなければいけないのは
WorkDir:
IconDir:
Language:
です。
設定の文法は
設定[識別子]: 設定内容
です。(ex. Target[traffic]: 5:public@192.168.0.5:)
識別子に指定した文字列でファイルが出力されます(ex.では traffic)。
複数の統計を取る場合に、識別子を指定せずに、全ての統計に対して設定内容を指定するには識別子を [_] アンダーバーにします。(ex. Options[_]: noinfo)
全ての統計に対して設定内容を指定するが、それぞれの統計で設定内容を追加する場合は、識別子に [^] を指定します。(ex. Options[^]: growright)
それぞれの設定内容を優先し、全体の設定内容を後ろに付ける場合は識別子に [$] を指定します。(ex. Options[$]: integer)
■基本設定
■グラフの設定
■HTML出力設定
■Options で指定できる内容(Options[_]: XXXXX)
■Target での指定
OID(Object IDentifier:オブジェクト識別子)ツリーを理解して設定するのも難しいので、以下に代表的なものを上げてみます(public@192.168.0.5 はsnmpd.confや環境に合わせて変更すること)。
*1 : snmpd.conf で disk / 10000 と disk /var 10000 を有効に設定する(#を取る)
*2 : snmpd.conf で proc httpd を有効に設定する(#を取る)
例えば、トラフィック量とメモリ使用量を同時に統計出力する場合は、ひとつの mrtg.cfg ファイルに両方の設定を書きます。
中身には、 先頭位置でまず指定しなければいけないのは
WorkDir:
IconDir:
Language:
です。
設定の文法は
設定[識別子]: 設定内容
です。(ex. Target[traffic]: 5:public@192.168.0.5:)
識別子に指定した文字列でファイルが出力されます(ex.では traffic)。
複数の統計を取る場合に、識別子を指定せずに、全ての統計に対して設定内容を指定するには識別子を [_] アンダーバーにします。(ex. Options[_]: noinfo)
全ての統計に対して設定内容を指定するが、それぞれの統計で設定内容を追加する場合は、識別子に [^] を指定します。(ex. Options[^]: growright)
それぞれの設定内容を優先し、全体の設定内容を後ろに付ける場合は識別子に [$] を指定します。(ex. Options[$]: integer)
■基本設定
| Target | 統計データの対象 |
| MaxBytes | データがとりうる最大値 |
| Title | Webページを出力した時の<TITLE>タグの内容 |
| PageTop | グラフの前に表示するHTMLテキスト |
| Options | グラフの描画オプション |
■グラフの設定
| AbsMax | グラフの絶対的な最大値を指定する。このオプションを指定しない場合,取得したデータの値に応じて縦軸が適時拡大縮小される。 |
| UnScaled | データに合わせて拡大縮小しない。 |
| WithPeak | 平均値ではなく,ピーク値をとる。 |
| Suppress | 日グラフ(d),週グラフ(w),月グラフ(m),年グラフ(y)どの種類のグラフを作成するのかを設定する。Suppress で指定したグラフが作成されない。例えば、Suppress[_] my とすると、月、年グラフが作成されない。 |
| MaxBytes1 | データ1の最大値を設定 |
| MaxBytes2 | データ2の最大値を設定 |
| XSize | 作成するグラフの画像ファイルの横幅のピクセル数を指定する。20〜600まで指定できる。デフォルトは400 |
| YSize | 作成するグラフの画像ファイルの縦幅のピクセル数を指定する。20以上の値を指定できる。デフォルトは100 |
| XZoom | 横軸の拡大縮小率を指定 |
| YZoom | 縦軸の拡大縮小率を指定 |
| XScale | 横軸の拡大縮小率を指定する。画像ファイルのサイズは変更されない。 |
| YScale | 縦軸の拡大縮小率を指定する。画像ファイルのサイズは変更されない。 |
| YTics | 1つのグラフに4本以上の線を描画するときに設定 |
| YTicsFactor | Y軸のデータにここで指定した値を乗算する |
| Factor | 取得したデータにここで指定した値を乗算する |
| Step | データの描画間隔を指定する。デフォルトは300秒 |
| Colours | グラフの描画色を設定 |
| YLegend | Y軸の軸の名前(ラベル)を指定 |
| ShortLegend | Y軸の軸の単位(ラベル)を指定 |
| Legend1 | データ1(受信データ)のグラフ名(ラベル)を指定 |
| Legend2 | データ2(送信データ)のグラフ名(ラベル)を指定 |
| Legend3 | データ1(受信データ)の百分率グラフ名(ラベル)を指定 |
| Legend4 | データ2(送信データ)の百分率グラフ名(ラベル)を指定 |
| LegendI | データ1(受信データ)のラベルを指定 |
| LegendO | データ2(送信データ)のラベルを指定 |
| kilo | キロの単位を切り替える。デフォルトは1000 |
| kMG | k(キロ),M(メガ),T(テラ)などの単位を変更 |
| Timezone | タイムゾーンを設定 |
| Weekformat | 週の表示形式を変更する |
| SetEnv | 外部プログラムを呼び出すときに設定する環境変数を指定 |
■HTML出力設定
| PageFoot | Webページの一番下に表示されるHTMLテキストを指定 |
| AddHead | <HEAD>タグと<BODY>タグのあいだに指定したいHTMLテキストを指定 |
| BodyTag | <BODY>タグを変更する場合に指定 |
| Background | 背景色を変更 |
| Extension | 作成されるファイルの拡張子を変更 |
■Options で指定できる内容(Options[_]: XXXXX)
| growright | グラフの横軸(時間)を左から右方向にする |
| bits | 値を8倍し、ビットとして扱う |
| perminute | 分単位のグラフを表示するときに値を60倍する |
| perhour | 時間単位のグラフを表示するときに値を3600倍する |
| noinfo | 出力するWebページにデバイス名や時刻情報を出力しない |
| nopercent | パーセント表示しない |
| transparent | グラフ画像の背景を透明にする |
| integer | 値を整数化する |
| dorelpercent | 百分率にしたグラフを重ねて表示する |
| gauge | データの値の差をとらない |
| absolute | データの値を時間で割らない |
| unknaszero | 取得できなかった部分のデータを0として扱う |
| withzeroes | 0であるデータを無視しない |
■Target での指定
OID(Object IDentifier:オブジェクト識別子)ツリーを理解して設定するのも難しいので、以下に代表的なものを上げてみます(public@192.168.0.5 はsnmpd.confや環境に合わせて変更すること)。
| トラフィック量 | Target[traffic]: 5:public@192.168.0.5: |
| メモリ使用量 | Target[memory]: 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.4.0:public@192.168.0.5 |
| CPU負荷 | Target[cpu]: 1.3.6.1.4.1.2021.10.1.5.2&1.3.6.1.4.1.2021.10.1.5.3:public@192.168.0.5 |
| Disk空き容量 *1 | Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:public@192.168.0.5 |
| HTTPdプロセス数 *2 | Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.4.1:public@192.168.0.5: |
*2 : snmpd.conf で proc httpd を有効に設定する(#を取る)
≫indexページの作成
複数の統計を出力した場合、全ての統計を一覧できるインデックスページがあると便利です。
MRTG にはちゃんとインデックスページを作成するツールがあります。
/usr/local/mrtg-2/bin/indexmaker がそれです。
#>/usr/local/mrtg-2/bin/indexmaker /usr/local/mrtg-2/cfg/mrtg.cfg > /home/httpd/html/mrtg/index.html
http://サーバのIPアドレス/mrtg/
どうですか? 正しくインデックスページが表示されましたでしょうか?
indexmaker の実行時にはオプションを付けることが可能です。
/usr/local/mrtg-2/doc/mrtg2/indexmaker.html にマニュアルがありますので、読んでみましょう。英語ですが、そうたいしたオプション内容でもないので理解できると思います(だって、ダイ@管理人でも読めたのだから)。
その他のマニュアルも /usr/local/mrtg-2/doc/mrtg2/ にあります。一読してみましょう。
MRTG にはちゃんとインデックスページを作成するツールがあります。
/usr/local/mrtg-2/bin/indexmaker がそれです。
#>/usr/local/mrtg-2/bin/indexmaker /usr/local/mrtg-2/cfg/mrtg.cfg > /home/httpd/html/mrtg/index.html
http://サーバのIPアドレス/mrtg/
どうですか? 正しくインデックスページが表示されましたでしょうか?
indexmaker の実行時にはオプションを付けることが可能です。
/usr/local/mrtg-2/doc/mrtg2/indexmaker.html にマニュアルがありますので、読んでみましょう。英語ですが、そうたいしたオプション内容でもないので理解できると思います(だって、ダイ@管理人でも読めたのだから)。
その他のマニュアルも /usr/local/mrtg-2/doc/mrtg2/ にあります。一読してみましょう。
≫シェルと組み合わせてログファイルの監視
サーバログを監視してみましょう。どんなログでもいいんですが、せっかくなのでWebサーバ・Apacheのアクセスログとエラーログをモニタします。
仕組みというか、原理というか、MRTGは以下の4行の出力を受けてグラフを作成します。
1行目 : 値1(整数・必須)
2行目 : 値2(整数・必須)
3行目 : システムが起動してから経過した時間(uptime)
4行目 : 値の説明
というわけで、まず、この4行を返すシェルスクリプトを作成します。
/var/log/httpd/access_logはApacheのログファイルへのパスです。
単純にログファイルの行数を数えて出力しています。
/usr/local/mrtg-2/bin/apachelog.sh などのように設置して、パーミションを 705 にして実行してみると、4行の出力が返ってきます。
これをグラフ化するには、mrtg.cfg に設定を書きます。
以上です。
詳しくは、こちらの「SNMPに頼らないでMRTGグラフを作成する」も参照してみてください。
仕組みというか、原理というか、MRTGは以下の4行の出力を受けてグラフを作成します。
1行目 : 値1(整数・必須)
2行目 : 値2(整数・必須)
3行目 : システムが起動してから経過した時間(uptime)
4行目 : 値の説明
というわけで、まず、この4行を返すシェルスクリプトを作成します。
|
#!/bin/sh
LANG=C export LANG ACCESSLOG=`wc -l /var/log/httpd/access_log | awk '{print $1}'` ERRORLOG=`wc -l /var/log/httpd/error_log | awk '{print $1}'` UPTIME=`uptime | awk '{print $3$4}' | sed -e "s/,//g"` echo "$ERRORLOG" echo "$ACCESSLOG" echo "$UPTIME" echo "AccessLog and ErrorLog" |
/var/log/httpd/access_logはApacheのログファイルへのパスです。
単純にログファイルの行数を数えて出力しています。
/usr/local/mrtg-2/bin/apachelog.sh などのように設置して、パーミションを 705 にして実行してみると、4行の出力が返ってきます。
これをグラフ化するには、mrtg.cfg に設定を書きます。
|
# ApacheLog Target[ApacheLog]: `/usr/local/mrtg-2/bin/apachelog.sh` MaxBytes[ApacheLog]: 500000 YLegend[ApacheLog]: ApacheLog Title[ApacheLog]: ApacheLog PageTop[ApacheLog]: ApacheLog ShortLegend[ApacheLog]: hit LegendI[ApacheLog]: Error LegendO[ApacheLog]: Access Options[ApacheLog]: gauge, absolute |
以上です。
詳しくは、こちらの「SNMPに頼らないでMRTGグラフを作成する」も参照してみてください。