目录

简介

什么是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需要配置一个用户名，该用户名被授权在所有已配置的EEM策略中运行所有CLI命令。  为此，请输入事件管理器会话cli用户名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

在路由器启动时启用调试

在路由器启动时启用调试；将调试更改为要启用的任意设置：

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脚本

- 系统日志“%CRYPTO-4-RECVD_PKT_MAC_ERR：”错误消息Ping Loss Over IPsec隧道故障排除

排除CPU使用率过高的故障

通常会发现，有时CPU利用率会在非常短的时间内出现峰值，有时甚至在不确定的时间。因此，在CPU使用率较高时运行需要运行的命令变得非常困难。此时，EEM脚本可能非常有用。设置CPU值，触发该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