ここまででMRTGが動作するようになったはずですが、よりMRTGを使いこなすために、ここで設定ファイルの主要な項目を紹介します。
多くの設定項目が「設定項目名[識別子]」のように表記され、「識別子」で表される情報ごとにMRTGの設定項目を定義する必要があります。この識別子は、MRTGによって作成される一連のファイル群(識別子「.html」「.log」など)のファイル名に利用されます。前述したように、cfgmakerを利用した場合は「監視対象ホスト_I/F番号」が識別子として利用されています。
以下の4つの項目はMRTGの設定ファイルに必須の項目なので、必ず記述してください。
Target[識別子]:監視対象となるイーサネットポートの「ポート番号:コミュニティ名@アドレス」
MaxBytes[識別子]:そのポートの転送許容量(byte表示)
Title[識別子]:MRTGで出力されるページにおいて
設定ファイルに複数の識別子を設定することで、複数の異なるデータを扱うことが可能です。また、識別子には特殊文字を指定できます。例えば、「_」を指定すると、各設定値に対するデフォルト値を設定することになります。そのため、以下のように記述すれば、すっきりとした設定ファイルを作成可能です。
MaxBytes[_]: 12500000 |
また、「^」という特殊文字も利用可能です。前述の「_」を指定した場合、以下のように同じキーワードを使うと設定が完全に上書きされます。
Options[_]: growright |
一方、「^」を指定した場合は、同じキーワードを利用しても設定を追記することになります。
Options[^]: growright |
MRTGを利用するとトラフィック以外のさまざまな情報もグラフ化できますが、トラフィック以外の統計情報を記録する場合は取得するデータに応じて、グラフに付随する凡例やデータの単位などを書き換えたいことがあります。その際に設定ファイル中に指定できるキーワードを示しておきます。
キーワード | 説明 |
---|---|
YLegend[識別子] | Y軸のラベルを定義する |
ShortLegend[識別子] | 最大値、平均値、現在値の単位表示に利用する |
LegendI | 第1パラメータの凡例を示す文字列 |
LegendO | 第2パラメータの凡例を示す文字列 |
Options行にさまざまな指定をすることで、MRTGの挙動を変えることができます。MRTGが出力するグラフはデフォルトでは時間軸の進み方が右から左になっていて、最新の情報がグラフの左端に現れます。
これを変更するオプションがgrowrightです。以下のように指定すれば、時間軸を左から右へ進めることができます。
Options[識別子]: growright |
トラフィックの単位を「byte」ではなく「bit」で扱いたい場合は、Optionsに「bits」を指定します。Optionsには複数の値を「,」区切りで並べることができるので、上記2つを併せて指定し、以下のように設定することも可能です。
Options[識別子]: growright,bits |
Optionsに指定できるものはさまざまですが、トラフィック情報以外を対象にしてデータをグラフ化する場合に押さえるべき項目として、以下のようなものがあります。
設定値 | 説明 |
---|---|
gauge | 取得したデータと前回取得したデータとの差分を取らない。MRTGで取得したデータをそのまま利用したい場合に指定する |
absolute | 取得したデータと前回取得したデータとの差分を取らない。MRTGでデータ取得した時点で、すでに「現在のトラフィック」となるような値に対して利用する。gaugeとは異なり、データを計測時間間隔で割ったものを使用したい場合に指定する |
注:MRTGのデフォルトは「前回の値?今回の値/計測時間間隔」を統計値として利用します。 |
cfgmakerで作成した設定ファイルでは、Target行は以下のようになっています。
Target[192.168.0.2 _2]: 2:public@192.168.0.2: |
この場合、iso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifInOctets(10).I/Fポート(2)およびiso(1).org(3).dod(6).internet(1).mgmt(2).mib2(1).intreface(2).ifTable(2).ifEntry(1) ifOutOctets(16).I/Fポート(2)に対するSNMP要求を出し、情報を収集します。つまり、以下のようにコマンドを実行して取得できるデータを利用しています。
# snmpget -v 1 -c public 192.168.0.2 1.3.6.1.2.1.2.2.1.10.2 |
この値は、該当のネットワークI/Fに対するトータルの受信/送信データ量です。MRTGは前回取得したデータと今回取得したデータの差分を取り、さらに時間当たりのデータ転送量に直したうえで、HTMLファイルを作成しています。
MRTGの基本機能としては、前述のようにSNMPを利用して入出力トラフィック量(byte)を採取しますが、以下のようにSNMPのOIDを指定するような書式を利用することで、任意のSNMPデータをグラフ化できます。
Target[識別子]OID1&OID2:コミュニティ名@IPアドレス |
例えば、次の例では「インターフェイス番号1」における入力と出力のエラーカウントの統計を取ります。
Target[識別子]: 1.3.6.1.2.1.2.2.1.14.1&1.3.6.1.2.1.2.2.1.20.1:コミュニティ名@IPアドレス |
MRTGは、SNMPで提供されないデータを監視することも可能です。
Target[識別子]: `データを取得するためのプログラム` |
上記で指定する「データを取得するためのプログラム」は、以下の4行の出力を返すように作成します。
「監視対象の稼働時間」と「監視対象のホスト名」は作成されるHTMLファイルの一部に利用されますが、この表示が必要ない場合は空行を返すようなプログラムでも問題ありません。
前述したように、MRTGのデフォルトではシステム起動後の総受信データ量および総送信データ量のようなカウンタ値を扱うため、以下のような処理をしてからグラフを作成します。
グラフにプロットする値=前回取得した値−今回取得した値/データ取得間隔時間 |
そのため、SNMPのOIDを指定する場合も外部スクリプトを使用する場合も、取得するデータによってはOptionsキーワードにgaugeまたはabsoluteを指定することを忘れないでください。
MRTGは必ず2つの値を1つのグラフ内に表示します。1つしかデータが必要ない場合であっても、もう1つデータを用意しなければなりません。また、3つ以上のデータをグラフ化したい場合は、別のグラフを作成する必要があります。
MRTGのグラフ化機能に不満があるなら、MRTGの後継とされるRRDtoolを利用してみましょう。このツールを利用すると、3つ以上のデータを重ねて1つのグラフに載せることもできます。rrdデータベースという独自のデータ保存形式を利用することで、パフォーマンスの向上も図られています。
ネットワーク機器を監視するといっても、常時データやグラフとにらめっこしているわけにはいきません。監視しているデータがある閾値を超えた際に、何らかの警告を発するようにすることが求められます。MRTGでは、監視対象のデータが閾値を超えた場合に、外部プログラムを呼び出して管理者に通知することが可能です。
以下に閾値チェックのための設定項目を示します。
ThreshDirには、MRTGの実行ユーザーが書き込み可能なディレクトリを指定します。後述するキーワード群で設定した閾値を超えた場合は、このディレクトリにmrtg.cfg.識別子.maxIのようなファイルが作成されます。
ThreshDir: /usr/local/apache/htdocs/mrtg/threshdir |
ThreshMaxIとThreshMaxOには、それぞれ第1パラメータ/第2パラメータの値として認められる最大値を指定します。パラメータがこの値を上回ったときは、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。
同様にThreshMinIとThreshMinOには、それぞれ第1パラメータ/第2パラメータの値として認められる最小値を指定します。パラメータがこの値を下回ると、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。
これらのキーワードには[識別子]を付加して記述します。
ThreshMaxI[識別子]: 10 |
数値だけでなく、以下のように「%」を最後に付加した場合、MaxBytesで指定した値に対する百分率を閾値として指定できます。
MaxBytes[識別子]: 1000 |
注:この場合、値としては「100」が閾値となります。 |
ThreshProgIにはThreshMinI/ThreshMaxIが破られたとき、ThreshProgOにはThreshMinO/ThreshMaxOが破られたときに実行されるプログラムを指定します。そのプログラムが実行される際は、「識別子」「閾値」「現在のパラメータ値」の3つが引数として渡されます。
取得した値が正常値に戻った場合は、ThreshDir内のファイルが削除されてThreshProgOKI/ThreshProgOKOで指定したプログラムが実行されます。上述したThreshProgI/ThreshProgOと同様、ここで指定したプログラムにも「識別子」「閾値」「現在のパラメータ値」の3つが引数として渡されます。
「識別子」「閾値」「現在のパラメータ値」の3つは、外部プログラムをシェルで作成する場合はスクリプト内で「$1」「$2」「$3」という位置パラメータで、Perlでは「$ARGV[0]」「$ARGV[1]」「$ARGV[2]」で利用可能です。
それ以外の要素をスクリプト内で利用したければ、SetEnvに環境変数を設定し、シェルでは「$変数名」、Perlの場合は「$ENV{'変数名'}」で参照できます。
Copyright © ITmedia, Inc. All Rights Reserved.