2009/01/11

MRTGでYAMAHA RT57i/RT58iの転送量を監視

仲間内でVPNを作るため、コツコツ準備をし始めた。
転送量が爆発する可能性があるが、プロバイダの規制が厳しいので転送量を監視するためMRTGをインストールした。

# yum install mrtg


CentOS 5に用意してるMRTGパッケージはcronの追加とかも自動でしてくれるみたいだ。便利じゃのう。

続いて、転送量を見張る設定をMRTGに追加。
ルータはYAMAHAのRT57iを使っている。

問題はRT57iはエントランスモデルなので、SNMPが動いてない。そこで、ルータにtelnetして転送量を取得するpythonスクリプトを作った。(HOSTとPASSWORDはルータのものに書き換えてください)
  1. #!/usr/bin/python  
  2.   
  3. import sys  
  4. import telnetlib  
  5. import re  
  6.   
  7. HOST = "10.10.11.1"  
  8. PASSWORD = ""  
  9.   
  10. tn = telnetlib.Telnet(HOST)  
  11. tn.read_until("Password: ")  
  12. tn.write(PASSWORD + "\n")  
  13. tn.write("console character ascii\n")  
  14. tn.write("show status lan2\n")  
  15. tn.write("show environment\n")  
  16. tn.write("exit\n")  
  17.   
  18. buf = tn.read_all()  
  19.   
  20. print re.search(r"Received:.*\((\d*) octets\)", buf).group(1)  
  21. print re.search(r"Transmitted:.*\((\d*) octets\)", buf).group(1)  
  22. print re.search(r"Elapsed time from boot: (.+)", buf).group(1)  
  23. print HOST  

これを、MRTGから呼び出す。

# vim /etc/mrtg/mrtg.cfg



### RT57i ####
Target[rt57i]: `/usr/local/bin/rt57i.py`
MaxBytes[rt57i]: 1250000
Options[rt57i]: growright, integer
kilo[rt57i]: 1024
YLegend[rt57i]: Byte/sec
ShortLegend[rt57i]: byte/sec
LegendI[rt57i]: received
LegendO[rt57i]: transmitted
Title[rt57i]: Traffic Analysis for RT57i
PageTop[rt57i]: <h1>YAMAHA RT57i</h1>

pythonって、telnetプロトコルを使うようなライブラリすら標準で用意されているのは素晴らしすぎる。

参考:RT57i/外部の監視スクリプト/Python telnetlib/おまかせブログ

追記:RT58iでも上記のスクリプトは使えるようだ。

0 件のコメント: