MRTG、snmpdのインストール

以前よりMRTGをインストールしてネットワークの状況をWebでみたいと思っていたが、 MRTGが利用するsnmpのことがよく分からず、いつも挫折していた。
今回たまたまGoogleでルータのL2スイッチ、L3スイッチで検索したところ、 MRTGについて書いたページにたどり着き再び挑戦。
まだよく分かっていないことも多いが取りあえず動いているようなのでメモを。

参考にしたページは 独学で目指すネットワーク入門 SNMPによるネットワークモニタリング


まず、Linuxでmrtgを使うためにはsnmpdをインストールする必要がある。
この関係が今までよく分かっていなかった。mrtgの説明のページは よくあるのだが、SNMPについても書いてあるページがあまりなく、 ルータから情報を取ってきてうんぬんとあるがなんのことやら…
LinuxのInstallしてにあるPCのNICから情報を得るためにはsnmpdを動かさなければ いけないのかなぁと漠然と思っていたがいまいちはっきりわからなかった。

ルータから情報を取ってきてうんぬんも、個人で使うようないわゆるブロードバンド ルータはSNMPに対応していないものがほとんどで、対応しているのは ちゃんとした(?)CISCOのルータやYAMAHAのRT10xだけらしい。 (参考)

SNMPやMRTGの設定をきちんとするとネットワークの使用状況だけでなく、 他にもいろいろな統計がとれるようだが、取りあえず動かしてみる。


最初に必要なソフトをapt-getを使ってインストール。
環境によっても違うと思うが、mrtgとsnmpdだけ入れれば後は 依存関係で必要なものはインストールされる(かな?)。
あと、snmpdのチェックのためsnmpもインストールしておく。

設定が必要なのはsnmpd.confとmrtg.cfg。
まずはsnmpdの設定。snmpd.confは/etc/snmp/snmpd.conf。
変更したのは以下の通り。

com2sec readonly   default public
com2sec readwrite  default private
を
com2sec mynetwork  192.168.10.0/24 public
com2sec local      127.0.0.1       private
に

group MyROSystem v1         paranoid
group MyROSystem v2c        paranoid
group MyROSystem usm        paranoid
をすべてコメントアウト

group MyROGroup  v1         readonly
group MyROGroup  v2c        readonly
group MyROGroup  usm        readonly
group MyRWGroup  v1         readwrite
group MyRWGroup  v2c        readwrite
group MyRWGroup  usm        readwrite
を
group MyROGroup  v1         mynetwork
group MyROGroup  v2c        mynetwork
group MyROGroup  usm        mynetwork
group MyRWGroup  v1         local
group MyRWGroup  v2c        local
group MyRWGroup  usm        local
に

syslocation Unknown (configure /etc/snmp/snmp.local.conf)
syscontact Root  (configure /etc/snmp/snmp.local.conf)
を
syslocation Debian GNU/Linux (Clare)
syscontact Kazuhiko Shioji 
ようは参考にしたページをまねてsec.nameをreadonlyからmynetworkに、 readwriteをlocalに変更し、com2secのsourceを自分のネットワークの環境 にあわせて変更。
システムの名前や連絡先を適当に変更しただけである。
また、同じdirectory(/etc/snmp/)にあるsnmptrapd.confは使い方が まだよくわからないので、名前を変更しておく。
そうしないと、snmpdと一緒にsnmptrapdもdaemonとして起動してしまう。

ここまでで問題がなければrootで起動する。

# /etc/init.d/snmp start

snmpwalkを使って

$ snmpwalk 192.168.10.30 public .
とし、答えが返ってきたらOK。(192.168.10.30はLinuxのNICのIPアドレス)
これはrootでなくてもできる。


次にmrtgの設定をする。
これもmrtg.cfgを書き換えることになるが、cfgmakerを使うと簡単にできる。
webから見れるようにapacheのdocument root(/var/www)の下にMRTGのディレクトリを作り、 mrtg.cfgはその中におくことにする。
監視するのはこのLinuxのNIC(192.168.10.30)のときは、
$ cfgmaker --global 'WorkDir: /var/www/MRTG' \
--global 'Options[_]: bits,growright' \
--output /var/www/MRTG/mrtg.cfg public@192.168.10.30
とする。

エラーなくmrtg.cfgができたら、/etc/cron.d/mrtgを作る。
内容は

*/5 * * * * root /usr/bin/mrtg /var/www/MRTG/mrtg.cfg \
--logging /var/log/mrtg.log 
これで、5分ごとに/var/www/MRTG/に以下のファイルが作られ更新される。

192.168.10.30_2.html
192.168.10.30_2.log
192.168.10.30_2-day.png
192.168.10.30_2-week.png
192.168.10.30_2-month.png
192.168.10.30_2-year.png
あとは192.168.10.30_2.htmlをWeb browserで呼び出せば完了。