本文档介绍如何使用嵌入式事件管理器(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值,触发该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 |
初始版本 |