【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


最終回 MRTGによるサーバ監視システムの構築


アイティーブースト(http://www.itboost.co.jp/
2003/5/17

MRTGの設定ファイル

 ここまででMRTGが動作するようになったはずですが、よりMRTGを使いこなすために、ここで設定ファイルの主要な項目を紹介します。

主なグローバル設定項目

 多くの設定項目が「設定項目名[識別子]」のように表記され、「識別子」で表される情報ごとにMRTGの設定項目を定義する必要があります。この識別子は、MRTGによって作成される一連のファイル群(識別子「.html」「.log」など)のファイル名に利用されます。前述したように、cfgmakerを利用した場合は「監視対象ホスト_I/F番号」が識別子として利用されています。

 以下の4つの項目はMRTGの設定ファイルに必須の項目なので、必ず記述してください。

Target[識別子] 監視対象となるイーサネットポートの「ポート番号コミュニティ名アドレス
MaxBytes[識別子] そのポートの転送許容量(byte表示)
Title[識別子] MRTGで出力されるページにおいて<TITLE>〜</TITLE>の間に入る文字列
PageTop[識別子] MRTGで出力されるHTMLページにおいて、グラフの前に表示される文字列

 設定ファイルに複数の識別子を設定することで、複数の異なるデータを扱うことが可能です。また、識別子には特殊文字を指定できます。例えば、「_」を指定すると、各設定値に対するデフォルト値を設定することになります。そのため、以下のように記述すれば、すっきりとした設定ファイルを作成可能です。

MaxBytes[_]: 12500000
Title[_]: MRTG
PageTop[_]: <H1>Traffic Analysis</H1><HR>
Options[_]: growright,bits

Target[router1]: 2:public@192.168.0.1
Target[router2]: 2:public@192.168.1.2
Target[router3]: 2:public@192.168.2.2

 また、「^」という特殊文字も利用可能です。前述の「_」を指定した場合、以下のように同じキーワードを使うと設定が完全に上書きされます。

Options[_]: growright
(略)
Options[xxx]: bits

 一方、「^」を指定した場合は、同じキーワードを利用しても設定を追記することになります。

Options[^]: growright
(略)
Options[xxx]: bits

グラフ描画の制御

YLegend/ShortLegend/LegendI/LegendO

 MRTGを利用するとトラフィック以外のさまざまな情報もグラフ化できますが、トラフィック以外の統計情報を記録する場合は取得するデータに応じて、グラフに付随する凡例やデータの単位などを書き換えたいことがあります。その際に設定ファイル中に指定できるキーワードを示しておきます。

キーワード
説明
YLegend[識別子] Y軸のラベルを定義する
ShortLegend[識別子] 最大値、平均値、現在値の単位表示に利用する
LegendI 第1パラメータの凡例を示す文字列
LegendO 第2パラメータの凡例を示す文字列

YLegend
LegendI
ShortLegend
LegendO

Options

 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
IF-MIB::ifInOctets.2 = Counter32: 466565873
# snmpget -v 1 -c public 192.168.0.2 1.3.6.1.2.1.2.2.1.16.2
IF-MIB::ifOutOctets.2 = Counter32: 3456394306

 この値は、該当のネットワークI/Fに対するトータルの受信/送信データ量です。MRTGは前回取得したデータと今回取得したデータの差分を取り、さらに時間当たりのデータ転送量に直したうえで、HTMLファイルを作成しています。

SNMPのOID指定

 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行の出力を返すように作成します。

  • 入力byte数
  • 出力byte数
  • 監視対象の稼働時間
  • 監視対象のホスト名

 「監視対象の稼働時間」と「監視対象のホスト名」は作成されるHTMLファイルの一部に利用されますが、この表示が必要ない場合は空行を返すようなプログラムでも問題ありません。

プログラムの4行目の出力が利用される部分
プログラムの3行目の出力が利用される部分

統計値の設定時の注意点

データの性質に応じたグラフの作成

 前述したように、MRTGのデフォルトではシステム起動後の総受信データ量および総送信データ量のようなカウンタ値を扱うため、以下のような処理をしてからグラフを作成します。

グラフにプロットする値=前回取得した値−今回取得した値/データ取得間隔時間

 そのため、SNMPのOIDを指定する場合も外部スクリプトを使用する場合も、取得するデータによってはOptionsキーワードにgaugeまたはabsoluteを指定することを忘れないでください。

データは必ず2つ指定

 MRTGは必ず2つの値を1つのグラフ内に表示します。1つしかデータが必要ない場合であっても、もう1つデータを用意しなければなりません。また、3つ以上のデータをグラフ化したい場合は、別のグラフを作成する必要があります。

 MRTGのグラフ化機能に不満があるなら、MRTGの後継とされるRRDtoolを利用してみましょう。このツールを利用すると、3つ以上のデータを重ねて1つのグラフに載せることもできます。rrdデータベースという独自のデータ保存形式を利用することで、パフォーマンスの向上も図られています。

RRDtool
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

閾値のチェック

 ネットワーク機器を監視するといっても、常時データやグラフとにらめっこしているわけにはいきません。監視しているデータがある閾値を超えた際に、何らかの警告を発するようにすることが求められます。MRTGでは、監視対象のデータが閾値を超えた場合に、外部プログラムを呼び出して管理者に通知することが可能です。

 以下に閾値チェックのための設定項目を示します。

ThreshDir(グローバル)

 ThreshDirには、MRTGの実行ユーザーが書き込み可能なディレクトリを指定します。後述するキーワード群で設定した閾値を超えた場合は、このディレクトリにmrtg.cfg.識別子.maxIのようなファイルが作成されます。

ThreshDir: /usr/local/apache/htdocs/mrtg/threshdir

ThreshMaxI/O、ThreshMinI/O

 ThreshMaxIとThreshMaxOには、それぞれ第1パラメータ/第2パラメータの値として認められる最大値を指定します。パラメータがこの値を上回ったときは、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。

 同様にThreshMinIとThreshMinOには、それぞれ第1パラメータ/第2パラメータの値として認められる最小値を指定します。パラメータがこの値を下回ると、それぞれThreshProgI/ThreshProgOで指定したプログラムが実行されます。

 これらのキーワードには[識別子]を付加して記述します。

ThreshMaxI[識別子]: 10

 数値だけでなく、以下のように「%」を最後に付加した場合、MaxBytesで指定した値に対する百分率を閾値として指定できます。

MaxBytes[識別子]: 1000
ThreshMaxI[識別子]: 10%
注:この場合、値としては「100」が閾値となります。

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{'変数名'}」で参照できます。

2/3

Index
Linux管理者への道
 最終回 MRTGによるサーバ監視システムの構築
  Page 1
MRTGとは
 MRTGの導入
 設定ファイルの作成
 MRTGの動作確認
 MRTGを定期実行する設定
  Page 2
MRTGの設定ファイル
 主なグローバル設定項目
 グラフ描画の制御
 取得データの設定
 統計値の設定時の注意点
 閾値のチェック
  Page 3
MRTGを利用した各種統計値の監視
 監視システムの前提条件
 監視エージェント側の設定
 SNMP Manager側の設定
 インデックスファイルの作成

連載 Linux管理者への道


 Linux Squareフォーラム Linux/システム学習関連記事
連載:Windowsユーザーに教えるLinuxの常識(全12回)
Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授!
連載:LFSで作って学ぶLinuxの仕組み(全4回)
管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する
連載:Linux管理者への道(全8回)
「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

ホワイトペーパーTechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)



- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?