MRTGによるサーバ監視システムの構築:Linux管理者への道(最終回)(2/3 ページ)
サーバの状態を長期・継続的に取得してビジュアライズすることで、いままで見えなかったことが見えるようになる。これを実現するソリューションがMRTGだ。(編集局)
MRTGの設定ファイル
ここまででMRTGが動作するようになったはずですが、よりMRTGを使いこなすために、ここで設定ファイルの主要な項目を紹介します。
主なグローバル設定項目
多くの設定項目が「設定項目名[識別子]」のように表記され、「識別子」で表される情報ごとにMRTGの設定項目を定義する必要があります。この識別子は、MRTGによって作成される一連のファイル群(識別子「.html」「.log」など)のファイル名に利用されます。前述したように、cfgmakerを利用した場合は「監視対象ホスト_I/F番号」が識別子として利用されています。
以下の4つの項目はMRTGの設定ファイルに必須の項目なので、必ず記述してください。
Target[識別子]:監視対象となるイーサネットポートの「ポート番号:コミュニティ名@アドレス」
MaxBytes[識別子]:そのポートの転送許容量(byte表示)
Title[識別子]:MRTGで出力されるページにおいて
PageTop[識別子]:MRTGで出力されるHTMLページにおいて、グラフの前に表示される文字列
設定ファイルに複数の識別子を設定することで、複数の異なるデータを扱うことが可能です。また、識別子には特殊文字を指定できます。例えば、「_」を指定すると、各設定値に対するデフォルト値を設定することになります。そのため、以下のように記述すれば、すっきりとした設定ファイルを作成可能です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、「^」という特殊文字も利用可能です。前述の「_」を指定した場合、以下のように同じキーワードを使うと設定が完全に上書きされます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
一方、「^」を指定した場合は、同じキーワードを利用しても設定を追記することになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
グラフ描画の制御
- YLegend/ShortLegend/LegendI/LegendO
MRTGを利用するとトラフィック以外のさまざまな情報もグラフ化できますが、トラフィック以外の統計情報を記録する場合は取得するデータに応じて、グラフに付随する凡例やデータの単位などを書き換えたいことがあります。その際に設定ファイル中に指定できるキーワードを示しておきます。
キーワード | 説明 |
---|---|
YLegend[識別子] | Y軸のラベルを定義する |
ShortLegend[識別子] | 最大値、平均値、現在値の単位表示に利用する |
LegendI | 第1パラメータの凡例を示す文字列 |
LegendO | 第2パラメータの凡例を示す文字列 |
- Options
Options行にさまざまな指定をすることで、MRTGの挙動を変えることができます。MRTGが出力するグラフはデフォルトでは時間軸の進み方が右から左になっていて、最新の情報がグラフの左端に現れます。
これを変更するオプションがgrowrightです。以下のように指定すれば、時間軸を左から右へ進めることができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
トラフィックの単位を「byte」ではなく「bit」で扱いたい場合は、Optionsに「bits」を指定します。Optionsには複数の値を「,」区切りで並べることができるので、上記2つを併せて指定し、以下のように設定することも可能です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Optionsに指定できるものはさまざまですが、トラフィック情報以外を対象にしてデータをグラフ化する場合に押さえるべき項目として、以下のようなものがあります。
設定値 | 説明 |
---|---|
gauge | 取得したデータと前回取得したデータとの差分を取らない。MRTGで取得したデータをそのまま利用したい場合に指定する |
absolute | 取得したデータと前回取得したデータとの差分を取らない。MRTGでデータ取得した時点で、すでに「現在のトラフィック」となるような値に対して利用する。gaugeとは異なり、データを計測時間間隔で割ったものを使用したい場合に指定する |
注:MRTGのデフォルトは「前回の値?今回の値/計測時間間隔」を統計値として利用します。 |
取得データの設定
- 標準の機能
cfgmakerで作成した設定ファイルでは、Target行は以下のようになっています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この場合、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要求を出し、情報を収集します。つまり、以下のようにコマンドを実行して取得できるデータを利用しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この値は、該当のネットワークI/Fに対するトータルの受信/送信データ量です。MRTGは前回取得したデータと今回取得したデータの差分を取り、さらに時間当たりのデータ転送量に直したうえで、HTMLファイルを作成しています。
- SNMPのOID指定
MRTGの基本機能としては、前述のようにSNMPを利用して入出力トラフィック量(byte)を採取しますが、以下のようにSNMPのOIDを指定するような書式を利用することで、任意のSNMPデータをグラフ化できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
例えば、次の例では「インターフェイス番号1」における入力と出力のエラーカウントの統計を取ります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- 外部監視スクリプトの利用
MRTGは、SNMPで提供されないデータを監視することも可能です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記で指定する「データを取得するためのプログラム」は、以下の4行の出力を返すように作成します。
- 入力byte数
- 出力byte数
- 監視対象の稼働時間
- 監視対象のホスト名
「監視対象の稼働時間」と「監視対象のホスト名」は作成されるHTMLファイルの一部に利用されますが、この表示が必要ない場合は空行を返すようなプログラムでも問題ありません。
統計値の設定時の注意点
- データの性質に応じたグラフの作成
前述したように、MRTGのデフォルトではシステム起動後の総受信データ量および総送信データ量のようなカウンタ値を扱うため、以下のような処理をしてからグラフを作成します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
そのため、SNMPのOIDを指定する場合も外部スクリプトを使用する場合も、取得するデータによってはOptionsキーワードにgaugeまたはabsoluteを指定することを忘れないでください。
- データは必ず2つ指定
MRTGは必ず2つの値を1つのグラフ内に表示します。1つしかデータが必要ない場合であっても、もう1つデータを用意しなければなりません。また、3つ以上のデータをグラフ化したい場合は、別のグラフを作成する必要があります。
MRTGのグラフ化機能に不満があるなら、MRTGの後継とされるRRDtoolを利用してみましょう。このツールを利用すると、3つ以上のデータを重ねて1つのグラフに載せることもできます。rrdデータベースという独自のデータ保存形式を利用することで、パフォーマンスの向上も図られています。
閾値のチェック
ネットワーク機器を監視するといっても、常時データやグラフとにらめっこしているわけにはいきません。監視しているデータがある閾値を超えた際に、何らかの警告を発するようにすることが求められます。MRTGでは、監視対象のデータが閾値を超えた場合に、外部プログラムを呼び出して管理者に通知することが可能です。
以下に閾値チェックのための設定項目を示します。
- ThreshDir(グローバル)
ThreshDirには、MRTGの実行ユーザーが書き込み可能なディレクトリを指定します。後述するキーワード群で設定した閾値を超えた場合は、このディレクトリにmrtg.cfg.識別子.maxIのようなファイルが作成されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- ThreshMaxI/O、ThreshMinI/O
ThreshMaxIとThreshMaxOには、それぞれ第1パラメータ/第2パラメータの値として認められる最大値を指定します。パラメータがこの値を上回ったときは、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。
同様にThreshMinIとThreshMinOには、それぞれ第1パラメータ/第2パラメータの値として認められる最小値を指定します。パラメータがこの値を下回ると、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。
これらのキーワードには[識別子]を付加して記述します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
数値だけでなく、以下のように「%」を最後に付加した場合、MaxBytesで指定した値に対する百分率を閾値として指定できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- ThreshProgI/O、ThreshProgOKI/OKO
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.