MRTGのインストールと設定方法


MRTG 概要

MRTGは最も設定が簡単な統合監視ツールで、トラフィック監視かつ小規模環境に向いております。他のツールに比べて機能が貧弱なので監視用途としてはお勧めできませんが、手っ取り早くトラフィックを計測したい時に便利なツールです。

今日では滅多に使われなくなりましたが、性能検証などの用途で、トラフィックを急ぎで計測したい時に使用する人を稀に見ます。

MTRGはMulti Router Traffic Grapherの略称で、名前の通りネットワーク機器のトラフィック監視目的に作られたツールです。サーバ機器を監視する事もできますが、サーバの監視にはあまり向いていません。

MRTG インストールと最小限の設定

MRTG インストール

Web上の資料によると、ソースからMRTGをインストールする手順が多くを占めていますが、現在(2012/07/03)ではyumコマンドでインストールする事もできます。

MRTG 設定ファイルの雛形作成 – cfgmaker [必須]

MRTGはcfgmakerというツールを用いて設定ファイルの雛形を作成します。cfgmakerは以下のような書式を用いて、監視対象のルータのコミュニティ名とホスト名を指定します。なお、名前解決ができない環境ならば、<hostname>の部分はIPアドレスを指定しても差し支えありません。

cfgmakerというツールは設定ファイルを標準出力しますので、以下のように適当なファイルに設定をリダイレクトさせます。

設定ファイルの雛形のうち、以下のハイライトされた部分をメモに残します。

MRTG 設定ファイルの作成 – mrtg.cfg [必須]

MRTGの設定ファイルは、/etc/mrtg/mrtg.cfgに記載します。cfgmakerで作成されたファイルのハイライトされた部分を、mrtg.cfgの末尾に加筆します。ただし、以下16行目のMaxBytesについては、0は認められないので、0より大きい適当な数に書き換えてください。

MRTG 監視の実行確認 [任意]

MRTGの監視は、mrtgコマンドに設定ファイル(mrtg.cfg)を引数で渡す事で実行できます。

mrtgコマンドを手作業で何回か実行し、エラーが出力されない事を確認します。なお、初回実行時のエラーメッセージは、前回取得した値がない事を意味するので無視して差し支えございません。

MRTGはyumでインストールすると、5分に1回監視を行う設定が自動的に作成されます。インストールと同時に、以下のような/etc/cron.d/mrtgが作成されますので、/etc/mrtg/mrtg.cfgの設定に誤りがない場合は、自動的に監視が実行されます。

MRTG index.html の作成

MRTGはindexmakerというツールによって、index.htmlを生成する事ができます。以下のように、引数に設定ファイルを与える事で、index.htmlが標準出力されます。

indexにアクセスできる事を確認

MRTG httpdアクセス許可

yumによってMRTGをインストールすると、/etc/httpd/conf.d/mrtg.cnfというファイルが作成され、apacheによってWEB面が公開されます。ただし、/etc/httpd/conf.d/mrtg.cnfのデフォルト設定はlocalhostからのアクセスしか許していませんので、適宜アクセス権を変更し外部から閲覧できるようにして下さい。設定変更例は以下の通りです。

設定変更後、httpdをリロードし設定を反映させます。

http://<ip_addr>/mrtg/をブラウザで表示できることを確認します。

mrtg_index_001

MRTG 表示設定

上記の手順に基づいた設定では以下のような不都合が生じます。

  • グラフのタイトルが分かりづいら
  • グラフの右側に進むつれて古いデータになる ( 他の監視ツールは右側が新しいデータを表す )
  • 送受信速度の単位がByte per secであり分かりづらい ( 他の監視ツールはbit per sec で表示される )

このような不都合を解消するために、グラフ表示を整えます。

MRTG 表示設定例

lo (loopback interface) に関するのトラフィック監視は不要であると思いますので、loに関する設定は削除してしまいます。その後、eth0に関する設定を以下のように書き換えます。各項目の意味は、後ほど説明します。

新しい表示設定に基づいたindex.htmlを生成するために、indexmakerコマンドを再実行します。

index.htmlにアクセスし、表示形式が変わった事を確認します。

mrtg_index_002

MRTG 設定ファイルの書式

/etc/httpd/conf.d/mrtg.cfgは、keyword, id, valueを以下のような書式で指定します。idは、設定ファイルで一意な監視項目を表します。aws.changineer.info_eth0のように、ホスト名と監視項目を組み合わせた命名規則にすると、idの重複を避ける事ができると思います。

各keywordの説明は以下の通りです。

キーワード説明
Target監視対象のOID, コミュニティ名, ホスト名を指定します。
Titleグラフの上部に表示されるグラフのタイトルです。
PageTop各ページのトップに表示されるタイトルです。h1タグなどで囲み大きめの文字で表示すると良いでしょう。
Optionsグラフ表示に関するオプションです。gauge, absolute, growright, noinfo, bitsなどが指定できます。
Timezone最終更新時刻を表示する際のタイムゾーンです。Timezoneの指定を省略した場合は、UTCで表示されます。
MaxBytes表示する値の上限です。この値を上回る値を取得した場合は、何らかの異常があったものと見なし値を破棄します。
ShortLegendMax, Average, Current欄に表示される値の単位です。
YLegend縦軸の単位です。
LegendI1つ目(緑線)の項目の説明です。
LegendO2つ目(青線)の項目の説明です。
Legend11つ目(緑線)の項目の詳細説明です。分かりづらいですが、詳細説明は画面下の方に表示されています。
Legend22つ目(青線)の項目の詳細説明です。分かりづらいですが、詳細説明は画面下の方に表示されています。

MRTG 設定ファイル – target keyword

targetは監視項目を定義するキーワードです。トラフィックを監視する場合は、interface番号, コミュニティ名, ホスト名を指定します。設定例は以下の通りです。2はinterface番号, publicはコミュニティ名, aws.changineer.infoはホスト名になります。

トラフィック以外を監視する場合は、OID, コミュニティ名, ホスト名を指定します。もともとトラフィック監視用ツール(inboundとoutboundを監視するツール)として開発された名残もあって、OIDは2つ指定する仕様になっています。以下は、1分間, 5分間のロードアベレージを監視する設定例です。

MRTG 設定ファイル – options keyword

optionsはグラフ描画に関するキーワードです。主なキーワードは以下の通りです。gaugeについては、後ほど詳細に説明します。

オプション説明
growright横軸について右に行くほど時間が進みます(デフォルトは左に行くほど時間が進みます)
noinfo画面上にホスト名などの情報を表示させないようにします。
bits取得した値を8倍にして表示します。Byte単位からbit単位に変換する時に使用します。
gauge差分ではなく絶対値で表示したい時に使用します。ロードアベレージやディスク使用率に対して使用します。

MRTG トラフィック以外の監視

gauge オプション ( 差分 or 絶対値の考察 )

トラフィック以外を監視する場合は、取得する値を差分で評価すべきか、絶対値で評価すべきかを考える必要があります。

トラフィックの監視はトラフィックカウンタを元に行われます。トラフィックカウンタは通信量の積算値ですので、トラフィックカウンタの増分を時間で割った値が通信速度になります。MRTGはトラフィックを監視するために作成されたツールなので、デフォルト設定が差分での評価です。

もし、ロードアベレージのように絶対値で評価したい項目ならば、gaugeというオプションを指定して下さい。

MRTG ロードアベレージ監視の設定例

ロードアベレージを監視する/etc/mrtg/mrtg.cnfの設定例は以下の通りです。間違えやすく注意が必要なポイントは、OIDを2つ指定する事とgaugeオプションです。

Tips

MRTG その他の機能

本ページで紹介した機能以外に、MRTGは以下のような機能を備えています。詳細は、www.mrtg.jpを参照下さい。

  • 閾値を超過したかどうかの監視。閾値超過をトリガとしてスクリプトを呼び出す事も可能
  • RRD ( round robin database ) へのデータ格納

Array found where operator expected at

MRTGが正常に機能しない時は、以下のようにmrtgコマンドを手動で実行してみましょう。

エラーハンドリングが雑で、”Array found where operator expected at (eval 19)”とperlのエラー出力がそのまま見えてしまっていますが、よく読めばヒントが書いてあります。ERROR: Target[aws.changineer.info_eth0][_IN_] ‘public@aws.changineer.info:’と書いてある事から、targetキーワードの指定ミスである事が読み取れます。

targetキーワードは、OID, コミュニティ名, ホスト名をコロン区切りで指定し、OIDは2つ指定する必要がある事に留意して下さい。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする