トラフィックの量を調べたいということで、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
投稿者 邑波。 : 12:39
| コメント (1)
| トラックバック