目錄

簡介

什麼是EEM?

何時使用EEM?

EEM指令碼示例

每30秒運行一次命令，以便在快閃記憶體中檔案

使用監視程式每X秒將路由器日誌轉儲到FTP伺服器或快閃記憶體中

在路由器啟動時啟用調試

禁用特定消息後的調試

疑難排解

排除VPN故障

排除CPU使用率高故障

相關資訊

簡介

本文說明如何使用嵌入式事件管理器(EEM)工具來排除網路上某些難以固定點的問題，或者這些問題沒有允許正常故障排除的正常頻率。

什麼是EEM?

EEM是專為自定義Cisco IOS®、XR和NX-OS而設計的靈活系統。EEM允許您自動執行任務、執行次要增強功能並建立變通辦法。

何時使用EEM?

EEM指令碼有兩個用途：

- 為了幫助排除故障 — 當您需要排除間歇性故障時，EEM指令碼可能特別有用。它們使您能夠自動執行show命令輸出和debug命令的收集過程，從而捕獲否則將極難收集的資料。

- 幫助提供解決方案 — 在技術援助中心(TAC)執行根本原因分析時需要臨時解決方法的情況下。例如，如果問題間歇性出現，但介面重置可以解決問題。只要問題開始，就可以使用EEM指令碼觸發此操作。

在任何一種情況下，為了使用EEM指令碼，必須確定隨後可用於觸發指令碼的觸發事件。

EEM指令碼示例

本節包含幫助排除故障的EEM指令碼示例。

每30秒運行一次命令，以便在快閃記憶體中檔案

每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"

附註：某些快閃檔案系統（例如bootflash或slotX）不支援附加作業。這不是EEM的限制，而是線性快閃記憶體檔案系統的限制。隨機訪問檔案系統，例如diskX或案頭交換機（3560、3750等）上的快閃記憶體支援附加到檔案。

附註：如果裝置配置為進行身份驗證、授權和記帳(AAA)命令授權，則需要使用授權運行所有已配置EEM策略中所有CLI命令的使用者名稱來配置EEM。  為此，請輸入event manager session cli username USER，其中USER是相應的AAA使用者。

使用監視程式每X秒將路由器日誌轉儲到FTP伺服器或快閃記憶體中

同樣地，可以使用監視程式將路由器日誌每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故障

雖然大多數形式的VPN問題通常不需要EEM才能進行故障排除，但在某些情況下，該問題可能是暫時性的，因而難以獲得必要的資訊。相關案例包括：

- 利用EEM對VPN上的IGP波動/中斷進行故障排除

- 用於排除由無效安全引數索引引起的隧道擺動故障的EEM指令碼

- Syslog「%CRYPTO-4-RECVD_PKT_MAC_ERR：」錯誤消息，其中包含Ping Loss Over IPsec隧道故障排除

排除CPU使用率高故障

通常發現，有時候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 %時會觸發此命令。這應根據您的要求定製。但是，在部署指令碼之前，應小心考慮檔案系統的可用空間。

相關資訊

- Cisco IOS網路管理命令參考

- 思科支援社群 — EEM範本

- 技術支援與文件 - Cisco Systems