このドキュメントでは、Embedded Event Manager(EEM)ツールを使用して、ネットワーク上の、他の方法では特定しにくい問題や通常のトラブルシューティングが可能な一定の頻度では発生しない問題をトラブルシューティングする方法について説明します。
EEM は、Cisco IOS®、XR、NX-OS をカスタマイズするために設計された柔軟なシステムです。EEM を使用して、タスクを自動化したり、小規模な機能強化を行なったり、回避策を作成したりできます。
EEM スクリプトには次の 2 つの目的があります。
いずれの場合も、EEM スクリプトを使用するには、スクリプトをトリガーするために使用できるトリガー イベントを特定する必要があります。
ここでは、問題のトラブルシューティングに役立つ EEM スクリプトの例を示します。
30 秒ごとにフラッシュ内のファイルに対してコマンドを実行します。show コマンドは、実行する必要があるあらゆるものに適用できます。
event manager applet show-rtp-streams
event timer watchdog name timer time 30
action 0.5 cli command "enable"
action 1.0 cli command "show clock | append flash:filename.txt"
action 2.0 cli command "show ip cache flow | append flash:filename.txt"
action 3.0 cli command "show voip rtp conn" | append flash:filename.txt"
action 4.0 cli command "show call active voice br" | append flash:filename.txt"
同様に、ウォッチドッグを使用して X 秒ごとにルータのログを FTP サーバまたはフラッシュにダンプできます。
event manager applet dump-log
event timer watchdog name timer time 1800
action 0.5 cli command "enable"
action 1.0 cli command "show log | append ftp://user:pass@10.1.1.1/debugs.txt"
また、UNIX デバイスの cronjob 内で expect スクリプトを使用して、X 分ごとにログを取り出すこともできます。これを EEM でプッシュする代わりに、username と password をログイン クレデンシャルの適切な文字列に置き換えてください。
> dhcp-64-102-154-159:Desktop sholl$ cat login-script
> #!/usr/bin/expect
>
> set timeout 60
> spawn telnet -N 10.1.1.1
>
> # Uncomment these if you are prompted for a username by the router
> # expect "login:"
> # send "username\n"
> expect "Password: "
> send "password\n"
> expect ">"
> send "en\n"
> expect "Password:"
> send "password\n"
> expect "#"
> send "term len 0\n"
> expect "#"
> send "sh log\n"
> expect "#"
> send "exit\n"
> send "exit\n"
>
> dhcp-64-102-154-159:Desktop sholl$ crontab -e
>
> # min hour mday month wday command
> 0 4 0 0 0 Desktop/login-script >> outputlog.txt
ルータのブート時にデバッグを有効にします。debug を有効化したい機能に変更してください。
event manager applet en-debugs-at-boot
event timer cron cron-entry "@reboot"
action 1.0 cli command "enable"
action 2.0 cli command "debug isdn q931"
action 2.2 cli command "debug isdn q921"
action 2.4 cli command "debug isdn standard"
ログがいっぱいになるのを防ぐため、特定のデバッグ メッセージが検出されたらデバッグを無効にします。その後、EEM スクリプト(自体)を無効にします。このパターンを各自の状況に一致する内容に変更してください。
event manager applet disableDebugsOnError
event syslog occurs 1 pattern "Endpt not available"
action 3.0 cli command "enable"
action 3.2 cli command "un all"
action 3.3 cli command "config t"
action 3.4 cli command "no event manager applet disableDebugsOnError"
action 3.5 cli command "end"
通常、VPN に関する問題のほとんどはトラブルシューティングに EEM を必要としませんが、状況によっては、問題が一時的なものであるために必要な情報を入手しにくいことがあります。次のようなケースが該当します。
予期しないタイミングで非常に短い時間 CPU 使用率が急激に上昇することは、よくあります。したがって、CPU使用率が高い場合に実行する必要があるコマンドを実行することは非常に困難になります。これは、EEMスクリプトが非常に便利な場合です。スクリプトがトリガーされコマンド出力を取得する CPU 値を設定します。
次はスクリプトの例であり、各自の要件に合わせてカスタマイズする必要があります。
event manager applet capture_cpu_spike
event snmp oid 1.3.6.1.4.1.9.2.1.56 get-type next entry-op ge entry-val 60
exit-time 10 poll-interval 1
action 001 syslog msg "CPU Utilization is high"
action 002 cli command "en"
action 003 cli command "show proc cpu sort | append flash:cpuinfo"
action 004 cli command "show proc cpu sort | append flash:cpuinfo"
action 005 cli command "show stack 236 | append flash:cpuinfo"
action 006 cli command "show call active voice brief | append flash:cpuinfo"
action 007 cli command "show voip rtp connection | append flash:cpuinfo"
action 008 cli command "show isdn call-rate | append flash:cpuinfo"
action 009 cli command "show log | append flash:cpuinfo"
action 010 cli command "show mem stat his | append flash:cpuinfo"
action 011 cli command "show proc cpu his | append flash:cpuinfo"
action 012 cli command "show align | append flash:cpuinfo"
上記のスクリプトは、CPU 使用率を検出してコマンドを実行するだけでなく、その出力を flash:または他の任意の場所に追加します。これは、CPU 使用率が 60 % を超えたときにトリガーされます。これを各自の要件に応じてカスタマイズしてください。ただし、スクリプトを導入する前に、ファイル システムの空き領域を十分に考慮する必要があります。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
10-Oct-2013 |
初版 |