snmpdで測定している Networkカードの転送量を logへ残す
sorry Japanese only
最終更新日 2004/06
page size = Mbyte

snmpdにてせっかく転送量の測定を行っているのに、mrtgのグラフを書かせるだけではもったいありません。
と言うことで /var/logへ traffic.logというのを 1時間ごとに書かせるようにしてみました。

まずは以下のコマンドを用いて、転送量の合計バイト数が測定が出来ているのを確認。
snmpget 192.168.0.5 -c hogehoge ifOutOctets.2 ifInOctets.2
hogehogeは、/etc/snmp/snmpd.confにて自分で設定したコミュニティー名を使う。
.2とかは、.1とか適当に変えてみて、転送量(byte)が表示されるのを見付ける。

で、転送量(byte)のコマンドを見付けたら、このファイルを作ります。
#!/bin/sh
date
snmpget 192.168.0.5 -c hogehoge ifOutOctets.2 ifInOctets.2

これを、trafficとか好きな名前を付けて、/usr/local/binなど適当な所へ保存。
chmod 755 traffic
などを行い実行できるようにしておく。

それでは試しに実行してみましょう。
[/usr/local/bin]$ traffic
2004年  7月  6日 火曜日 20:15:14 JST
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1878082077
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 62298744
PC起動から現在までの eth0の
ifOutOctets.2が、総転送量(Upload byte)
ifInOctets.2が、総転送量(Download byte)です。
linuxを再起動すると 0へ resetされてしまうようです。

これを画面表示ではなく /var/logにあるファイルへ記録取るよう、結果をリダイレクトするようなファイルも作成します。
#!/bin/sh
date >> /var/log/traffic.log
snmpget 192.168.0.5 -c hogehoge ifOutOctets.2 ifInOctets.2 >> /var/log/traffic.log
私は /usr/local/bin/traffic-logというファイルにしました。
trafficシェルスクリプトと同じように
chmod 755 traffic-log
などを行い、実行できるようにしておく。

この traffic-logコマンドを、一定時間ごとに勝手に実行するよう crontabコマンドを使って cronへ登録します。
まずは、現在どのような cronが登録されているかの確認。
[root]# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.15493 installed on Mon Jul  5 22:34:31 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
*/2 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/mrtg127.cfg
viエディターが立ち上がります。
ただ見るだけの -lオプションを付けて実行したので、見るだけで変更できないから変更するな。って注意書きが表示されています。
私の場合は mrtgの記録だけが動いてます。
viエディター抜けるため :q!などを入力します。

それでは追加してみましょう。
crontab -e
と実行すると -lオプションの時と同じように viエディターが立ち上がるので

*/2 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/mrtg127.cfg
0 * * * * /usr/local/bin/traffic-log
~
毎時 0分に実行するよう 2行目を付け足しました。
:wqにて書き込んで終了します。

/var/log/traffic.logを見ると以下のような記録が取れています。
[root]# tail -12 traffic.log
Tue Jul  6 03:00:00 JST 2004
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 853309161
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 32660076
Tue Jul  6 04:00:00 JST 2004
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1159173337
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 40872960
Tue Jul  6 05:00:00 JST 2004
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1354041122
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 46430373
Tue Jul  6 06:00:00 JST 2004
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 1356877970
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 46596295

9180
戻る