一种基于SNMP网管协议实时采集并处理消息的方法
技术领域
本发明涉及移动通信网中性能管理***,具体地说是一种基于SNMP网管协议实时采集并处理消息的方法。
背景技术
SNMP(简单网络管理协议),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理***,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。该协议是互联网工程工作小组(IETF,Internet Engineering Task Force)定义的internet协议簇的一部分。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
在移动通信中,网管***负责采集网元性能数据并进行运营保障,由于网络规模及运作方式限制,性能数据粒度多为15分钟以上至小时级别,并有一个周期左右的数据延时,对网络关键节点网元难以实现分钟以下粒度的监控。表现为导致网元割接失败后,无法及时发现,造成网络中断。针对企业VIP用户设备、组网关键节点设备、骨干网设备等热点设备,运营商重点关注,当热点设备出现问题,会出现关键节点网元性能数据延误的问题。
如何能够实现无需通过第三方***采集网元数据,而且将数据粒度精确到一秒以内,克服现有网管***数据分钟级别数据时延,避免关键节点网元性能数据延误的问题是目前现有技术中存在的技术问题。
发明内容
本发明的技术任务是针对以上不足之处,提供一种基于SNMP网管协议实时采集并处理消息的方法,来解决如何能够实现无需通过第三方***采集网元数据,而且将数据粒度精确到一秒以内,克服现有网管***数据分钟级别数据时延,避免关键节点网元性能数据延误的问题。
本发明解决其技术问题所采用的技术方案是:一种基于SNMP网管协议实时采集并处理消息的方法,该方法包括如下步骤:
(1)、用户通过WEB页面下达业务模型的初始采集任务;
(2)、SNMP采集任务管理模块接收初始采集任务后,将初始采集任务翻译为网元设备采集任务或网元实例化端口采集任务,使用SNMP协议对网元设备或网元实例化端口进行SNMP数据采集;
(3)、SNMP采集任务管理模块将采集到数据按照业务模型分组打包,采用HTTP协议反向推送的方法通过数据推送通道将数据推送到任务管理模块;
(4)、任务管理模块对数据进行处理后,采用HTTP协议反向推送的方法通过数据推送通道将数据推送至监控页面;
(5)、通过监控页面采用HTTP协议反向推送的方法将数据推送至客户端;
其中,数据从采集到客户端,时延在一秒以内;客户端作为SNMP数据消费者,采用基于树的数据源引用计数器,实现SNMP采集任务管理模块对同一网元的数据消费不会进行多次采集,降低网元监控压力。
作为优选,所述引用计数器包括SNMP指标计数器、网元计数器、用户数计数器以及用户任务计数器;
其中,SNMP指标计数器的参数如下:
(a)、计数器粒度:实体对应的指标;
(b)、增加一个指标,SNMP指标计数器自增;
(c)、删除一个指标,SNMP指标计数器自减;
(d)、多线程共享对象,实现线程同步;
(e)、0->1,1->0触发更改监控任务;
网元计数器的参数如下:
(a)、计数器粒度:网元;
(b)、维护网元、通道映射关系;
(c)、多线程共享对象,实现线程同步;
(d)、0->1触发创建监控任务;
(e)、1->0触发释放监控任务,与IP关联的IP#OID计数器自减;
用户数计数器用于记录用户数;
用户任务计数器用于记录用户发起的任务。
更优地,所述引用计数器用于:
(1)、对同一设备的不同监控任务应当对监控指标进行合并,下发合并后的监控任务;
(2)、对同一设备的新下发监控任务,合并新任务的监控指标和已有监控指标,下发合并后的监控任务,采集框架模块支持更新给定IP采集OID的操作;
(3)、对同一设备的所有监控指标都取消后,应释放对此设备的采集任务,采集框架模块支持取消给定IP采集任务的操作;
(4)、支持全局用户数控制,全局同时运行秒级监控任务的用户<30,全局监控的设备数<=1000;
(5)、支持用户任务数控制;
(6)、通道(channel)连接时间控制。
更优地,所述引用计数器的工作过程包括如下步骤:
(1)、用户操作,进行监控任务的新建/更改/关闭;
(2)、进行监控任务的拆解,将监控任务拆分为{IP1,IP2,···,IPN},{OID1,OID2,···,OIDN};
(3)、对拆分后的任务进行线程同步;
(4)、线程同步后包括以下情况:
①、OID集元素增加,未更改IP集;然后,下发更改采集任务,增加相应任务的OID;
②、OID集元素减少,未更改IP集;然后,下发更改采集任务,删除相应任务的OID;
③、OID集元素增加,IP集元素增加;然后,下发新建采集任务;
④、OID集元素减少,IP集元素减少;然后,下发释放采集任务;
(5)、完成采集任务的增加/删除/新建/释放后,形成最终采集任务。
作为优选,所述采用HTTP协议反向推送的方法通过数据推送通道进行数据推送包括如下步骤:
(1)、数据接收端主动发起HTTP请求;
(2)、发送端接收HTTP请求,判断发送端是否存有数据:
①、若发送端存有数据,则执行步骤(4);
②、若发送端未存有数据,则执行步骤(3);
(3)、当发送端未存有数据时,发送端继续等待,并判断等待是否超时:
①、若等待未超时,则继续等待;
②、若等待超时,则执行步骤(4);
(4)、发送端返回HTTP请求数据,并进行数据处理,同时接收端接收数据后,立即发起新的HTTP请求开始新一轮数据等待,实现数据实时处理。
作为优选,所述SNMP数据采集包括如下步骤:
(1)、采集框架模块接收采集任务;
(2)、采集服务模块的socket端口监听;
(3)、采集框架模块箱采集服务模块下发启动/更新/停止采集任务;
(4)、采集服务模块轮询线程池,查找采集相应IP线程;
(5)、采集服务模块向采集线程模块传递参数对象,包含动作类型:启动/更新/停止,附加参数:MOtypeID、MOentityID、IP、OID、指标OID公式;
(6)、采集线程模块设置状态为更新;
(7)、采集线程模块每次采集前查询状态标识;
(8)、采集线程模块的状态为更新,读取参数对象;
(9)、采集线程模块执行相应任务。
更优地,所述采集服务模块的推送服务的过程如下:
(1)、采集服务模块启动采集任务;
(2)、采集服务模块读取采集服务状态标识;
(3)、采集服务模块读取采集IP集、OID集;
(4)、采集服务模块调用SNMP4j采集到SNMP代理模块;
(5)、SNMP代理模块返回采集数据到采集服务模块;
(6)、采集服务模块进行数据打包;
(7)、采集服务模块将打包完的数据推送到推送服务模块。
本发明的一种基于SNMP网管协议实时采集并处理消息的方法和现有技术相比,具有以下有益效果:
1、本发明针对企业VIP用户设备、组网关键节点设备、骨干网设备等热点设备,运营商重点关注,当热点设备出现问题,需要定位时,能够支撑秒级的SNMP数据监控,并具备秒级的超低时延要求,采用SNMP协议直接连接网元设备进行采集,网元数据传输采用HTTP协议反向推送,而且数据源按需分配,防止重复采集,数据从采集到客户端展示,端到端时延在一秒以内;本发明无需通过第三方***采集网元数据,数据粒度精确到一秒以内,克服现有网管***数据分钟级别数据时延,避免关键节点网元性能数据延误的情况发生;
2、本发明对关键网元使用SNMP协议实现1秒内的采集粒度,使用HTTP反向推送,将时延控制在1秒以内,保证数据时效性,数据由包含了SNMP Agent的采集模块实时推送到服务端,经过业务处理后实时推送到WEB页面,客户端作为SNMP数据消费者,基于树的数据源引用计数器,实现对同一网元的数据消费不会造成多次采集,降低网元监控压力;
3、本发明无需第三方网管,对关键网元进行监控,监控时效性可达到1秒,网元性能状态即时感知,减少决策失误;本发明随Across PM产品分布式部署到各个现场,不可单独使用。
故本发明设计合理、结构简单、使用方便、一物多用等特点,因而,具有很好的推广使用价值。
附图说明
下面结合附图对本发明进一步说明。
附图1为一种实时采集并处理SNMP消息的示意图;
附图2为引用计数器工作示意图;
附图3为引用计数器的流程图;
附图4为通过数据推送通道进行数据推送的流程图;
附图5为数据推送通道复用的流程图;
附图6为SNMP数据采集过程示意图;
附图7为附图6中采集服务模块工作过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如附图1所示,本发明的一种基于SNMP网管协议实时采集并处理消息的方法,该方法包括如下步骤:
(1)、用户通过WEB页面下达业务模型的初始采集任务;
(2)、SNMP采集任务管理模块接收初始采集任务后,将初始采集任务翻译为网元实例化端口采集任务,使用SNMP协议对网元实例化端口进行SNMP数据采集;
(3)、SNMP采集任务管理模块将采集到数据按照业务模型分组打包,采用HTTP协议反向推送的方法通过数据推送通道将数据推送到任务管理模块;
(4)、任务管理模块对数据进行处理后,采用HTTP协议反向推送的方法通过数据推送通道将数据推送至监控页面;其中,任务管理模块又叫监控任务管理模块。
(5)、通过监控页面采用HTTP协议反向推送的方法通过数据推送通道将数据推送至客户端;
其中,数据从采集到客户端,时延在一秒以内;客户端作为SNMP数据消费者,采用基于树的数据源引用计数器,实现SNMP采集任务管理模块对同一网元的数据消费不会进行多次采集,降低网元监控压力。
引用计数器包括SNMP指标计数器、网元计数器、用户数计数器以及用户任务计数器;
其中,SNMP指标计数器的参数如下:
(a)、计数器粒度:实体对应的指标;
(b)、增加一个指标,SNMP指标计数器自增;
(c)、删除一个指标,SNMP指标计数器自减;
(d)、多线程共享对象,实现线程同步;
(e)、0->1,1->0触发更改监控任务;
网元计数器的参数如下:
(a)、计数器粒度:网元;
(b)、维护网元、通道映射关系;
(c)、多线程共享对象,实现线程同步;
(d)、0->1触发创建监控任务;
(e)、1->0触发释放监控任务,与IP关联的IP#OID计数器自减;
用户数计数器用于记录用户数;
用户任务计数器用于记录用户发起的任务。
如附图2所示,引用计数器用于:
(1)、对同一设备的不同监控任务应当对监控指标进行合并,下发合并后的监控任务;
(2)、对同一设备的新下发监控任务,合并新任务的监控指标和已有监控指标,下发合并后的监控任务,采集框架模块支持更新给定IP采集OID的操作;
(3)、对同一设备的所有监控指标都取消后,应释放对此设备的采集任务,采集框架模块支持取消给定IP采集任务的操作;
(4)、支持全局用户数控制,全局同时运行秒级监控任务的用户<30,全局监控的设备数<=1000;
(5)、支持用户任务数控制;
(6)、通道连接时间控制。
如附图3所示,引用计数器的工作过程包括如下步骤:
(1)、用户操作,进行监控任务的新建/更改/关闭;
(2)、进行监控任务的拆解,将监控任务拆分为{IP1,IP2,···,IPN},{OID1,OID2,···,OIDN};
(3)、对拆分后的任务进行线程同步;
(4)、线程同步后包括以下情况:
①、OID集元素增加,未更改IP集;然后,下发更改采集任务,增加相应任务的OID;
②、OID集元素减少,未更改IP集;然后,下发更改采集任务,删除相应任务的OID;
③、OID集元素增加,IP集元素增加;然后,下发新建采集任务;
④、OID集元素减少,IP集元素减少;然后,下发释放采集任务;
(5)、完成采集任务的增加/删除/新建/释放后,形成最终采集任务。
数据推送通道的功能包括:
(1)、监控任务为用户创建的临时任务,当页面关闭或用户取消后消失,不做持久化处理,每次使用需创建;
(2)、监控组件缓存一个配置对象用于创建页面赋初值和复制监控任务;
(3)、前端监听页面关闭、用户取消事件并发送至后台,不做具体业务逻辑处理;
(4)、提供统一的第三方跳转接口,定义所需参数;
(5)、HTTP通道复用:HTTP连接数限制,每一监控客户端的1-5个监控组件共用同一通道连接;
(6)、为实现通道共用,在每条数据到达后对每个窗口进行通知,由窗口自行决定是否为所需数据;
(7)、依靠引用计数器映射关系,实现推送数据分发;
(8)、监控任务下发完成创建相应的采集任务;
(9)、监控对象为最小任务单元;
(10)、监控对象不可重复采集,多个采集任务重复采集同一IP会造成推送的数据冗余。
其中,通过数据推送通道进行数据推送实现方法,包括如下步骤:
(1)、服务器端会阻塞请求直到有数据传递或超时才返回;
(2)、客户端响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接;
(3)、当客户端处理接收的数据、重新建立连接时,服务器端可能有新的数据到达;这些信息会被服务器端保存直到客户端重新建立连接,客户端会一次把当前服务器端所有的信息取回;
(4)、数据包格式,c_timestamp为采集时间戳
如附图4所示,所述采用HTTP协议反向推送的方法通过数据推送通道进行数据推送包括如下步骤:
(1)、数据接收端主动发起HTTP请求;
(2)、发送端接收HTTP请求,判断发送端是否存有数据:
①、若发送端存有数据,则执行步骤(4);
②、若发送端未存有数据,则执行步骤(3);
(3)、当发送端未存有数据时,发送端继续等待,并判断等待是否超时:
①、若等待未超时,则继续等待;
②、若等待超时,则执行步骤(4);
(4)、发送端返回HTTP请求数据,并进行数据处理,同时接收端接收数据后,立即发起新的HTTP请求开始新一轮数据等待,实现数据实时处理。
如附图5所示,多监控实体共享同一数据传输通道,降低网络压力,数据包未到齐时进行数据等待,待同一信道上监控实体到期后进行数据发送,若超时则返回数据并告知实体异常。
数据推送通道复用包括如下步骤:
(1)、数据推送通道进行数据订阅,组件1需要数据为{indicator1,indicator2,······,indicatorn};
(2)、某时刻所需数据indicator1,页面缓存{空缺,indicator2,······,空缺};
(3)、某时刻所需数据indicator2,页面缓存{indicator1,indicator2,······,空缺};
(4)、判断是否组装完成:
①、如果组装完成,则数据推送通道复用{indicator1,indicator2,······,indicatorn};
②、如果组装未完成,则执行步骤(5);
(5)、判断是否等待超时:
①、如果未等待超时,则数据推送通道复用{indicator1,indicator2,······,空缺};
②、如果等待超时,则执行步骤(6);
(6)、判断包含的indicator下一刻数据是否来到:
①、如果来到,则通信信道复用{indicator1,indicator2,······,空缺};
②、如果未来到,则返回步骤(2)。
如附图6所示,SNMP数据采集包括如下步骤:
(1)、采集框架模块接收采集任务;
(2)、采集服务模块的socket端口监听;
(3)、采集框架模块箱采集服务模块下发启动/更新/停止采集任务;
(4)、采集服务模块轮询线程池,查找采集相应IP线程;
(5)、采集服务模块向采集线程模块传递参数对象,包含动作类型:启动/更新/停止,附加参数:MOtypeID、MOentityID、IP、OID、指标OID公式;
(6)、采集线程模块设置状态为更新;
(7)、采集线程模块每次采集前查询状态标识;
(8)、采集线程模块的状态为更新,读取参数对象;
(9)、采集线程模块执行相应任务。
SNMP数据采集的功能为:采集粒度为监控对象、采集时长一秒内以及数据实时推送。
SNMP数据采集失败后的处理方法为:
(1)、SNMP Agent设置采集超时时间与重复次数;
(2)、单IP采集失败数大于配置数停止采集此IP;
(3)、采集数据缺失补负值(-1);
(4)、前端接收到负值指标后,弹出提示,交由用户处理;采集线程中需维护IP与采集失败计数器的映射可以使用Map实现。
其中,初始线程数默认为CPU核数×4。采集服务监听到采集框架下发任务后,封装一个参数对象,遍历采集线程Thread ID,调用采集线程api传递参数对象,并置标识位为更新状态,采集线程每次采集前读取标识位,更新状态下读取采集对象参数,更新采集OID。
若为新建任务,按照IP后三位与当前线程数取余,查找采集线程,加入到采集线程任务中。
SNMP数据采集失败后的处理方法为:
(1)、Snmp Agent设置采集超时时间与重复次数;
(2)、采集数据缺失补负值;
(3)、前端接收到负值指标后,弹出提示,交由用户处理。
如附图7所示,采集服务模块的推送服务的过程如下:
(1)、采集服务模块启动采集任务;
(2)、采集服务模块读取采集服务状态标识;
(3)、采集服务模块读取采集IP集、OID集;
(4)、采集服务模块调用SNMP4j采集到SNMP代理模块;
(5)、SNMP代理模块返回采集数据到采集服务模块;
(6)、采集服务模块进行数据打包;
(7)、采集服务模块将打包完的数据推送到推送服务模块。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。