本文說明如何使用嵌入式事件管理器(EEM)工具來排除網路上某些難以固定點的問題,或者這些問題沒有允許正常故障排除的正常頻率。
EEM是專為自定義Cisco IOS®、XR和NX-OS而設計的靈活系統。EEM允許您自動執行任務、執行次要增強功能並建立變通辦法。
EEM指令碼有兩個用途:
在任何一種情況下,為了使用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"
您還可以在cronjob內的UNIX裝置上使用Expect指令碼每隔X分鐘提取一次日誌。而不是通過EEM來推動;將使用者名稱和密碼替換為正確的登入憑據字串:
> 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利用率並運行命令,還將輸出追加到快閃記憶體中:或者選擇其他地點。當CPU使用率超過60 %時會觸發此命令。這應根據您的要求定製。但是,在部署指令碼之前,應小心考慮檔案系統的可用空間。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
10-Oct-2013 |
初始版本 |