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

スポンサーリンク

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

今日では滅多に使われなくなりましたが、性能検証などの用途で、トラフィックを急ぎで計測したい時に使用する人を稀に見ます。MTRGはMulti Router Traffic Grapherの略称で、名前の通りネットワーク機器のトラフィック監視目的に作られたツールです。サーバ機器を監視する事もできますが、サーバの監視にはあまり向いていません。

MRTG インストール

MRTGは公開リポジトリにも存在しますので、yumコマンドやdnfコマンドでインストールが可能です。

dnf install mrtg

MRTGによるネットワーク機器の監視

cfgmaker – 設定ファイルの雛形

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

cfgmaker <community>@<hostname>

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

cfgmaker public@192.168.1.1 > /tmp/mrtg.cfg

設定ファイルの雛形のうち、以下のハイライトされた部分以外を削除します。

# vi /tmp/mrtg.cfg

  <omitted>

### Interface 1 >> Descr: 'GigaEthernet0' | Name: 'GigaEthernet0' | Ip: 'No Ip' | Eth: '00-60-b9-e1-03-70' ###

Target[192.168.1.1_1]: 1:public@192.168.1.1:
SetEnv[192.168.1.1_1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="GigaEthernet0"
MaxBytes[192.168.1.1_1]: 12500000
Title[192.168.1.1_1]: Traffic Analysis for 1 -- nec-ix01
PageTop[192.168.1.1_1]: <h1>Traffic Analysis for 1 -- nec-ix01</h1>
    <div id="sysdetails">
      <table>

  <omitted>

### Interface 2 >> Descr: 'GigaEthernet1' | Name: 'GigaEthernet1' | Ip: 'No Ip' | Eth: '00-60-b9-e1-03-f0' ###

Target[192.168.1.1_2]: 2:public@192.168.1.1:
SetEnv[192.168.1.1_2]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="GigaEthernet1"
MaxBytes[192.168.1.1_2]: 125000000
Title[192.168.1.1_2]: Traffic Analysis for 2 -- nec-ix01
PageTop[192.168.1.1_2]: <h1>Traffic Analysis for 2 -- nec-ix01</h1>
    <div id="sysdetails">
      <table>

  <omitted>

もし正規表現を用いて機械的に編集するならば、以下のような操作になります。

mv /tmp/mrtg.cfg /tmp/mrtg.cfg.old
cat /tmp/mrtg.cfg.old | grep -E "^Target|^SetEnv|^MaxBytes|^Title|^PageTop" > /tmp/mrtg.cfg 

/etc/mrtg/mrtg.cfg – 設定ファイルの作成

MRTGの設定ファイルは、/etc/mrtg/mrtg.cfgに記載します。cfgmakerで作成されたファイルのハイライトされた部分を、mrtg.cfgの末尾に加筆します。

cat /tmp/mrtg.cfg >> /etc/mrtg/mrtg.cfg

/etc/cron.d/mrtg – 監視開始

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

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

[root@centos82 ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.1.1_1
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.1.1_1 was invalid as well
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.1.1_1.log to 192.168.1.1_1.old updating log file
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.1.1_2

  <omitted>

2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 192.168.1.1_467
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup The backup log file for 192.168.1.1_467 was invalid as well
2020-09-06 00:58:35, Rateup WARNING: /usr/bin/rateup Can't rename 192.168.1.1_467.log to 192.168.1.1_467.old updating log file
[root@centos82 ~]# 
[root@centos82 ~]# 
[root@centos82 ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
[root@centos82 ~]# 

前述の「/usr/bin/mrtg /etc/mrtg/mrtg.cfg」コマンドを定期的に実行すれば、自動的に監視データが蓄積されます。このコマンドに対してさらに多重実行排除などの考慮を加えて定期実行する例は以下の通りです。/etc/cron.d/mrtgに以下のようなファイルを作成します。

cat << EOF > /etc/cron.d/mrtg
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
EOF

apacheによる公開

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

/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

apache httpdをインストールし、起動します。

dnf install httpd
systemctl enable httpd.service --now

デフォルトではローカルホスト以外からのアクセスを拒否するようになっていますので、apacheの設定を適宜変更して、ローカルホスト以外からのアクセスを許容するようにします。

# vi /etc/httpd/conf.d/mrtg.conf 

Alias /mrtg /var/www/mrtg

<Location /mrtg>
    Require local
    Require ip 192.168.0.0/16
    # Require host example.org
</Location>

再起動で設定を反映させます。

systemctl restart httpd.service 

以下URLにブラウザでアクセス可能な事を確認します。

 http://<ip address>/mrtg/

MRTG 初期状態

監視直後は何もデータが溜まっていませんが、8時間ほど経過すると以下のような表示になります。

MRTG 8時間経過後

MRTGの表示改善

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

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

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

書式説明

MRTGの設定ファイルは以下のような書式で表されます。

keyword[id] value

PageTop, YLegendなどのキーワードを指定すると、タイトルや縦軸の表示を整える事ができます。各keywordの説明は以下の通りです。

keyword 説明
Target 監視対象のOID, コミュニティ名, ホスト名を指定します。
Title グラフの上部に表示されるグラフのタイトルです。

PageTop 各ページのトップに表示されるタイトルです。h1タグなどで囲み大きめの文字で表示すると良いでしょう。

Options グラフ表示に関するオプションです。gauge, absolute, growright, noinfo, bitsなどが指定できます。

Timezone 最終更新時刻を表示する際のタイムゾーンです。Timezoneの指定を省略した場合は、UTCで表示されます。

MaxBytes 表示する値の上限です。この値を上回る値を取得した場合は、何らかの異常があったものと見なし値を破棄します。

ShortLegend Max, Average, Current欄に表示される値の単位です。

YLegend 縦軸の単位です。

LegendI 1つ目(緑線)の項目の説明です。

LegendO 2つ目(青線)の項目の説明です。

Legend1 1つ目(緑線)の項目の詳細説明です。分かりづらいですが、詳細説明は画面下の方に表示されています。

Legend2 2つ目(青線)の項目の詳細説明です。分かりづらいですが、詳細説明は画面下の方に表示されています。

キーワード「Target」のみ書式がやや複雑であるため補足説明をします。2はinterface番号, publicはコミュニティ名,192.168.1.1はホスト名になります。

Target[192.168.1.1_2]: 2:public@192.168.1.1:

改善1 グラフタイトル・縦軸・横軸

Title, PageTopを変更します。さらに、Timezone, YLegend, LegendI, LegendO, Legend1, Legend2を加筆します。

# vi /etc/mrtg/mrtg.cfg

Target[192.168.1.1_1]: 1:public@192.168.1.1:
SetEnv[192.168.1.1_1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="GigaEthernet0"
MaxBytes[192.168.1.1_1]: 12500000
Title[192.168.1.1_1]: NEC IX2105 GigaEthernet0.0
PageTop[192.168.1.1_1]: <h1>NEC IX2105 GigaEthernet0.0</h1>
Timezone[192.168.1.1_1]: Japan
YLegend[192.168.1.1_1]: Byte per sec
LegendI[192.168.1.1_1]: ingress packets
LegendO[192.168.1.1_1]: egress packets
Legend1[192.168.1.1_1]: ingress packets
Legend2[192.168.1.1_1]: egress packets

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

詳細画面は/usr/bin/mrtgが定期実行されたタイミングで更新されます。もし待ちきれない場合は/usr/bin/mrtgを手作業で実行しても差し支えございません。

/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

index.htmlにアクセスし、表示形式が変わった事を確認します。グラフタイトルが「NEC IX2105 GigaEthernet0.0」になっている事が分かります。

ここでグラフ部分をクリックすると詳細画面へと遷移できます。

MRTG グラフタイトルの追加

障害画面で横軸・縦軸などの値が反映されている事を確認します。

MRTG 縦軸横軸の名前変更

改善2 右側に新しいデータを

Optionsにgrowrightを指定すると、右側に新しいデータが表示されるようになります。

# vi /etc/mrtg/mrtg.cfg

Target[192.168.1.1_1]: 1:public@192.168.1.1:
SetEnv[192.168.1.1_1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="GigaEthernet0"
MaxBytes[192.168.1.1_1]: 12500000
Title[192.168.1.1_1]: NEC IX2105 GigaEthernet0.0
PageTop[192.168.1.1_1]: <h1>NEC IX2105 GigaEthernet0.0</h1>
Options[192.168.1.1_1]: growright
Timezone[192.168.1.1_1]: Japan
YLegend[192.168.1.1_1]: Byte per sec
LegendI[192.168.1.1_1]: ingress packets
LegendO[192.168.1.1_1]: egress packets
Legend1[192.168.1.1_1]: ingress packets
Legend2[192.168.1.1_1]: egress packets

設定を反映させます。

/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

右側に新しいデータが表示されている事を確認します。

MRTG 右側に新しいデータを

改善3 bps表示

Optionsにbitsを指定すると、Byteではなくbitで表示されるようになります。併せてYLegend(縦軸名)も「Byte per sec」から「bps」に変更しておきましょう。

# vi /etc/mrtg/mrtg.cfg

Target[192.168.1.1_1]: 1:public@192.168.1.1:
SetEnv[192.168.1.1_1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="GigaEthernet0"
MaxBytes[192.168.1.1_1]: 12500000
Title[192.168.1.1_1]: NEC IX2105 GigaEthernet0.0
PageTop[192.168.1.1_1]: <h1>NEC IX2105 GigaEthernet0.0</h1>
Options[192.168.1.1_1]: growright, bits
Timezone[192.168.1.1_1]: Japan
YLegend[192.168.1.1_1]: bps
LegendI[192.168.1.1_1]: ingress packets
LegendO[192.168.1.1_1]: egress packets
Legend1[192.168.1.1_1]: ingress packets
Legend2[192.168.1.1_1]: egress packets

設定を反映させます。

/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

bps表示に変わった事を確認します。変更済「NEC IX2105 GigaEthernet0.0」と変更未実施「Traffic Analysis for 2 — nec-ix01」を比較すると、ほぼ8倍の差がある事が分かります。

MRTG bps表示

MRTGによるサーバ機器の監視

事前準備

MRTGはトラフィック以外の監視もできます。当然、「トラフィック監視を簡単にできるツール」が設計思想なので、トラフィック監視以外はMTRGの苦手分野であり、運用上の無理が発生するのはご理解ください。「使い捨て」用途として、MTRGでload averageなどを監視したい方向けに設定方法を述べます。

snmpdに応答するサーバを準備し、設定ファイルの雛形を作成します。

cfgmaker public@192.168.63.81 > /tmp/mrtg.cfg.old 
cat /tmp/mrtg.cfg.old | grep -E "^Target|^SetEnv|^MaxBytes|^Title|^PageTop" > /tmp/mrtg.cfg 

target指定方法

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

Target[192.168.63.81_2]: 2:public@192.168.63.81:

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

Target[192.168.63.81.load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.63.81:

options指定方法

optionsはグラフ描画に関するキーワードです。主なキーワードは以下の通りです。

keyword 説明
growright 横軸について右に行くほど時間が進みます(デフォルトは左に行くほど時間が進みます)
noinfo 画面上にホスト名などの情報を表示させないようにします。

bits 取得した値を8倍にして表示します。Byte単位からbit単位に変換する時に使用します。

gauge 差分ではなく絶対値で表示したい時に使用します。ロードアベレージやディスク使用率に対して使用します。

トラフィック以外を監視する場合は、取得する値を差分で評価すべきか、絶対値で評価すべきかを考える必要があります。トラフィックの監視はトラフィックカウンタを元に行われます。トラフィックカウンタは通信量の積算値ですので、トラフィックカウンタの増分を時間で割った値が通信速度になります。MRTGはトラフィックを監視するために作成されたツールなので、デフォルト設定が差分での評価です。もし、ロードアベレージのように絶対値で評価したい項目ならば、gaugeというオプションを指定して下さい。

ロードアベレージを監視する場合のoptionsの設定例は以下のようになります。

Options[192.168.63.81.load]: gauge, growright, noinfo

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

以下のような設定をmrtg.cfgに追記するとロードアベレージの監視が可能になります。

# vi /etc/mrtg/mrtg.cfg

Target[192.168.63.81.load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.63.81:
SetEnv[192.168.63.81.load]: MRTG_INT_IP="192.168.63.81" MRTG_INT_DESCR="ens33"
Title[192.168.63.81.load]: load average -- centos81
PageTop[192.168.63.81.load]: <h1>load average -- centos81</h1>
Options[192.168.63.81.load]: gauge, growright, noinfo
MaxBytes[192.168.63.81.load]: 10000
ShortLegend[192.168.63.81.load]: pt
YLegend[192.168.63.81.load]: load average ( x 100 )
LegendI[192.168.63.81.load]: 1 minute load average
LegendO[192.168.63.81.load]: 5 minute load average
Legend1[192.168.63.81.load]: 1 minute load average
Legend2[192.168.63.81.load]: 5 minute load average

設定を反映させます。

/usr/bin/indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

しばらく待った後(10分以上)、ロードアベレージが監視されている事をブラウザで確認します。

MRTGによるロードアベレージ監視01

MRTGによるロードアベレージ監視02

タイトルとURLをコピーしました