EEM
- 格式:pdf
- 大小:36.43 KB
- 文档页数:5
EEM Cisco网络设备的智能工具1.1 EEM的定义EEM是Cisco IOS的嵌入式事件管理器(Embeded Event Manager)的缩写,它提供了一种分布式的、可扩展的、可根据用户需求而灵活定制的,用于进行事件监控和故障恢复的机制。
利用这种机制,当被监控的事件发生,或者是达到某个门限值时,EEM提供了进行消息报告以及采取相应动作的能力。
一个完整的EEM的操作被称作 EEM Policy (EEM 策略),EEM Policy包括:定义监控的事件以及当被监控事件发生时所要执行的动作。
随着客户的网络规模日益庞大,单纯依靠现有网管架构下网管服务器与网络设备之间的主从模式,很难解决网络管理的成本、复杂性、扩展性以及出现故障时处理的及时性等等这些越来越有挑战性的问题。
因此未来的网络管理需求要求网络设备本身具有更高的智能,能够根据各种不同的预定条件或网管人员的要求对网络设备本身进行不同的操作,减少网管人员的维护压力、提高对网络故障的响应速度。
Cisco的EEM,从根本上改变了网络设备的管理方式,使得网络设备由现有网络管理架构中的被动报告者和应答者,转变成为积极主动的参与者。
让网络设备本身变得更为智能、灵活,帮助网络的运维人员更轻松、更及时、更准确地进行网络优化和故障排除。
未来EEM的发展将继续延伸网络设备的智能,实现构建真正“自诊断、自愈合”的网络的目标。
目前在Cisco的绝大多数路由交换产品平台上都提供了EEM的功能。
1.2 EEM的应用场景EEM的使用能够给客户带来诸多优势,下面通过一些具体的场景来介绍EEM的应用: 1. 每隔几天路由器就会丢失掉它所有的OSPF邻居关系EEM可以通过过滤Syslog中的OSPF邻居Up/Down消息,来触发执行EEM 动作:打开OSPF的debug开关、保存debug显示结果和OSPF的相关show信息,而且主动执行Clear IP OSPF Process命令尝试重新建立OSPF邻居关系2. 每隔几个星期,在下午2点左右,路由器的可使用内存就会即将耗尽EEM可以监控路由器内存的使用情况,当可用内存小于某个预定值时,触发执行EEM 动作:保存当前内存的显示结果并且将保存的结果发送到指定的Syslog server。
如果当前路由器中存在主备引擎,那么也可以配置EEM在此时执行主动的引擎主备切换(HA)操作3. 路由器有两条冗余的链路连接到其他网络设备,但是其中一条链路上的误码率很高,但是该链路在物理上还保持UP的状态网管管理员可以编写EEM Policy,监控接口上的报文计数器,并且设定当接口上的误码率高于某个预定值时,通过EEM主动shutdown掉该接口,使得网络流量通过另外一条正常链路传输,并且发送SNMP Trap给后台的网管服务器4. 网络管理员要求每周六凌晨12点时更新接口的ACL表项网管管理员可以编写EEM Policy,在某个固定时间执行EEM Policy设定的动作:从指定的web server上获取最新的ACL表项,并且将新的ACL表项应用到指定接口上。
5. 某路由器与其他一台路由器通过HSRP协议成为某网段的冗余网关,初始时该路由器为主,其他路由器为备,当该路由器的CPU利用率达到某值之后,自动降低路由器HSRP组的优先级,让其他路由器变成主运行维护人员可以编写EEM Policy,监控HSRP 主路由器的CPU利用率,当高于某设定值时,执行EEM动作:降低HSRP组的优先级,使原本为备的路由器变成HSRP的主路由器。
EEM所带来的灵活功能和适用的场景远不止此,通过编写适当的EEM Policy,能够有效提高网络维护人员的工作效率,降低网络的维护成本,实现前所未有的智能网管。
2 EEM技术分析2.1 EEM的基本架构EEM的整个架构由:EEM Server、Event Publisher(也称作:Event Detector)和Event Subscribers (EEM Policy)三个部分组成。
其中,Event Publisher 负责监控和分析事件,并且在事件发生时,负责向EEM Server 通告事件的发生。
而后,EEM Server触发EEM Policy 基于当前的系统状态以及所配置的具体动作,例如:执行IOS的命令行、发送SNMP Trap、发起主备引擎切换、产生Syslog信息等等,实施相应的恢复措施。
以下是EEM的架构示意图,其中核心和基础是Event Detector,正是由于Event Detector能够灵活地监控各种事件,才使得EEM具有强大的功能。
作为事件使用者的EEM Policy可以通过两种方式来进行定义:一种是编写Applet小程序,这种基于Applet 编写的EEM Policy可以通过命令行方式来配置,适合于比较简单的EEM操作;而另外一种是通过编写TCL脚本程序来实现,这种方式更适合于需要复杂逻辑判断、功能需求比较灵活的EEM操作。
2.2 Event Detector在EEM Version2中定义了如下Event Detector :1. Cisco IOS CLI通过预先定义的正则表达式来过滤IOS 命令行上的输入内容,当输入的命令与正则表达式匹配时,则触发执行EEM Policy2. Cisco IOS Counter当指定的IOS的Counter超过了设定的门限值时,则触发执行EEM Policy3. Interface Counter当某个指定物理接口的接口统计超过了设定的门限值时,则触发执行EEM Policy4. OIR当主控引擎、接口板或者其他的服务模块发生热插拔时,则触发执行EEM Policy5. Redundancy Framework在主备引擎同步过程中发生的Redundancy Framework事件,可触发执行EEM Policy;或者当主备引擎之间反复互相切换时,也可触发执行EEM Policy6. SNMP监控标准的SNMP的MIB 对象,并且根据设定的匹配内容或某个SNMP 计数器(Counter)门限值,触发执行EEM Policy7. Syslog通过预先定义的正则表达式来过滤Syslog中的输出内容,当Syslog的输出内容与正则表达式匹配时,则触发执行EEM Policy,可产生事件的条件包括:当一条Syslog消息被匹配时;或,当N条Syslog消息被匹配时;或,当某时间段内N条Syslog消息被匹配时;8. Cisco IOS Timers当IOS中的Timer计时发生时,触发执行EEM Policy。
可以使用的IOS中的Timer有:1)绝对日期的定时器,可以设定指定日期、时间触发执行EEM Policy;2)倒计时定时器,可以设定计时器当倒计为0时,触发执行EEM Policy;3)看门狗定时器,可以设定当定时器倒计为0并恢复原值重新计数时,触发执行EEM Policy;4)CRON定时器,利用UNIX标准的CRON定时器来触发执行EEM Policy9. Watchdog system monitor当IOS中的CPU利用率或Memory利用率超过某个设定门限值时,触发执行EEM Policy 10. EEM Application Specific利用一个EEM Policy 来调用另外一个EEM Policy11. Object TrackingEEM能够与Enhanced Object tracking 技术集成在一起,通过增强的对象跟踪的结果,比如:路由的可达性,来触发执行EEM Policy12. GOLD基于设备硬件的在线诊断结果来触发执行EEM Policy13. “None”通过执行IOS命令行“event manager run”来触发执行EEM Policy……2.3 EEM Policy2.3.1 基于Applet的EEM Policy基于Applet的EEM Policy编写有三个步骤:注册EEM Policy、配置Event的触发条件(Trigger)和定义EEM的Action。
下面通过一个例子来说明Applet的编写过程:## 编写名称为:track_pw318_frommaster 的Applet,并根据监控syslog中的VRRP的消息内容,触发执行一## 系列配置命令event manager applet track_pw318_frommasterevent syslog pattern “Vl318 Grp 1 state Master“ ## 设定需要监控的Syslog中的消息内容action 1.0 cli command “en“ ## 一旦检测到特定模式的消息出现,则开始执行一系列action 2.0 cli command “config ter“ ## IOS的配置命令 action 3.0 cli command "no ps pwc318“action 4.0 cli command "int gi 4/14"action 4.1 cli command "shut"action 4.2 cli command "no shut“2.3.2 基于 TCL Script的EEM Policy编写基于TCL脚本的EEM Policy相对有些复杂,首先编程者需要在TCL脚本编辑器中预先编写好TCL脚本程序,而后需要在路由器的flash或者disk上创建用于保存TCL脚本程序的目录,并且通过TFTP/FTP方式将编写好的TCL脚本程序拷贝到该目录下,并将TCL脚本程序注册到EEM中,TCL脚本程序所需使用到的变量参数也要提前在EEM中进行注册。
TCL脚本程序完成注册后,当设定的事件触发时,EEM会自动调用并执行该TCL脚本程序。
下面通过一个例子来说明用TCL脚本编写EEM Policy的过程: # 编写TCL Script,根据监控syslog中的Link down消息,触发执行一系列配置命令“ ::cisco::eem::event_register_syslog pattern "%LINK-3-UPDOWN“ # 定义EEM的Event Detectornamespace import ::cisco::eem::*# 引用EEM的名字空间,这条语句是必须的namespace import ::cisco::lib::*#引用EEM的名字空间,这条语句是必须的array set arr_einfo [event_reqinfo]# 得到EEM事件触发后的返回结果set msg $arr_einfo(msg)# 根据事件的触发,执行一系列的IOS 配置命令if [catch {cli_open} result] {error $result $errorInfo} else {array set cli1 $result }if [catch {cli_exec $cli1(fd) "en"} result] {error $result $errorInfo }if [catch {cli_exec $cli1(fd) "configure terminal"} result] {error $result $errorInfo }if [catch {cli_exec $cli1(fd) "interface g1/1"} result] {error $result $errorInfo }if [catch {cli_exec $cli1(fd) "no shut"} result] {error $result $errorInfo }2.3.3 EEM的ActionEEM Policy的另外一个重要组成部分就是EEM的动作(Action),通过设定EEM的动作,EEM Policy的编写者可以赋予网络设备某种程度的智能,网络设备将按照EEM Policy编写者的要求,主动地执行一系列操作。