ネットワークトラフィック監視ツール(NET-SNMP+MRTG)の導入

ここでは、
ネットワーク負荷と、
CPU使用率、
空きメモリ量、
ディスク使用率の
統計をブラウザから監視できるようにします。


※ なお、トラフィック監視ツールの導入には
Webサーバーが構築済みである事が前提となります。

NET-SNMPインストールと設定


# apt-get install net-snmp ← net-snmpインストール
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
net-snmp
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 3 個
2092kB のアーカイブを取得する必要があります。
展開後に 7059kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/plus net-snmp 5.2.1.2-0vl1 [2092kB]
2092kB を 5s 秒で取得しました (401kB/s)
変更を適用しています...
準備中...           ###########################################[100%]
1:net-snmp        ########################################### [100%]
完了


NET-SNMP設定

# vi /etc/snmp/snmpd.conf ← NET-SNMP設定ファイル編集

 i キー(入力モード)

#     sec.name  source     community
#com2sec notConfigUser  default public ← コメントアウト
com2sec local localhost private ← 追加
com2sec mynetwork 192.168.11.0/24 public ← 追加(ネットワークアドレスは各自の環境に合わせてください)

#     groupName     securityModel securityName
#group   notConfigGroup v1c     notConfigUser ← コメントアウト
#group   notConfigGroup v2c     notConfigUser ← コメントアウト
group MyROGroup v1 mynetwork ← 追加
group MyROGroup v2c mynetwork ← 追加

# Make at least  snmpwalk -v 1  ocalhost -c public system fast again.
#     name     incl/excl    subtree     mask(optional)
#view   systemview   included   .1.3.6.1.2.1.1 ← コメントアウト
#view   systemview   included   .1.3.6.1.2.1.25.1.1 ← コメントアウト
view all included .1 80 ← 追加

# Finally, grant the group read-only access to the systemview view.

#     group     context sec.model sec.level prefix read  write notif
#access notConfigGroup ""     any     noauth  exact  systemview none none ← コメントアウト
access MyROGroup "" any noauth exact all none none ← 追加
access MyRWGroup "" any noauth exact all all none ← 追加

# Check the / partition and make sure it contains at least 10 megs.

#disk / 10000
disk / 10000 ← 追加(ディスク使用率表示設定)

編集したら Esc キー(コマンドモード) :wqで保存

NET-SNMP自動起動設定


# /etc/init.d/snmpd start ← NET-SNMP起動
snmpdを起動中:            [ OK ]


# chkconfig snmpd on ← 自動起動設定

# chkconfig --list snmpd ← 自動起動設定の確認
snmpd     0:off  1:off  2:off  3:on  4:on  5:on  6:off ← 3〜5がonになっているか確認

MRTGのインストール

mrtgにはperl、zlib、libpng、gd、zlib-devel、libpng-devel、gd-develが必要になるので必ずインストールしておきます。


最初に、下記コマンドで必要なパッケージがインストールされているかチェックします。

# rpm -aq | grep zlib ← パッケージ名

入っていない場合は下記コマンドでインストールしてください。
※ Yosiの場合、zlib-devel、libpng-devel、gd-develが入っていませんでした。

# apt-get install zlib-devel ← パッケージ名


MRTGをインストール
※ 最新のバージョンはこちらで確認してください。 → (MRTG)
# wget http://oss.oetiker.ch/mrtg/pub/mrtg-2.15.1.tar.gz ← ダウンロード
--20:04:34--  http://oss.oetiker.ch/mrtg/pub/mrtg-2.15.1.tar.gz
           => `mrtg-2.15.1.tar.gz'
oss.oetiker.ch をDNSに問いあわせています... 213.144.137.220
oss.oetiker.ch[213.144.137.220]:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1,069,188 [application/x-tar]

100%[====================================>] 1,069,188    212.73K/s    ETA 00:00

20:04:40 (180.66 KB/s) - `mrtg-2.15.1.tar.gz' を保存しました [1069188/1069188]
# tar xvfz mrtg-2.15.1.tar.gz ← 解凍

# cd mrtg-2.15.1/ ← 移動

# ./configure

 〜省略〜
----------------------------------------------------------------
Config is DONE!
Type 'make' to compile the software


    ... that wishlist mentioned above does really exist. So if
you feel like showing your appreciation for MRTG, this is the
place to go. I just love CDs and DVDs

               -- Tobi Oetiker <oetiker@ee.ethz.ch>
----------------------------------------------------------------

これが出ればOKです。


# make
gcc -DGFORM_GD=gdImagePng -g -O2 -Wall -Wpointer-arith -Wcast-align -Wmissing-declarations -Wnested-externs -Winline -W -DHAVE_CONFIG_H -c ./src/rateup.c -o bin/rateup.o
LD_RUN_PATH= gcc bin/rateup.o -o bin/rateup -Wl,-Bstatic -lgd -lpng -lz -Wl,-Bdynamic -lm
/usr/bin/perl -0777 -p -i~ -e 's@^#!\s*/\S*perl@#! /usr/bin/perl@' ./bin/cfgmaker ./bin/indexmaker ./bin/mrtg
/usr/bin/perl -0777 -p -i~ -e 's@GRAPHFMT="...";@GRAPHFMT="png";@' ./bin/mrtg ./bin/indexmaker

# make install ← インストール

MRTGの設定ファイル作成


# mkdir /usr/local/mrtg-2/cfg ← configファイル用のディレクトリを作成

MRTG設定ファイル作成


# /usr/local/mrtg-2/bin/cfgmaker --ifref=descr --ifdesc=descr public@192.168.11.2 > /usr/local/mrtg-2/cfg/mrtg.cfg ← 実際は1行です(赤字の部分はサーバーのIPアドレスを指定)

--base: Get Device Info on public@192.168.11.2:
--base: Vendor Id:
--base: Populating confcache
--coca: populate confcache public@192.168.11.2:
--coca: store in confcache public@192.168.11.2_ Descr lo --> 1
--coca: store in confcache public@192.168.11.2_ Descr eth0 --> 2
--coca: store in confcache public@192.168.11.2_ Type 24 --> 1
--coca: store in confcache public@192.168.11.2_ Type 6 --> 2
--coca: store in confcache public@192.168.11.2_ Ip 127.0.0.1 --> 1
--coca: store in confcache public@192.168.11.2_ Ip 192.168.11.2 --> 2
--coca: store in confcache public@192.168.11.2_ Eth --> 1
--coca: store in confcache public@192.168.11.2_ Eth 00-0d-87-e2-c4-88 --> 2
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
--base: Walking ifMtu
--base: Walking ifSpeed

MRTGの設定




まず最初にメモリのMax値を調べる

# free ← メモリの値を確認
        合計    使用済    空き領域    共有領域    バッファ   キャッシュ
Mem:   514472    490392      24080         0     86584    179892
       ↑物理メモリMax値
-/+ バッファ:       223916      290556
Swap:  1052216     16172     1036044
       ↑スワップメモリMax値

※ 物理メモリMax値と、スワップメモリMax値を、紙等に記載しておく


# vi /usr/local/mrtg-2/cfg/mrtg.cfg ← 設定ファイルの編集
 i キー(入力モード)

### Global Config Options

# for UNIX
# WorkDir: /home/http/mrtg
WorkDir: /home/httpd/html/mrtg ← 追記

### Global Defaults

# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
Options[_]: growright, noinfo ← 追記(グラフの推移方向を左→右にする)

EnableIPv6: no

Language:eucjp ← 追記(日本語化)

### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '192.168.11.2' | Eth: '00-0d-87-e2-c4-88' ###

下記の赤色の部分を変更or削除します。

※ サーバーでルータ構築した場合はeth0とeth1の両方があるので、同じ要領で変更して下さい。

変更前

Target[192.168.11.2_eth0]: \eth0:public@192.168.11.2:
SetEnv[192.168.11.2_eth0]: MRTG_INT_IP="192.168.11.2" MRTG_INT_DESCR="eth0"
MaxBytes[192.168.11.2_eth0]: 12500000
Title[192.168.11.2_eth0]: eth0 -- xxxxxx.server
PageTop[192.168.11.2_eth0]: <h1>eth0 -- xxxxxx.server</h1>

変更後
Target[eth0]: \eth0:public@192.168.11.2: ←192.168.11.2_を削除
SetEnv[eth0]: MRTG_INT_IP="192.168.11.2" MRTG_INT_DESCR="eth0" ←192.168.11.2_を削除
MaxBytes[eth0]: 12500000 ←192.168.11.2_を削除
Title[eth0]: eth0 トラフィック ← トラフィックに変更
PageTop[eth0]: <h1> eth0 トラフィック</h1> ← トラフィックに変更

※以降の行を、全て削除

ここから→ 
<div id="sysdetails">
<table>

    〜省略〜

   </table>
ここまで→ </div>


CPU使用率、空きメモリ量、ディスク使用率の表示設定を追加

下記を追記してください


### CPU Load Average ###
Target[cpu]: .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.11.2 ← サーバーのIPアドレス
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright, noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]: 5分間平均(%)
Title[cpu]: CPU使用率
PageTop[cpu]: <H1>CPU使用率</H1>

### Memory Free ####
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.11.2 ← サーバーのIPアドレス
MaxBytes1[mem]: 514472 ← 先ほど確認した物理メモリMAX値を指定する
MaxBytes2[mem]: 1052216 ← 先ほど確認したスワップメモリMAX値を指定する
Unscaled[mem]: dwmy
Options[mem]: gauge, absolute, growright, noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: 空き物理メモリ[MBytes]
Legend2[mem]: 空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量
PageTop[mem]: <H1>空きメモリ量</H1>

### 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:public@192.168.11.2 ← サーバーのIPアドレス
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute, growright, nopercent, noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: / Disk Used
Legend1[disk]: / Disk used
Legend2[disk]: / Disk used
Title[disk]: ディスク使用率
PageTop[disk]: <H1>ディスク使用率</H1>


編集したら Esc キー(コマンドモード):wqで保存

MRTGの起動


# mkdir -p /home/httpd/html/mrtg/icons ← MRTGのディレクトリ作成

※MRTGは過去2回起動時のログを使用します。
mrtg.cfg修正後の起動で2回目まで必ずWARNINGが出るので、修正後はMRTG起動を3回行ないます。


# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg ← 1回目起動
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for eth0
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for eth0 was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove eth0.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename eth0.log to eth0.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for cpu
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for cpu was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove cpu.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename cpu.log to cpu.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for mem
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for mem was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove mem.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename mem.log to mem.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup could not read the primary log file for disk
Rateup WARNING: /usr/local/mrtg-2/bin/rateup The backup log file for disk was invalid as well
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove disk.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't rename disk.log to disk.old updating log file

# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg ← 2回目起動
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove eth0.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove cpu.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove mem.old updating log file
Rateup WARNING: /usr/local/mrtg-2/bin/rateup Can't remove disk.old updating log file

# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg ← 3回目起動
[root@xxxxx root]# ← 何も表示されなくなった

監視画面の確認

ネットワークトラフィック状況監視画面確認

http://サーバーIPアドレス/mrtg/eth0.htmlにアクセスして
このような画面が表示されればOKです。

CPU使用率監視画面確認

http://サーバーIPアドレス/mrtg/cpu.htmlにアクセスして
このような画面が表示されればOKです。

空きメモリ量監視画面確認

http://サーバーIPアドレス/mrtg/mem.htmlにアクセスして
このような画面が表示されればOKです。

ディスク使用率監視画面確認

http://サーバーIPアドレス/mrtg/disk.htmlにアクセスして
このような画面が表示されればOKです。

MRTGのインデックスページ作成




indexmakerというツールでインデックスページを作成します。

# /usr/local/mrtg-2/bin/indexmaker --columns=1 --addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" /usr/local/mrtg-2/cfg/mrtg.cfg > /home/httpd/html/mrtg/index.html

長いですが1行です。


インデックスページの文字化け対策

# vi /home/httpd/html/mrtg/index.html ← インデックスファイル編集

<meta http-equiv="content-type" content="text/html; charset=iso-8859-15" > ← この行を削除


http://サーバーIPアドレス/mrtg/にアクセスして
このような画面が表示されればOK

起動スクリプトの作成と自動起動の設定


# vi mrtg.sh ← viでMRTG起動スクリプト作成
 i キー(入力モード)

#!/bin/sh

/usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/mrtg.cfg

編集したら Esc キー(コマンドモード):wqで保存

# chmod 755 mrtg.sh ← 実行権を与える

# ./mrtg.sh ← 実行してみる

Cronに登録

# crontab -e
 i キー(入力モード)

*/5 * * * * /root/mrtg.sh ← 5分毎に実行する

編集したら Esc キー(コマンドモード):wqで保存

# /etc/rc.d/init.d/crond restart ←Cron を再起動




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.