net-snmp(前ucd-snmp)というSNMPエージェントをインストールして設定。その後、MRTGをインストールして設定し、ウェブブラウザで確認します。
net-snmpとは?
net-snmpはSNMPエージェントを含んだSNMPツールパッケージです。多くのUNIXプラットフォームでコンパイル可能です。
MRTGとは?
MRTGはネットワークトラフィックを計測し、PNGフォーマットのグラフを含んだHTMLファイルを生成します。拡張性が高く、トラフィック以外の情報もグラフ化できます。
net-snmpのコンパイル・インストール
SourceForgeからソースをダウンロードして展開・コンパイル・インストールします。
% ./configure % make % su # make install
MRTGのコンパイル・インストール
MRTGのダウンロードサイトからソースをダウンロードして展開・コンパイル・インストールします。
% ./configure % make % su # make install
私はconfigureした際に指定したオプションやmake、make installのログを全てファイルに保存しています。多くの場合、configureで指定したオプションはconfig.statusに保存されます。このファイルを/usr/local/logs/config/以下にcpします。makeとmake installの場合は、ファイルにリダイレクションします。
新しいバージョンを入れる時に、前と同じオプションを指定してインストールしたい時にはconfig.statusを実行するだけでよいので確実です。また、makeに失敗した時に、前にインストールした時と比べて何が違うのかを調べるためにも、ログは必要です。例えば以下の通り。
% ./configure % cp config.status /usr/local/logs/config/ucd-snmp-4.2.1 % make >& /usr/local/logs/make/ucd-snmp-4.2.1 % su # make install >& /usr/local/logs/install/ucd-snmp-4.2.1
net-snmpの設定
net-snmpをインストールするとSNMPエージェントのプロセスが/usr/local/sbin/snmpdとしてインストールされます。このエージェントの設定ファイルは/usr/local/share/snmp/snmpd.confとなります。SNMPエージェントは非常に重要な情報にアクセスすることもあるため、コミュニティ名はデフォルトのpublicから変更しておいた方がよいでしょう。
設定用のコマンドが/usr/local/bin/snmpconfとして用意されています。
MRTGの設定
MRTGでは、ネットワークトラフィックを計測するための設定ファイルを作成するコマンドが標準でインストールされます。
# $MRTG/bin/cfgmaker community@hostname >& filename
とコマンドを実行すると、hostnameで指定したホストにSNMPでアクセスし、ネットワークインターフェースを調べます。この時、communityで指定されたコミュニティ名が使われます。そして、その結果をfilenameで指定した設定ファイルに作成します。
後は、WorkDirやiconDir、Optionsなどを設定します。cfgmakerには様々なオプションが用意されているので、一度、オンラインマニュアルを読んでみましょう。
前にインストールしたnet-snmpの拡張MIBを取得して、ホストのCPU使用率のグラフを出力します。まず、net-snmpのエージェントの設定を行います。/usr/local/share/snmp/snmpd.confに以下の行があることを確認して下さい。ない場合は追加して下さい。
load 12 14 14
次に、MRTGの設定ファイルを作成します。communityとhostnameは環境に併せて書き換えて下さい。
LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt Options[_]: growright Target[rapier_cpu]: laLoadInt.2&laLoadInt.1:community@hostname SetEnv[rapier_cpu]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="ed1" MaxBytes[rapier_cpu]: 100 Title[rapier_cpu]: CPU Load Average PageTop[rapier_cpu]: <H1>CPU Load Average for hostname</H1> Options[rapier_cpu]: growright,absolute,nopercent,gauge YLegend[rapier_cpu]: Load Average (%) Unscaled[rapier_cpu]: dwmy
前にインストールしたnet-snmpの拡張MIBを取得して、ホストのディスク使用率のグラフを出力します。まず、net-snmpのエージェントの設定を行います。/usr/local/share/snmp/snmpd.confに以下の行があることを確認して下さい。ない場合は追加して下さい。
disk / 100000 disk /home 100000
次に、MRTG用の設定ファイルを作成します。communityとhostnameは環境に併せて書き換えて下さい。
LoadMIBs: /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt Options[_]: growright Target[rapier_disk]: dskPercent.1&dskPercent.2:community@host SetEnv[rapier_disk]: MRTG_INT_IP="192.168.0.2" MRTG_INT_DESCR="ed1" MaxBytes[rapier_disk]: 100 Title[rapier_disk]: Disk Usage for rapier PageTop[rapier_disk]: <H1>Disk Usage for hostname</H1> Options[rapier_disk]: growright,absolute,nopercent,gauge YLegend[rapier_disk]: Disk Usage (%) Unscaled[rapier_disk]: dwmy
MRTGでは、最大2つのパーティションまでしか1つのページで監視することができません。2つ以上のパーティションを監視したい場合には、ページを分ける必要があります。
MRTGの運用の設定は主に二つあります。一つはcronに登録して、定期的にコマンドを起動する方法で、もう一つは、daemonモードで実行する方法です。
ここでは、cronで起動するための設定を紹介します。まず、以下をcronに登録します。
*/5 * * * * root /usr/local/mrtg/shell/mrtg.sh > /dev/null 2>&1
cronの中で起動されるmrtg.shは以下の通りです。
#!/bin/sh
MRTG_HOME=/usr/local/mrtg
MRTG_CONF="$MRTG_HOME"/shell/mrtg.conf
sed '
/^[ ]*#/d
/^[ ]*$/d
s/#.*$//g
' "$MRTG_CONF" |
while read HOST TARGET
do
"$MRTG_HOME"/bin/mrtg "$MRTG_HOME"/"$HOST"/"$TARGET"/"$HOST"_"$TARGET".cfg > /dev/null 2>&1
done
そして、$MRTG_CONFの内容は以下の通りです。
#hostname #target host1 if host1 cpu host2 if
最後に、ディレクトリの構成は以下の通りです。
+ /usr
+ local
+ mrtg
+ bin
- cfgmaker
- mrtg
+ shell
- mrtg.sh
- mrtg.conf
+ host1
+ if
- host1_if.cfg
+ cpu
- host1_cpu.cfg
+ host2
+ if
- host2_if.cfg
これで、ホスト名とキーワード(ifとかcpuとか)の組み合わせの設定ファイルを編集し、MRTGの設定ファイルを編集するだけで、MRTGで監視することができるようになります。