一种利用插件化实现MIB中特殊OID采集和解析的方法
技术领域
本发明涉及一种利用插件化实现MIB中特殊OID采集和解析的方法。适用于所有基于简单网络管理协议SNMP,在IP网络(基于TCP/IP协议组建的网络)中对网络节点进行采集、监控和管理的场景。
背景技术
在信息技术高速发展和普及的今天,网络通信作为信息传输的主要通道已经渗透到当今每一个行业和业务领域,成为重要的生产力因素。而网络通信服务是由大量的底层网络设备比如交换机、路由器等提供的,这些网络设备的工作状态的好坏直接影响网络通信服务质量。所以对网络设备提供高效的采集、监控和管理能力,对提升网络通信质量是至关重要。
为了能够对不同厂商的不同网络设备的提供统一管理,规避由于差异化带来的管理成本和管理风险,国际标准化组织针对网络设备的管理提出SNMP(Simple networkmanagement protocol)协议和MIB(Management Information Base)规范。该协议自上世纪九十年代初提出后,得到迅猛发展,成为1990年之后TCP/IP网络中应用最为广泛的网络管理协议,成为高效管理大型网络的有力工具。
国际标准化组织为了让网络设备厂商遵循MIB规范标准,虽然制定了很多标准化文件比如SNMPv2-MIB,IF-MIB等,来指导和约束网络设备厂商,但是由于各种各样的原因,网络设备中还是或多或少总是存在一些不规范的MIB使用情况,造成MIB中一些特殊的对象标识符OID(Object identifier)无法正常采集,而这些OID就被称之为特殊OID。
网络设备MIB库中的特殊OID的业务场景可参考如下场景(但不限于下列场景):
1)OID数据类型定义与真实数值类型不符,按SNMP方式采集之后,必须进行特殊转换才能正常使用。比如OID数据类型定义为String(字符类型),但是其数值内容为字符串“1.23876E-10”、“5076.435”等,必须转换为数字类型的数值,才能参与后继各种业务计算。
2)OID命名规则采用厂商不规范语法,对采集后的OID数据值进行解析时,必须按厂商特定规则来解析才能获取正确的数值。比如OID命名为1.2.3.4.5.instance1.instance2. instance3,而按国际标准化组织要求,一个OID中只能有一个实例,对于含多个实例的OID在进行解析时,只能按特定规则来解析,才能获取正确的数据。
3)OID的数值在采集时,需要根据其他OID的数值作为条件判断的依据,才能获取到正确的数值,比如:if 1.3.6.1.2.1.1.1 = "APNNOS" then SnmpGet 1.3.6.1.2.1.1.7,如上述公式所示,需要先采集1.3.6.1.2.1.1.1,并且当该OID值为“APNNOS”时,才能再去采集1.3.6.1.2.1.1.7的数值。
综上所述,网络设备中普遍存在特殊OID的业务场景,这些特殊业务场景有很多种,无法一一列举。要一劳永逸解决此类特殊OID采集的问题,就需要一种全新的网络设备MIB库的OID数据采集机制,能适应各种各样特殊OID采集要求,并且这种采集机制必须是灵活的,可扩展的,具备普遍的适应性。
基于此,本发明设计了一种利用插件化实现MIB中特殊OID采集和解析的方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的利用插件化实现MIB中特殊OID采集和解析的方法。
本发明是通过如下技术方案实现的:
一种利用插件化实现MIB中特殊OID采集和解析的方法,其特征在于:包括SNMP采集模块,在所述SNMP采集模块的程序插件目录下部署第三方插件;所述SNMP采集模块不仅能够自动加载第三方插件,还能依据网络设备的厂商,设备型号和采集OID,判断当前OID是否为特殊OID,如果是特殊OID,则调用第三方插件采集和解析特殊OID。
本发明利用插件化实现MIB中特殊OID采集和解析的方法,包括以下步骤:
(1)收集网络设备的MIB库中特殊OID的业务规则,并基于该业务规则,梳理对应的采集规则和解析规则,为后继第三方插件开发提供理论基础;
(2)按照网络设备的厂商、设备型号,版本和OID的层次,来命名和创建JAR文件;
(3)基于步骤(1)中收集采集规则和解析规则,对Java类中的采集接口、解析接口,进行编码实现,将采集和解析业务逻辑转化为程序逻辑的方式来实现,完成第三方插件的开发;
(4)将开发完成的第三方插件,按照厂商,设备型号和OID目录层次进行部署,该部署只需要将JAR文件拷贝到对应目录下即可,不需要进行额外的注册;
(5)所述SNMP采集模块在进行网络设备采集时,自动判断当前OID是否为特殊OID,如果是特殊OID,则自动加载第三方插件JAR包,并动态构建Java类,然后调用Java类中的采集接口和解析接口,实现对网络设备中MIB库中特殊OID采集和解析。
所述第三方插件是按照厂商,设备型号,版本和OID的命名方式生成的JAR格式的特殊OID的采集解析插件文件,并且按照规范要求生成JAVA类定义,然后根据厂商提供的特殊OID采集和解析的业务规则,编写相应的采集和解析算法逻辑,最后将开发完成的插件JAR文件部署到SNMP采集程序的插件目录下;
所述SNMP采集模块在部署第三方插件JAR文件时,按照厂商,设备型号,版本和OID的目录层次结构来部署插件JAR文件;所述第三方插件文件部署完成之后,所述SNMP采集模块在执行采集任务时,根据要采集设备的厂商,型号和OID,自动加载第三方插件JAR文件,动态创建Java类,然后分别调用Java类的采集接口进行采集,采集完成之后,再调用解析接口进行解析;完成当前设备的采集解析之后,动态释放当前Java类,再根据下一个要采集的设备的厂商,型号和OID,动态创建其他插件的Java类进行采集和解析,如此类似循环,直至完成所有设备的采集解析。
本发明的有益效果是:该利用插件化实现MIB中特殊OID采集和解析的方法,通过采用插件化实现MIB库中特殊OID采集和解析的机制,完美地解决了特殊OID采集的问题,并且能适应各种各样特殊OID采集要求,具有很强灵活性、可扩展性,具备普遍的适应性。
具体来说,该利用插件化实现MIB中特殊OID采集和解析的方法,相比现有技术具有以下优势:
1)利用插件化技术,可以将SNMP采集程序与特殊OID的采集和解析的逻辑分离出来,避免在SNMP的采集程序中由于写入各种各样的特殊OID的采集和逻辑,导致SNMP的采集程序的整体逻辑非常庞大,并且难以维护。
2)利用插件化技术,当需要对接新接入网络设备时,第三方开发者只需要关注插件本身开发是否满足规范要求,以及插件本身的采集和解析的业务逻辑是否正确,无需关注SNMP采集程序。同时这种插件化技术,提供了一种开放的技术标准,对于第三方来开发OID的采集插件,具有非常有益的指导作用。
3)利用插件化技术,实现采集和解析的Java类的动态创建和加载,可以极大的提高MIB库中特殊OID的采集和解析效率,这种机制远比在SNMP采集程序中通过写条件判断语句的方式来执行采集和解析的方式要效率高很多。
附图说明
附图1为本发明的第三方插件开发规范示意图;
附图2为本发明的第三方插件部署示意图;
附图3为本发明的第三方插件工作示意图;
附图4为本发明利用插件化实现MIB中特殊OID采集和解析流程示意图;
附图5为本发明针对电信网络的性能管理***的SNMP采集的插件化采集流程示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该利用插件化实现MIB中特殊OID采集和解析的方法,包括SNMP采集模块,在所述SNMP采集模块的程序插件目录下部署第三方插件;所述SNMP采集模块不仅能够自动加载第三方插件,还能依据网络设备的厂商,设备型号和采集OID,判断当前OID是否为特殊OID,如果是特殊OID,则调用第三方插件采集和解析特殊OID。和插件包
本发明利用插件化实现MIB中特殊OID采集和解析的方法,包括以下步骤:
(1)收集网络设备的MIB库中特殊OID的业务规则,并基于该业务规则,梳理对应的采集规则和解析规则,为后继第三方插件开发提供理论基础;
(2)按照网络设备的厂商、设备型号,版本和OID的层次,来命名和创建JAR文件;
(3)基于步骤(1)中收集采集规则和解析规则,对Java类中的采集接口、解析接口,进行编码实现,将采集和解析业务逻辑转化为程序逻辑的方式来实现,完成第三方插件的开发;
(4)将开发完成的第三方插件,按照厂商,设备型号和OID目录层次进行部署,该部署只需要将JAR文件拷贝到对应目录下即可,不需要进行额外的注册;
(5)所述SNMP采集模块在进行网络设备采集时,自动判断当前OID是否为特殊OID,如果是特殊OID,则自动加载第三方插件JAR包,并动态构建Java类,然后调用Java类中的采集接口和解析接口,实现对网络设备中MIB库中特殊OID采集和解析。
所述第三方插件是按照厂商,设备型号,版本和OID的命名方式生成的JAR格式的特殊OID的采集解析插件文件,并且按照规范要求生成JAVA类定义,然后根据厂商提供的特殊OID采集和解析的业务规则,编写相应的采集和解析算法逻辑,最后将开发完成的插件JAR文件部署到SNMP采集程序的插件目录下;
所述SNMP采集模块在部署第三方插件JAR文件时,按照厂商,设备型号,版本和OID的目录层次结构来部署插件JAR文件;所述第三方插件文件部署完成之后,所述SNMP采集模块在执行采集任务时,根据要采集设备的厂商,型号和OID,自动加载第三方插件JAR文件,动态创建Java类,然后分别调用Java类的采集接口进行采集,采集完成之后,再调用解析接口进行解析;完成当前设备的采集解析之后,动态释放当前Java类,再根据下一个要采集的设备的厂商,型号和OID,动态创建其他插件的Java类进行采集和解析,如此类似循环,直至完成所有设备的采集解析。
如附图1所示,第三方插件Java类名为snmp. service. Collect Parse Service;Java类JAR包命名为厂商-型号-版本-OID.jar;插件采集接口为get Oid List();插件解析接口为resolve Oid List()。
以电信领域综合网络管理的性能管理***(PM***)为例,来说明本发明的具体应用。性能管理***是用于对电信网络全网承载的网络负荷管理为基础的管理***。管理内容包括网络负荷的流量流向管理、网络运行的效率管理、网络资源的配置使用情况管理、呼叫失败的原因分析等,涉及到海量的业务数据的采集、汇总、存储和查询等环节。其中,性能管理***对传输网中网络设备的采集,绝大多数情况下,都是使用SNMP方式进行数据采集,因此就会面临网络设备MIB库中有特殊OID的问题。对于此类问题采用插件化来实现MIB库中特殊OID的采集和解析,能够做到完美解决。
如附图5所示,针对电信网络的性能管理***的SNMP采集使用插件采集的具体实施方式如下:
步骤201:收集要接入的网络设备的厂商、设备型号、版本,和对应MIB库信息,并从局方获取局方用户希望监控的网络设备的指标信息,通过分析指标与MIB库中OID业务映射含义,从而确定每一种网络设备型号,需要采集那些OID,从而形成OID采集列表。
步骤202:基于201步骤中,从收集到的OID采集列表中,识别出需要特殊采集的OID,并从厂商处获取这些特殊OID的业务定义和具体业务应用方式,从而整理出来这些OID的采集规则和解析规则,为后继编写插件提供理论指导,这一步骤是非常关键的。
步骤203:基于202步骤获取到OID采集规则和解析规则,编写采集插件,该插件必须遵循第三方OID采集插件的开发规范,完成采集插件的开发之后,最终形成JAR文件。
步骤204:将开发完成的JAR文件,按照厂商、设备型号、OID目录层次结构,部署到SNMP采集程序的插件目录下。
通过上面的实施方式,就完成利用插件化实现网络设备中MIB库中特殊OID的采集和解析的实施,后继SNMP采集程序在执行采集任务时,会自动识别特殊OID,并动态创建和调用对应插件,实现特殊OID的采集和解析,无需人工参与。