MRTGによるサーバ監視(Linux編)


NET-SNMP > MRTG

続いて、MRTGでグラフ化しますが、これはRedHat標準のものを使いましたので、設定から始まります。こちらも、SNMPによるネットワークモニタリングで詳しく解説されているので、こちらを参考にしました。

■MRTGの設定

MRTGでは、統計をグラフ化したPNG形式の画像ファイルとそれを含むHTMLファイル、およびログが作成されます。合わせて、HTMLファイル用にMRTGのロゴ、MRTG用のconfigや制御用データ、を置くディレクトリが必要になります。これらを置くディレクトリは、結果をwebで見られるようにおやじのユーザディレクトリにすると同時に、ログ等は見せるものではないので別のディレクトりに配置することにしました。なお、3項のMRTGのアイコンはrpmでインストールすると/var/www/html配下にあるので、これをコピーします。

  1. HTMLファイル用: /home/oyaji/public_html/mrtg
  2. グラフ(png)用  : /home/oyaji/public_html/mrtg/images (MRTGの条件から、このディレクトリは1項配下にすること)
  3. MRTGロゴ(png)用: /home/oyaji/public_html/mrtg/icons (MRTGのアイコンはrpmでインストールすると/var/www/html配下にある)
  4. 制御用      : /usr/local/mrtg/data
  5. ログ用      : /usr/local/mrtg/logs
# mkdir /home/oyaji/public_html/mrtg
# mkdir /home/oyaji/public_html/mrtg/images
# mkdir /home/oyaji/public_html/mrtg/icons
# cp /var/www/html/mrtg/*.png /home/oyaji/public_html/mrtg/icons
# mkdir -p /usr/local/mrtg/data
# mkdir -p /usr/local/mrtg/logs
    |    └ count [ CGI設置用 ]/--+--・
次にMRTGの設定ファイルを作成しますが、MRTGにはcfgmakerというプログラムがあるので、これを使いベースとなる設定ファイル(mrtg.cfg)を作成します。
 /usr/local/mrtg/data配下に作成しました。
# /usr/bin/cfgmaker private@localhost > /usr/local/mrtg/data/mrtg.cfg

/usr/bin/cfgmaker コミュニティ名@エージェントのアドレス > 設定ファイルの出力先
   └ count [ CGI設置用 ]/--+--・
上記の操作により、こちらのようなmrtg.cfgファイルが作成されますので、これをベースに修正していきます。但し、ここで作成できるのはトラヒックの設定ファイルだけです。CPU使用率等は、別途、作成が必要です。コメント部分を除いて設定を変更した内容を示します。は変更、は追加、は削除したものです。

Target[localhost_2]: 2:private@localhost:
SetEnv[localhost_2]: MRTG_INT_IP="192.168.1.100" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_2]: 1250000
Title[localhost_2]: Traffic Analysis for 2 -- homeserver
PageTop[localhost_2]: <H1>Traffic Analysis for 2 -- homeserver</H1>
<TABLE>
<TR><TD>System:</TD> <TD>homeserver in Homesever</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Root &lt;root@localhost&gt;</TD></TR>
<TR><TD>Description:</TD><TD>eth0 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD></TD></TR>
<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
<TR><TD>Ip:</TD> <TD>192.168.1.100 (homeserver.aconus.com)</TD></TR>
</TABLE>

             ↓追加、変更、削除

# htmlファイルを置くディレクトリをHtmdirで指定(1項)
Htmldir: /home/oyaji/public_html/mrtg

# グラフ(pngファイル)を置くディレクトリをImagedirで指定(2項:1項配下にすること)
Imagedir: /home/oyaji/public_html/mrtg/images

# mrtgのロゴを置くディレクトリをIconDirでHtmldirからの相対アドレスで指定(3項)
IconDir: icons

# mrtgのログを置くディレクトリをLogdirで指定(5項)
Logdir: /usr/local/mrtg/logs

# ブラウザのリフレッシュ間隔(5分:ブラウザで表示したままにしておくと指定間隔でリフレッシュされる)
Refresh: 300

# デフォルトではヨーロッパ言語になり文字化けするので日本語表示を指定
Language: eucjp


# [ ]内の名称でhtmlファイルが作成される。関連項目は全て同一名称で設定(以下同様)
# Targetで統計データの対象を指定
Target[traffic]: 2:private@localhost:

#SetEnv[localhost_2]: MRTG_INT_IP="192.168.1.100" MRTG_INT_DESCR="eth0"

# データがとりうる最大値を指定。(100BASE-TXの最大値。100,000,000bps/8=12,500,000Byte)
MaxBytes[traffic]: 12500000

# グラフの左が過去(growright)になるようにし、デバイス名等の情報を出力しない(noinfo)ように設定。
Options[traffic]: growright, noinfo

Title[traffic]: Traffic Analysis
PageTop[traffic]: <H1>Traffic Analysis</H1>

# 余計なものは表示しない。
#<TABLE>
#<TR><TD>System:</TD> <TD>homeserver in Homesever</TD></TR>
#<TR><TD>Maintainer:</TD> <TD>Root &lt;root@localhost&gt;</TD></TR>
#<TR><TD>Description:</TD><TD>eth0 </TD></TR>
#<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
#<TR><TD>ifName:</TD> <TD></TD></TR>
#<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
#<TR><TD>Ip:</TD> <TD>192.168.1.100 (homeserver.aconus.com)</TD></TR>
#</TABLE>


■その他の情報取得のための追加設定

cfgmakerでは、トラヒックを表示する設定しかできない。追加でCPU使用率、空きメモリ用、ディスク使用率をとることにしました。
それぞれ、cfgファイルを作成することもできますが、分ける理由もないのでmrtg.cfgに各項目毎にTarget以下を追加記述する方法で作成しました。
グラフ化したい情報は、Target行で以下のようにOIDを指定します。

Target[統計情報名]: OID1&OID2:コミュニティ名@SNMPエージェントのIPアドレス

  1. 統計情報名: Target以下のオプション等、1つの情報は全て同じ名称にすること。この名称は、HTMLファイルのファイル名になる。
  2. OID1/2   : 対象となる情報のOIDを2つ指定する。グラフではOID1が受信側とみなされデータが緑色で,OID2が送信側として青色で表示される。
             OIDについては、ここ以外の項目を測定したければSNMPによるネットワークモニタリング等に書かれているので参照のこと。

◆CPU関係の測定


◆空きメモリ容量の測定

ここでは、物理メモリとスワップメモリの空き容量を表示することにした。ここでは、MaxBytes1/2にメモリの最大値を設定するが、下記のようにsnmpwalk コマンドを使って値を調査し設定する。 

# /usr/local/bin/snmpwalk -v 1 localhost -c private .1.3.6.1.4.1.2021.4.5
ucd-snmp-mib::memTotalReal.0 = INTEGER: 255560
# /usr/local/bin/snmpwalk -v 1 localhost -c private .1.3.6.1.4.1.2021.4.3
ucd-snmp-mib::memTotalSwap.0 = INTEGER: 1052248

 

### Memory Free ###
#
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@localhost
MaxBytes1[mem]: 255560 #ODI1データの最大値(物理メモリ *)
MaxBytes2[mem]: 1052248 #ODI2データの最大値(スワップメモリ *)
Unscaled[mem]: dwmy #データに合わせて拡大縮小しない
Options[mem]: gauge, absolute, growright, noinfo
#gauge:データの値の差をとらない(容量のためそのまま利用)
#gauge同様データの値の差をとらず、計測時間間隔で割った値
#growright:グラフの横軸(時間)を左が過去になるよう指定
#noinfo:HTMLの先頭にデバイス名等を表示しない
YLegend[mem]: Mem Free(Bytes) #Y軸の軸の名前(ラベル)を指定
ShortLegend[mem]: Bytes #Y軸の軸の単位(ラベル)を指定
kilo[mem]: 1024 #キロの単位へ切替。容量は1キロ=1024で計算される。
kMG[mem]: k,M,G,T,P #単位をk(キロ)からに変更
LegendI[mem]: Real #OID1(受信側)のラベルを指定
LegendO[mem]: Swap #OID2(送信側)のラベルを指定
Legend1[mem]: 空き物理メモリ[MBytes] #OID1(受信側)のグラフ名(ラベル)を指定
Legend2[mem]: 空きスワップメモリ[MBytes] #OID2(送信側)のグラフ名(ラベル)を指定
Title[mem]: Memory Free #HTMLのタイトル
PageTop[mem]: <H1>Memory Free</H1> #HTMLのページ上部に表示される内容

 

◆ディスク使用率の測定

ディスク使用率のMIBデータはデフォルトの snmpd.conf の設定では / しか設定されていない。他のパーティションのデータを取得するならば、snmpd.conf に設定が必要である。MRTGでは2系統表示が必須なので、同じ物を設定した。
### Disk Used ###
#
Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:private@localhost
MaxBytes[disk]: 100 #データの最大値(100%)
Unscaled[disk]: dwmy #データに合わせて拡大縮小しない(100%まで縦軸を表示)
Options[disk]: gauge, absolute, growright, nopercent, noinfo
#gauge:データの値の差をとらない(取得情報は既に平均値)
#gauge同様データの値の差をとらず、計測時間間隔で割った値
#growright:グラフの横軸(時間)を左が過去になるよう指定
#noinfo:HTMLの先頭にデバイス名等を表示しない
#nopercent:パーセント表示しない(取得情報は既に%値)
YLegend[disk]: Disk Used(%) #Y軸の軸の名前(ラベル)を指定
ShortLegend[disk]: (%) #Y軸の軸の単位(ラベル)を指定
LegendI[disk]: / Disk used #OID1(受信側)のラベルを指定
LegendO[disk]: / Disk Used #OID2(送信側)のラベルを指定
Legend1[disk]: / Disk used #OID1(受信側)のグラフ名(ラベル)を指定
Legend2[disk]: / Disk used #OID2(送信側)のグラフ名(ラベル)を指定
Title[disk]: Disk Used #HTMLのタイトル
PageTop[disk]: <H1>Disk Used</H1> #HTMLのページ上部に表示される内容

 

■MRTGの起動

以上で設定できたので、正常に動作するか確認します。以下のようにコマンドを入力してmrtgを起動すると、htmlファイルができあがり、 logファイルにデータが収集されているはずです。正常に動作していても下記のようなWarningがでますが、これは、前回データが無いためのもので、3回目からでなくなりますので、少し時間をおきながら、3回実行してみます。logファイルにデータが収集されない、あるいは0または1等が収集される場合は、うまく設定ができていません。Warningメッセージを確認し、設定内容を見直しましょう。

# /usr/bin/mrtg /usr/local/mrtg/data/mrtg.cfg
Rateup WARNING: /usr/bin/rateup could not read the primary log file for localhost_2
Rateup WARNING: /usr/bin/rateup The backup log file for localhost_2 was invalid as well
Rateup WARNING: /usr/bin/rateup Can't remove localhost_2.old updating log file
Rateup WARNING: /usr/bin/rateup Can't rename localhost_2.log to localhost_2.old updating log file
# /usr/bin/mrtg /usr/local/mrtg/data/mrtg.cfg
Rateup WARNING: /usr/bin/rateup Can't remove localhost_2.old updating log file
# /usr/bin/mrtg /usr/local/mrtg/data/mrtg.cfg
#


問題なく動作することが確認できたら、cronでMRTGを周期的(5分毎)に起動します。cronは、Redhatではデフォルトで起動していますので、/etc/crontabに以下のように追加し、crondを再起動すれば5分毎にグラフが更新されます。

0-59/5 * * * * root /usr/bin/mrtg /usr/local/mrtg/data/mrtg.cfg

Top Pageへ