« ルータ二台でマルチセッション | メイン | 自分 »
2006年06月14日
■mrtgを導入してみる。
[]

トラフィックの量を調べたいということで、MRTGを導入することにした。
MRTGはSNMTをしゃべってその結果を加工するようなので、SNMPエージェントも設定しないといけない。
ということで、まず、SNMPエージェントを設定。

patitude install snmpd, snmp, mrtg

エージェントのテストのためにSNMPも入れておく。
自分で自分を監視するので、ローカルのみアクセス制御を設定する。

[/etc/snmp/snmpd.conf]

# コミュニティとセキュリティのマップ
# sec.name source community
com2sec local 127.0.0.1 private

# セキュリティとグループのマップ
# sec.model sec.name
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local

# グループのアクセス制御設定
# context sec.model sec.level match read write notif
access MyRWGroup "" any noauth exact all all none

コミュニティ名はprivateのままつかわないこと。
アクセス制御は読み込みだけでも問題ない。
設定したらデーモンを再起動して、接続テスト。

/etc/init.d/snmpd restart snmpwalk -v 1 -c private localhost

なんかMIB情報がずらずら出てきたらOK。
次にmrtgの方。
debianだと設定ファイルを/etc/mrtg.cfgにおくんだけども、ちゃんと分けて配置したいので、/etc/mrtg/mrtg.cfgに置く。
で、cfgmakerでmrtgの設定ファイルのひな形を作るんだけども、どうやら、IPエイリアスしてるのは区別できないっぽい。

cfgmaker --ifref=ip private@localhost

とかやってもだめ。
そうなると、PPPoEセッション別にトラフィックを調べるには、NIC二枚差すか、SNMPのしゃべれる賢いルータを使うしかないらしい。
最低でもYAMAHAクラス。
貧乏人はあきらめます。
ついでに、ルータでトラフィックを調べてるわけではないので、LAN内部からのトラフィックも加算される。
まあ、目安にはなるだろうということで、設定を継続することに。
シェルは/bin/falseなmrtgユーザを追加しておく。
ついでに、CPUの方も眺めたいので、それも設定。

cfgmaker --ifref=eth > /etc/mrtg/mrtg.cfg

[/etc/mrtg/mrtg.cfg]
### Global Config Options
# ディレクトリはあらかじめ掘っておくこと
Htmldir: /home/mrtg/public_html
Imagedir: /home/mrtg/public_html/images
IconDir: icons
#logはウェブから見えない場所に配置
Logdir: /var/log/mrtg

### Global Defaults
Language: eucjp
EnableIPv6: no
Interval: 5
Refresh: 300

Target[traffic]: !00-00-00-00-00-00:private@localhost:
# ギガビットLANなので、MaxBytesは 1G/8 = 125,000,000
MaxBytes[traffic]: 125000000
Options[traffic]: growright, noinfo
Title[traffic]: Traffic Analysis for 00-00-00-00-00-00
PageTop[traffic]: 適当に

#.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2の値は、CPU利用率ではない
# http://www.strikeout.jp/karaburi/2004/08/netsnmp_mrtgcpu_1.html 参照
Target[cpu_load]: .1.3.6.1.4.1.2021.11.50.0&.1.3.6.1.4.1.2021.11.52.0:private@localhost
MaxBytes[cpu_load]: 100
Options[cpu_load]: growright,nopercent,noinfo
Title[cpu_load]: CPU load average
YLegend[cpu_load]: CPU load average(%)
LegendI[cpu_load]: User
LegendO[cpu_load]: System
Legend1[cpu_load]: CPU load average(User)(%)
Legend2[cpu_load]: CPU load average(System)(%)
ShortLegend[cpu_load]: %
PageTop[cpu_load]: 適当に

次にmrtgユーザで実行できるように、オーナーを変えておく。
ディレクトリがなければ掘っておく。

chown mrtg:mrtg /var/lock/mrtg
chown -R mrtg:mrtg /var/lib/mrtg
chown -R mrtg:mrtg /home/mrtg
chown -R mrtg:mrtg /etc/mrtg

mrtgをデーモンモードで動かすので、起動停止スクリプトを作成。
/var/run/mrtgディレクトリをつくって、オーナーをmrtgユーザに変えておく。

[/etc/init.d/mrtg]

#/bin/sh

MRTG=/usr/bin/mrtg
CONF=/etc/mrtg/mrtg.cfg
PIDFILE=/var/run/mrtg/mrtg.pid
LOGFIE=/var/log/mrtg/mrtg.log
USER=mrtg
GROUP=mrtg

if [ ! -x ${MRTG} ] || [ ! -r ${CONF} ]; then
echo "executable file or config file not found."
exit 1
fi


case "$1" in
start)
if [ -f ${PIDFILE} ]; then
echo "mrtg already started."
else
${MRTG} --user=${USER} --group=${GROUP} --daemon --pid-file=${PIDFILE} --logging ${LOGFILE} ${CONF} >>${LOGFILE} 2>&1
echo "mrtg started."
fi
;;

stop)
if [ ! -f ${PIDFILE} ]; then
echo "mrtg is not running."
else
#SIGTERMだとなんかエラー出るのよね。
#正しい止め方がわからない。
kill -9 `cat ${PIDFILE}`
rm ${PIDFILE}
echo "mrtg stopped."
fi
;;

*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac

exit 0

自動起動設定追加。

update-rc.d mrtg defaults 90 10

後はindexmakerでindexを作ったりしておしまい。
後、debianだとmrtgインストール時にcronに自動的にタスクが登録されるので、それも削除。

rm /etc/cron.d/mrtg

投稿者 邑波。 : 2006年06月14日 12:39

トラックバック

このエントリーのトラックバックURL:
http://union.waterblue.net/MT/mt-tb.cgi/287

* こちらの記事へのリンクの含まれないトラックバックは受け付けないようになっています。
コメント

ねここねこたちが、ネットでローカルとかを追加すればよかった?


投稿者 BlogPetのねここねこ : 2006年06月17日 15:00

コメントしてください




保存しますか?