几年前,学习网络的时候,有一个考点是思科的EEM,当时对这个EEM有很强烈的兴趣。时至今日,近期的现网业务也有类似的需求。研究华为产品手册发现,华为的OPS维护助手能完成同样的需求。
Cisco EEM
EEM是Cisco IOS的嵌入式事件管理器(Embeded Event Manager)的缩写,它提供了一种分布式的、可扩展的、可根据用户需求而灵活定制的,用于进行事件监控和故障恢复的机制。利用这种机制,当被监控的事件发生,或者是达到某个门限值时,EEM提供了进行消息报告以及采取相应动作的能力。
一个完整的EEM的操作被称作EEM Policy(EEM 策略),EEM Policy包括:定义监控的事件以及当被监控事件发生时所要执行的动作。
随着客户的网络规模日益庞大,单纯依靠现有网管架构下网管服务器与网络设备之间的主从模式,很难解决网络管理的成本、复杂性、扩展性以及出现故障时处理的及时性等等这些越来越有挑战性的问题。因此未来的网络管理需求要求网络设备本身具有更高的智能,能够根据各种不同的预定条件或网管人员的要求对网络设备本身进行不同的操作,减少网管人员的维护压力、提高对网络故障的响应速度。
Cisco的EEM,从根本上改变了网络设备的管理方式,使得网络设备由现有网络管理架构中的被动报告者和应答者,转变成为积极主动的参与者。让网络设备本身变得更为智能、灵活,帮助网络的运维人员更轻松、更及时、更准确地进行网络优化和故障排除。未来EEM的发展将继续延伸网络设备的智能,实现构建真正“自诊断、自愈合”的网络的目标。
EEM的整个架构由:EEM Server、Event Publisher(也称作:Event Detector)和Event Subscribers (EEM Policy)三个部分组成。其中,Event Publisher 负责监控和分析事件,并且在事件发生时,负责向EEM Server 通告事件的发生。而后,EEM Server触发EEM Policy 基于当前的系统状态以及所配置的具体动作,例如:执行IOS的命令行、发送SNMP Trap、发起主备引擎切换、产生Syslog信息等等,实施相应的恢复措施。
目前在Cisco的绝大多数路由交换产品平台上都提供了EEM的功能。
示例:
event manager applet track_pw318_frommaster event syslog pattern "Vl318 Grp 1 state Master" ## 设定需要监控的Syslog中的消息内容 action 1.0 cli command "en" ## 一旦检测到特定模式的消息出现,则开始执行一系列命令 action 2.0 cli command "config ter" 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"
HuaWei OPS
开放可编程系统OPS(Open Programmability System)是指设备通过提供统一的应用程序接口RESTful API(Representational State Transfer Application Programming Interface)来开放系统,使得系统具备可编程能力,可以运行第三方应用程序。
OPS允许用户或第三方开发商利用系统提供的基础功能,通过自主编程,开发和部署自己的网络应用程序,从而迅速地实现业务功能扩展和设备的智能化管理,降低运维成本和操作的复杂度。
传统的网络设备只能提供有限的功能和已知的服务,不具有动态性和灵活性,而随着网络的迅猛发展和不断普及,多样化、差异化的需求难以得到满足。部分用户要求设备提供不同层次的开放性,便于开发一些自定义的功能,部署一些私有的管理策略,实现自动化运维等功能,以降低管理成本。
为此,华为公司推出OPS,提供网络设备的开放可编程能力。OPS允许用户或第三方开发商利用系统开放的RESTful API,开发和部署自己的网络管理策略,从而迅速地实现业务功能扩展、自动部署和设备的智能化管理,降低运维成本和操作的复杂度。通过配置OPS,实现设备更加灵活、智能的管理及维护。
示例:
[~DeviceA] ops [~DeviceA-ops] assistant collect_health [*DeviceA-ops-assistant-collect_health] condition timer cron 0 1 * * * * [*DeviceA-ops-assistant-collect_health] execute 1 command display device > health.txt [*DeviceA-ops-assistant-collect_health] execute 1.5 command display health >> health.txt [*DeviceA-ops-assistant-collect_health] execute 2 command display ip routing-table >> health.txt [*DeviceA-ops-assistant-collect_health] execute 2.5 command display lldp neighbor brief >> health.txt [*DeviceA-ops-assistant-collect_health] execute 3 command tftp 10.2.1.1 put health.txt [*DeviceA-ops-assistant-collect_health] commit
在我们的业务场景中,OPS的主要作用是智能化业务的切换,而感知业务质量的方式主要是通过NQA功能。在NQA中,我们定义了对端的监测点以及下一跳路径,通过ICMP包成功率反馈NQA是否failed。OPS中使用condition关联NQA执行相应的操作。
命令如下:
ops assistant test execute 1 command sys execute 1.5 command interface gig 1/0/1 execute 2 command shutdown execute 3 command commit condition event feature nqa name TEST_FAILED TestName eq tcp