本文档介绍如何使用嵌入式事件管理器(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
在路由器启动时启用调试;将调试更改为您想要启用的内容:
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
|
初始版本 |