本サイトに記載している情報は〜2003年ころまでのものです。最新の情報ではありませんのでご注意ください。

◆snmpを使ってみよう

NetBSDを使用する目的としては、gccやperlでの開発マシンのほか、
Web/ファイルサーバーとして利用するケースが多いんじゃないかと思います。

サーバーとして利用する場合、起動後はディスプレイを消して放ったらかしにして
突然障害が発生 (DISKが一杯になってたりhttpdが落ちていたり) して大慌て、
なんてこともよくあるんじゃないでしょうか。

そんなトラブルを未然に防ぐには、snmpを利用したサーバー監視がお勧めです。

↑ホントの個人利用(講座内利用)なら わざわざsnmpを使わなくても
syslogやcronからのdailyメールで足りるんですけどね(^ ^;


SNMPって何?という質問には、次のサイトが参考になると思います。
ZDNet How to

あ、でもこのサイトの記述は微妙に何箇所か間違ってます(汗)。
具体的な設定の参考にするときは気をつけてください。
(前の説明でコメントアウトした設定が 次の説明で必要だったり、オプションのSuppress の意味が逆になってるとか)

NetBSD.orgで配布されているバイナリPackageのucd-snmpはちょっと古いので、
最新のソースを持ってきてmakeしたほうが良いようです。

NET-SNMP Home Page

インストール方法はZDNetのサイトに詳しく紹介されてます。

なお、NetBSD/PC98固有の問題かどうかはわかりませんが、
snmpwalkで大量の情報を取得するとsnmpdが終了してしまうようです。
ktraceかけてみたけどよくわからなかった...


◆Webで情報を見るために

snmpdをインストールして、トラップを設定すれば、Diskの空き容量が一定値を切った時や
特定のデーモンが落ちた時に警告を受け取ったりすることが可能です。
一般的な監視の目的としては、ucd-snmpを使えば十分でしょう。

でも、Webサーバーを運用していると、ネットワークトラフィックやCGI等による
CPUの負荷状況を 時系列のグラフで見たい、という要望があるんじゃないでしょうか。

そのような目的にぴったりのツールがMRTGです。

MRTGは、snmpd(に限りませんが)の情報を元に html&PNG形式のWebページを
作成してくれるツールで、Webサーバーと組み合わせて使用することにより
ほかのPCのブラウザでサーバー情報を見ることが可能になります。

MRTGの詳しい機能については下記のリンクを参照してください。

ZDNet How to


だた、NetBSD/PC-98にMRTGをインストールしてみたら 思ったより手間がかかったので
(すごく困難というわけでもありませんが)MRTGのインストール手順を備忘録に残すことにしました。

それが このページというわけです(^ ^;


◆zlibのインストール

MRTGを利用するためには、下記のライブラリやツールをインストールする必要があります。

 ・zlib
 ・libpng
 ・gd

gdのコンパイル(.configure)のためにPerlが必要となります。
Perlをインストールしていない場合は その作業も必要です。

インストールの順番は それぞれの依存関係にしたがって zlib、libpng、gd の順で行わないといけません。

これらのツールのいくつかはバイナリPckageも配布されているようですが、
最新版をインストールするにはやはりソースからコンパイルする必要があります。

zlibのインストールは特に難しいことはありません。
一般的な手順どおり、解凍して./configure、make、make installです。

> tar -zxvf zlib-1.1.4.tar.gz
> cd zlib-1.1.4
> ./configure
> make
> su ***** (rootになる)
# make install
# exit
>

てな感じです。

コマンドの細かい内容は各自環境に合わせて補完することになりますが、
もし 既存の古いlibz.a等を上書きしてしまいたい場合には、
configureのオプションで --prefix=/usr を指定すればOKです。


◆libpngのインストール

libpngをインストールするときは、./configureを実行するかわりに
OS環境ごとに用意されているmakefileをコピー(リネーム)するという手順が必要です。

NetBSD/PC-98に関しては、gcc用(makefile.gcc)とNetBSD用(makefile.netbsd)の
どちらを使っても問題ないようでした。

なお、gcc用makefileを使用してmake installを実行してみると、
ヘッダファイル(png.hとか)がコピーされません。

libpngのヘッダファイルは 後述のgdをインストールするときに必要なので、Linuxの
makefileを参考にして /usr/lcoal/include へファイルをコピーしておくと良いかも知れません。

Linux用makefileには ヘッダファイルをコピーするための記述がちゃんとあります。
ただし、普通に make installしてもコピーされないみたいですが(make install-header)。

もしくは、gdをコンパイルするときに、makefileにincludeパスを追加する方法もあります。
私はこの方法でやりました。(次節参照)


◆gdのインストール

gdのインストールは、単純に ./configure → (rootになって) make install なのですが...
いくつかの注意点 (というか補完作業) が必要です。

(1) configure スクリプトの修正

gdのconfigureスクリプトはPerlを使用しているのですが、デフォルトのPerlへのパスが

#!/usr/bin/perl

になってます。環境に合わせて

#!/usr/local/bin/perl または #!/usr/pkg/bin/perl など

に書き換えなければなりません。

(2) includeパスの修正

gdのコンパイル時には libpngのヘッダファイルがincludeされてます。
このため、あらかじめMakefileに記述されているパスにpng.hなどをコピーしておくか、
別途パスを追加する必要があります。

私がインストールしたときの方法は、Makefile中に以下のように記述を追加しました。

INCLUDEDIRS=-I. -I/usr/local/inlcude (中略) -I/tmp/libpng-1.2.5 (tarで展開したパス)

もしかすると./configure 時に --with オプション等でパス指定できるのかも知れませんが...
まあ 上記のパス追加と同じことだと思いますので(^ ^;


◆mrtgのインストール

ここまでのインストールが無事完了すれば、MRTGそのもののインストールは
特に問題ないと思います。

MRTG ORG
ソースを上記のサイトから取ってきてtarで展開した後、

> ./configure --with-gd-lib=/usr/local/lib/ --with-gd-inc=/usr/local/include/ (gdのインストール場所を指定する)
> make
> su *****
# make install

ですね。

デフォルト設定では、/usr/local/mrtg-2/ にインストールされます。


◆mrtgの設定

MRTGの初期設定は、付属のツール cfgmaker を使って行います。
詳しい説明は ZDNetとかを見てもらうとして、
私がサーバー自身の状況を見るために設定した例は次の通りです。

> cfgmaker private@localhost > /usr/local/mrtg-2/mrtg.conf
(SNMPで設定した コミュニティ名@ホスト名 をオプションとし、出力を mrtg.confにリダイレクト)

通常、作成された設定ファイルはそのままでは使えないので 文献等を参考に編集します。
私の場合は

WorkDir: /usr/local/apache/htdocs/mrtg ( HTMLデータを出力するディレクトリを指定 )
apacheの設定にあわせてフォルダを作っておきます(結果が書き込めるようにアクセス権の設定も必要です)。

と、もう一つ

メインのNIC(ne0)のエントリがコメントアウトされていたのでコメント(#)をはずす。
cfgmaker実行時にネットワークパケットの送受信量が少ないと NICが不使用とみなされるらしい...
最初に作成された設定ファイルでは全てのエントリがコメントアウトされてました(汗

の2点がまずは必要でした。

ここまでできたら 一度 mrtg を直接起動してみて、htmlファイルが作成されるかどうかを
確認すると良いでしょう。

# /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/mrtg.conf ( 作成した設定ファイルをオプションで指定 )

うまく動いていることを確認できたら、設定ファイルを編集して
見たい情報(エントリ)を追加してゆきます。

Graph Shot
MRTGのグラフ(NICの送受信トラヒック)はこんな感じ


◆cronで定期実行

MRTGそのものはデーモンではないので、結果のWebページを定期的に更新するためには
cronなどで定期実行させる必要があります。

# crontab -e

でcron設定ファイルを開いて、たとえば以下の行を追加します。

0,20,40 * * * * /usr/local/mrtg-2/mrtg /usr/lcoal/mrtg-2/mrtg.conf (20分毎に更新させる場合)

なお、実際に上記の通り記述するとcron実行毎にroot宛てのmailが飛んでしまうので、
crontab の記述を下記のようにしたほうが良いかも知れません。

0,20,40 * * * * /usr/local/mrtg-2/mrtg /usr/lcoal/mrtg-2/mrtg.conf > /dev/null 2>&1


トップページに戻る