PCリンクスでは、パソコンの設定・修理から組込み機器の受託開発まで承ります。

 

VPNルーターでSNMPトラップを使う

前回の記事で、”RTX1100のsyslogをlinuxサーバで記録する”ところまで終了しました。

7回目の今回は、管理業務を楽にするために、RTX1100に異常が発生した場合、メールでお知らせする機能を実現します。
※RTX1100は、SNMP(Simple Network Management Protocol)に対応しており、サーバで遠隔監視させることができます。

今回は、RTX1100のppインタフェースを監視して、プロバイダへの”PPPoE接続”が切断されたら、指定したメールアドレスにメールが届くようにします。
SNMPを使用すると、RTX1100のCPUの稼働率のグラフなども簡単に作成することができ、ルーターの管理が楽におこなえるようになります。

trapmail 021 300x174 RTX1100でSNMPトラップを使う

SNMPによるRTX1100の監視は、以下のような手順で設定を行います。
ここでは、サーバはすでに用意されており、net-snmpがインストールされているものとします。

  • RTX1100にsnmp関係の設定を行います
  • サーバにRTX1100用のカスタムMIBをインストールします
  • snmpwalkコマンドを使用して、簡単な動作確認を行います
  • RTX1100にsnmp trap関係の設定を行います
  • snmptrapdを常駐させ、トラップ発生時メールで通知するように設定します
  • PPPoE接続が切断時、トラップが発生しメールが送られてくることを確認します
  • snmp関係のログ出力先を変更します

 

RTX1100の設定-1(snmp関係)

RTX1100にログインし、snmpでデータを入手するための設定を追加します。また、ルーター設置場所等の情報も合わせて設定します。設定コマンドは、[snmp host サーバのプライベートIPアドレス]で指定します。

[RTX]# snmp host [サーバのプライベートIPアドレス]        
[RTX]# snmp community read-only [コミニュティ名]

# PPインターフェイスの情報を取得できるようにする
[RTX]# snmp yrifppdisplayatmib2 on

# ルーター設置場所等の情報
[RTX]# snmp syscontact [担当者名]
[RTX]# snmp sysname [VPNルーターのモデル名]
[RTX]# snmp syslocation [設置場所]

 

サーバへ拡張MIBを導入

ヤマハでは、ルーター用の拡張MIBファイルを提供しています。MIBファイルには、ルーターの管理情報(データベース)がテキスト形式で記述されています。

ヤマハのWebサイトからRTX1100用のカスタムMIBをダウンロードします。

[root@ms01 ~]# wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
--2012-05-02 12:28:14--  http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
www.rtpro.yamaha.co.jp をDNSに問いあわせています... 202.218.0.99
www.rtpro.yamaha.co.jp|202.218.0.99|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 12041 (12K) [application/x-gzip]
[yamaha-private-mib.tar.gz] に保存中

100%[=================================================================================>] 12,041      --.-K/s 時間 0.02s

2012-05-02 12:28:14 (551 KB/s) - [yamaha-private-mib.tar.gz] へ保存完了 [12041/12041]

ダウンロードしたファイルを展開します。

[root@ms01 ~]# tar zxvf yamaha-private-mib.tar.gz
yamaha-private-mib/
yamaha-private-mib/yamaha-product.mib.txt
yamaha-private-mib/yamaha-rt-firmware.mib.txt
yamaha-private-mib/yamaha-rt-hardware.mib.txt
yamaha-private-mib/yamaha-rt-interfaces.mib.txt
yamaha-private-mib/yamaha-rt-ip.mib.txt
yamaha-private-mib/yamaha-rt-switch.mib.txt
yamaha-private-mib/yamaha-rt.mib.txt
yamaha-private-mib/yamaha-smi.mib.txt

/usr/share/snmp/ディレクトリへvendor_mibsディレクトリを新規に作成し、展開したファイルをコピーします。

[root@ms01 ~]# mkdir /usr/share/snmp/vendor_mibs
[root@ms01 ~]# cp yamaha-private-mib/* /usr/share/snmp/vendor_mibs

ダウンロードした圧縮ファイルと展開したファイルを削除しておきます。

[root@ms01 ~]# rm -rf yamaha-private-mib
[root@ms01 ~]# rm -f  yamaha-private-mib.tar.gz

/user//share/snmp/snmp.confファイルを新規ファイルとして作成し、以下の2行を追記します。

[root@ms01 ~]# pico /usr/share/snmp/snmp.conf
# YAMAHA RTX1100用の拡張MIBを追加
mibdirs /usr/share/snmp/mibs:/usr/share/snmp/vendor_mibs
mibs all

snmp.confファイルを追加したので、snmpdを再起動させます。

[root@ms01 ~]# service snmpd restart
snmpd を停止中:                                            [  OK  ]
snmpd を起動中:                                            [  OK  ]

 

snmpdの動作確認

MIBファイルの導入が終了しましたので、サーバ上で以下のコマンドを実行し、VPNルーターの機器情報が入手できることを確認します

[root@ms01 ~]# snmpwalk -v 1 -c [コミュニティ名] 192.168.0.1 system
RFC1213-MIB::sysDescr.0 = STRING: 'RTX1100 Rev.8.03.92 (Thu Feb 16 20:50:25 2012)'
RFC1213-MIB::sysObjectID.0 = OID: YAMAHA-PRODUCTS-MIB::rtx1100
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (3143220) 8:43:52.20
RFC1213-MIB::sysContact.0 = STRING: [担当者名]
RFC1213-MIB::sysName.0 = STRING: [VPNルーターのモデル名]
RFC1213-MIB::sysLocation.0 = STRING: [設置場所]
RFC1213-MIB::sysServices.0 = INTEGER: 12

次に、拡張MIBでサポートされているシンボルを表示させます。

YAMAHA MIB 01 RTX1100でSNMPトラップを使う

以下の様に、シンボル名を指定して、RTX1100の情報を入手することができます。下記の例はRTX1100のファームウェアバージョンとメモリの使用率を入手する場合のコマンドとなります。

[root@ms01 ~]# snmpwalk -v 1 -c [コミュニティ名] 192.168.0.1 yrfRevision.0
YAMAHA-RT-FIRMWARE::yrfRevision.0 = STRING: "RTX1100 Rev.8.03.92 (Thu Feb 16 20:50:25 2012)"
[root@ms01 ~]# snmpwalk -v 1 -c [コミュニティ名] 192.168.0.1 yrhMemoryUtil.0
YAMAHA-RT-HARDWARE::yrhMemoryUtil.0 = Gauge32: 33

 

RTX1100の設定-2(snmp trap関係)

プロバイダへの接続が切断(リンクダウン)した時、トラップ(RTX1100の状態を通知するSNMPメッセージのこと)を発生するように、RTX1100の設定を行います。

[RTX]# snmp trap host [サーバのプライベートIPアドレス]
[RTX]# snmp trap community [コミュニティ名]
[RTX]# snmp trap enable snmp all

# ppインタフェースがリンクダウン時トラップを送信する
[RTX]# snmp trap send linkdown pp 1 on

 

サーバのsnmptrapdの設定

snmptrapdを使用して、RTX1100の異常を検出してメールを受け取れるようにします。ここでは、プロバイダへの接続が切断(リンクダウン)した時に、メールを受信するようにします。

最初に、snmptrapdの稼動状態を確認します。下記は、snmptrapdが停止時のコマンドとなります。

[root@ms01 ~]# service snmptrapd status
snmptrapd は停止しています
[root@ms01 ~]# service snmptrapd start
snmptrapd を起動中:                                        [  OK  ]
[root@ms01 ~]# chkconfig snmptrapd on
[root@ms01 ~]# chkconfig snmptrapd --list
snmptrapd       0:off   1:off   2:on    3:on    4:on    5:on    6:off

snmptrapd デーモンへ、拡張MIBファイルのディレクトリパスを追加します。

[root@ms01 ~]# pico /etc/sysconfig/snmptrapd
# snmptrapdに、mibsディレクトリとvendor_mibsディレクトリを指定
OPTIONS="-Lsd -p /var/run/snmptrapd.pid -M /usr/share/snmp/mibs:/usr/share/snmp/vendor_mibs -m all"

最初に、PPインタフェースのリンクダウンをあらわすOIDを、snmptranslateコマンドを使用して調べます。

[root@ms01 ~]# snmptranslate -On YAMAHA-RT-INTERFACES::yrIfPpLinkDown
.1.3.6.1.4.1.1182.2.3.0.2

次に、snmptrapd.confファイルを新規作成し、トラップ発生時のメール送信先を設定します。
ここでは、PPPoE接続がリンクダウンした場合のみトラップメールを送信するようにOIDに[.1.3.6.1.4.1.11822.3.0.2]を指定します。

[root@ms01 ~]# pico /etc/snmp/snmptrapd.conf
# snmptrapd.confファイルを新規作成し、メール送信先を設定
authCommunity log,execute,net [コミュニティ名]
traphandle .1.3.6.1.4.1.11822.3.0.2 /usr/bin/traptoemail -s [メールサーバ名」 [送信先メールアドレス]

設定を変更したので、snmptrapdを再起動させます。

[root@ms01 ~]# /etc/init.d/snmptrapd restart
snmptrapd を停止中:                                        [  OK  ]
snmptrapd を起動中:                                        [  OK  ]

 

トラップ発生時の動作確認

RTX1100を”restart”コマンドで再起動させて、サーバのログファイルを確認します。
CentOSの標準設定では、snmptrapdのログ出力は、/var/log/messagesファイルに記録させます。

[root@ms01 ~]# cat /var/log/messages
May  6 17:29:08 ms01 snmptrapd[16234]:
2012-05-06 17:29:08 192.168.0.1(via UDP: [192.168.0.1]:161) TRAP, SNMP v1, community [コミニュティ名]
YAMAHA-PRODUCTS-MIB::rtx1100 Link Down Trap (0) Uptime: 1 day, 1:12:29.85       RFC1213-MIB::ifIndex = INTEGER: 5
May  6 17:29:08 ms01 snmptrapd[16234]:
2012-05-06 17:29:08 192.168.0.1(via UDP: [192.168.0.1]:161) TRAP, SNMP v1, community [コミニュティ名]
YAMAHA-RT::yamahaRTInterfaces Enterprise Specific Trap (YAMAHA-RT-INTERFACES::yrIfPpLinkDown) Uptime: 1day,1:12:29
.86 YAMAHA-RT-INTERFACES::yrIfPpIndex = INTEGER: 5

ppインタフェースのリンクダウンがログに記録されているので、設定が正しければ、メールが送られてきているはずなので確認します。

trapmail 011 RTX1100でSNMPトラップを使う

メールの内容が判りにくいので、snmptrapdファイルをエディタで開き、OPTIONS=行を修正します。

OPTIONS 011 RTX1100でSNMPトラップを使う

修正が完了したら、snmptrapdを再起動させます。

[root@ms01 ~]#  service snmptrapd restart
snmptrapd を停止中:                                        [  OK  ]
snmptrapd を起動中:                                        [  OK  ]

再度、RTX1100を再起動させて、トラップを発生させて、メールの記述内容がスッキリしたことを確認します。

trapmail 02 RTX1100でSNMPトラップを使う

 

ログ出力先の変更

snmpdとsnmptrapdのログ出力先をmessagesファイルからsnmp.logファイルへ変更します。

snmpdの起動スクリプトを編集し、facility (ログの分類)を local2 へ変更します。また、Priority(ログ出力のレベル)は、notice以上を記録するようにします。

OPTIONS 021 RTX1100でSNMPトラップを使う

snmptrapdの起動スクリプトを編集し、facility(ログの分類) を local2 へ変更します。

OPTIONS 031 RTX1100でSNMPトラップを使う

/etc/syslog.conf をエディタで開き、local2に分類されたログを単独のログ(snmp.log)に出力するように、変更します。この時、messagesファイルへの2重記録を防ぐための指定(local2.none)の記述を追加します。

[root@ms01 ~]# pico /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
(略)
# snmpdとsnmptrapdのログをmessagesへ出力しないように変更
*.info;mail.none;authpriv.none;cron.none;kern.none;local3.none;local2.none /var/log/messages
(略)
# snmpdとsnmptrapdのログを取得する
Local2.*                                                /var/log/snmp.log

次に、/var/log/snmpd.log は、まだ存在しないので空ファイルを用意しておきます。

[root@ms01 ~]# touch /var/log/snmp.log

/etc/logrotate.d/syslogを修正して、追加したsnmp.logのローテーションを行うようにします。

[root@ms01 ~]# pico /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/spooler /var/log/boot.log /var/log/cron /var/log/rtx1100.log /var/log/snmp.log {

最後に、サーバを再起動させます。

[root@ms01 ~]# reboot

サーバで”tail -f /var.log/snmp.log”を実行し、RTX1100を再起動させて、トラップが記録されることを確認します。

[root@ms01 ~]# tail -f /var/log/snmp.log
May  6 17:38:13 ms01 snmptrapd[2771]:
2012-05-06 17:38:13 192.168.0.1(via UDP: [192.168.0.1]:161) TRAP, SNMP v1, community [コミニュティ名]
rtx1100 Link Down Trap (0) Uptime: 1 day 1:21:04.49  ifIndex = INTEGER: 5
May  6 17:38:13 ms01 snmptrapd[2771]:
2012-05-06 17:38:13 192.168.0.1(via UDP: [192.168.0.1]:161) TRAP, SNMP v1, community [コミニュティ名]
yamahaRTInterfaces Enterprise Specific Trap (yrIfPpLinkDown) Uptime: 1 day 1:21:04.49      yrIfPpIndex = INTEGER: 5

 

MRTGでRTX1100のCPU使用率をグラフ表示

SNMPの使用例として、MRTGでRTX1100のCPU使用率をグラフ表示させます。MRTGパッケージがサーバにインストールされていることが前提です。

MRTGのインストールは、 ネットワークトラフィック監視ツール導入(NET-SNMP+MRTG)  を参照ください。

MRTGでグラフ化する場合、取得したいデータをOIDで指定する必要がありますので、snmptranslateコマンドを使用して、RTX1100のCPUの使用率(1分/5分)のOIDを調べます

[root@ms01 ~]# snmptranslate -On YAMAHA-RT-HARDWARE::yrhCpuUtil1min.0
.1.3.6.1.4.1.1182.2.1.6.0  

[root@ms01 ~]# snmptranslate -On YAMAHA-RT-HARDWARE::yrhCpuUtil5min.0
.1.3.6.1.4.1.1182.2.1.7.0

mrtg.cfgファイルにRTX1100のCPU使用率を表示するための設定を追加します。

mrtg cfg 01 RTX1100でSNMPトラップを使う

RTX1100のCPU使用率の監視画面を表示させます。
当方の環境では、CPUの使用率はとても低く、通常3%程度ですので、縦軸の目盛りは20%を指定しています。
必要に応じて、CPUの使用率が閾値を越えたらトラップ(yrhCpuUtilTrap)を発生させて、メールを飛ばすことも可能です。

RTTG RTX1100 01 RTX1100でSNMPトラップを使う

 

以上で、「VPNルーターでSNMPトラップを使う」を終了します。

コメント

コメントを受け付けておりません。