一种基于事件机制的分布式网络监控方法

文档序号:7781455阅读:259来源:国知局
专利名称:一种基于事件机制的分布式网络监控方法
技术领域
本发明涉及到计算机网络监控技术,具体涉及到一种基于事件机制的分布式网络监控系统中服务器端监控的方法。
背景技术
21世纪已进入计算机网络时代。计算机网络极大普及,计算机应用已进入更高层次,计算机网络成了计算机行业的一部分。新一代的计算机已将网络接口集成到主板上,网络功能已嵌入到操作系统之中,智能大楼的兴建已经和计算机网络布线同时、同地、同方案施工。随着通信和计算机技术紧密结合和同步发展,我国计算机网络技术飞跃发展。网络管理就是通过某种方式对网络进行管理,使网络能正常高效地运行。其目的很明确,就是使网络中的资源得到更加有效的利用。网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。网络管理经过一段时间的发展,已经有了长足的进步,各种各样的监控管理工具正在满足着不同的网络监控需求,其中,分布式网络监控是其中重要的一份子。分布式网络监控是将地理上分布的网络管理客户机与一组网络管理服务器相互作用,共同完成网络监控管理功能。在以前,由于网络环境中客户机比较少,相应的监控资源也比较少,采用的监控手段也比较简单,没有统一的规划,通常是通过多个进程分别对硬件和远程主机的软件资源进行监控;但是,随着自动办公化的发展,现在的企业,网络环境中客户机越来越多,网络环境越来越复杂,原有的监控系统已经不能满足增长的办公环境, 由于监控的随意性、网络环境的复杂性等原因,监控服务器上运行的监控进程越来越多,资源消耗越来越大,导致监控服务器运行速度越来越慢,造成监控系统不能及时响应客户机请求,监控系统不能及时获得客户机资源状态变化的情况,影响企业的正常运营。这个时候,如果还要继续使用原有的监控系统,企业只能增加监控服务器以分散每个监控服务器的的压力,或者重新购买监控软件以提高监控能力,而这两种方法都会给企业运营带来额外的成本。

发明内容
针对以上问题,本发明提供了一种基于监控服务器端的采用事件机制的通用分布式网络监控方法。所谓事件机制,是将所有的操作(主要分为两类,监控操作包括硬件设备监控、应用服务监控等;管理操作包括监控结果回收、日志记录等)通过统一的事件结构来表示,将所有的操作统一化,并通过事件优先级队列的方式使得监控进一步优化,使监控和管理一体化,实现对网络中硬件设备、操作系统、应用服务等软硬件设备的统一监控;并通过并行服务检查,按需调用监控进程,大大降低了监控服务器的负载,提高了单台监控服务器的监控性能,解决了增长的网络环境中服务器监控性能瓶颈问题,在不需要增加监控服务器数量、不需要重新购买新的监控软件的前提下,仍然能够对网络中的各种软硬件设备进行监控而不会出现遗漏或响应不及时的问题,大大提高了原有监控环境的生命周期。为了实现以上目标,本发明提供了以下技术方案
1)读取配置文件,加载事件处理模块;
2)监控初始化,创建各个事件,按照事件执行时间构建两个优先级的事件队列高优先级事件(检查事件以外的所有事件)队列,低优先级事件(检查事件)队列;
3)进入监控循环,根据优先级处理各个事件首先处理高优先级队列中的事件,其次处理低优先级队列事件;
4)监控系统收到停止信号,退出。本发明适用于分布式监控管理系统,跟传统的分布式监控系统相比,有以下两方面的优势
1)监控流程使用单进程循环方式,减少了系统中运行的进程数,降低了系统负载,提高了单机监控能力;
2)采用统一的数据结构——事件,简化了监控管理操作,节省了管理所需的系统资源,主要是存储空间。


图1是本发明适用的监控系统结构示意图; 图2是本发明分布式网络监控方法实现的流程图; 图3是本发明监控循环的流程图。
具体实施例方式为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。下面结合图1、图2和图3,通过具体实施方式
对本发明作进一步的详细描述
图1是本发明适用的分布式网络监控系统结构示意图。本方法主要针对监控服务器端,主要由两个部分构成事件处理模块和基于优先级的事件队列,事件处理模块用于对事件队列中的事件进行处理,而优先级队列则用于存储所有的事件。图2是本发明分布式网络监控方法实现的总流程图,图3是监控循环的流程图,具体的流程如下
1)读取配置文件,加载事件处理模块
在该方法中,首先要读取配置文件,配置文件主要用于定义所有监控内容和监控选项, 包括监控对象(分为主机host和服务service两类)、监控选项(主要包括检查间隔、结果回收间隔、日志记录间隔等内容)。主机是以实体存在的客户机,可以是硬件设备,也可以是一个操作系统;而服务则是存在于实体上的各个具体应用。读取配置文件的过程就是获取所有已经定义好的主机和服务,并读取所有的监控选项。此外,还需要初始化并加载事件处理模块,事件处理模块是一系列事件处理操作的集合,包括事件检查处理(参考步骤4)、外部命令处理(步骤3中针对EVENT_C0MMAND_ CHECK的处理)、结果回收(步骤3中针对EVENT_CHECK_REAPER的处理)以及日志处理(步骤3中针对EVENT_L0G_R0TATI0N的处理)等。2)监控初始化(init_event_l00p),根据配置文件内容创建事件,构建不同优先级的事件队列;
本发明所述的方法以事件机制为核心,因此所有的操作都是由事件触发器触发的。 init_event_loop用于创建事件并进行初始化工作,主要包括
利用从配置文件中读取的信息建立SChedulingjnfo表,该表的内容包括总的host 数、总的service数、单个host平均service数、平均service检查间隔、host检查总间隔、 service检查总间隔等;
为了降低系统负载,需要调整两个主机或者两个服务之间的检查间隔,以避免同一时间出现多个检查事件,本发明中采用平均值法计算得到最优的检查间隔,计算公式为最优 host 检查间隔(host_inter_check_delay)=总 host 检查间隔 / 总的 host 数,最优 service 检查间隔(service_inter_check_delay)=总 service 检查间隔 / 总的 service 数。创建事件,构建事件优先级队列。事件按照功能分为检查事件和非检查事件。检查事件分为两类
#define EVENT_SERVICE_CHECK 0 // 服务检查事件 #define EVENT_H0ST_CHECK 1 // 主机检查事件非检查事件包括所有检查事件之外的其他事件,主要事件定义如下 #define EVENT_C0MMAND_CHECK 3 //外部命令事件 #define EVENT_L0G_R0TATI0N 4 // 日志记录事件 #define EVENT_CHECK_REAPER 5 // 结果回收事件根据以上定义创建事件(event),定义如下。typedef struct event—struct{
int event_type; //事件类型,参考前面的事件类型定义 time_t run_time; //执行时间
int recurring; //是否安排下一次执行,检查事件一般都会重复执行 unsigned long event_interval ; //同一事件两次检查间隔,值来自配置文件 void *event_data; //事件数据内容
struct event_struct *next; struct event_struct *prev; } event; //事件定义
根据检查事件和非检查事件的分类,构建两种优先级队列高优先级队列(用于存放非检查事件)和低优先级队列(检查事件)。构建高优先级队列的逻辑计算得到非检查事件的执行事件(非检查事件的执行时间=当前时间+该事件的检查间隔),按照执行时间插入到队列中,并修改队列执行时间为队列首事件的执行时间;构建低优先级队列逻辑如下 初始化间隔基数(mult_factor)为0,读取最优主机检查间隔host_inter_check_delay, 依次读取各个已经定义好的主机,对于每个主机检查事件,其检查时间=当前时间+(host_ inter_check_delay*(mult_factor++));服务检查事件同样如此,读取最优服务检查间隔 (service_inter_check_delay),依次读取服务定义,其检查时间=当前时间+ (service,
5inter_check_delay* (mult_factor++)),根据检查时间的先后次序将所有检查事件插入到低优先级队列中,并修改低优先级执行事件为队列首事件的执行时间。通过这样的方式,可以将检查时间平均化,避免某一个时间段内检查事件过多,造成系统负载过高而影响检查效率。3)进入监控流程eVent_l00p,根据优先级处理各个事件,参考图3
事件队列创建之后,仅需监控流程eVent_l00p,event_loop以单个进程循环方式执行,流程如下
(1)高优先级队列判断,见图3中的Si。如果队列空或者当前时间小于队列执行时间, 则说明当前没有事件要执行,转入步骤(5);否则,转入步骤O)。(2)处理高优先级队列首事件,见图3中的S2。根据事件类型分别进行相应的处理,列举主要的非检查事件处理方法
针对EVENT_COMMAND_CHECK的处理检查调用的外部命令是否存在,如果存在,则调用相应的命令进行处理。主要的外部命令包括停止检测、调整下一次检查时间、启用或者禁用主机/服务通知等,这些外部命令都是可以根据自己的需求定义的; 针对EVENT_L0G_R0TATI0N的处理写日志记录到日志文件中; 针对EVENT_CHECK_REAPER的处理检查结果回收处理,包括将检查结果保存到文本文件中以及将结果通过数据库读写模块保存到数据库中。处理完之后,将该事件从队列中移除,并修改队列执行时间为当前队列首事件的执行时间。(3)检查是否需要安排下一次执行,见图3中的S3,如果不需要安排下一次执行, 转入步骤(1)继续执行下次循环;如果需要安排下一次执行,转入步骤G)。(4)安排下一次执行,见图3中的S4。修改事件执行时间为本次检查时间+检查间隔,按照事件执行时间插入到相对应的优先级队列中,并修改队列执行时间为当前队列首事件的执行时间。(5)低优先级队列判断,见图3中的S5。如果队列空或者当前时间小于队列执行时间,则说明当前没有事件要执行,转入步骤(1);否则,转入步骤(6)。(6)低优先级队列处理,见图3中的S6。从队列中取出首个检查事件进行处理,考虑到同一时间可能有多个检查事件,因此采取并发方式进行,主线程fork出一个子线程执行该次检查事件,见步骤(7)和步骤(8);之后,将该事件从队列中移除,修改低优先级队列执行时间为当前队列首事件的执行时间,转入步骤(3)。(7)子线程处理1,见图3中的S7。子线程从事件内容中获取检查内容(包括检查命令、检查对象等),根据检查内容设置超时并向相应主机发送监控命令,之后等待客户机反馈结果。(8)子线程处理2,见图3中的S8。如果超时或者收到客户机反馈结果,子线程创建回收事件,该事件的执行时间为当前时间,并将该事件按照执行时间的顺序插入到高优先级队列中,并结束该次检查。4)退出
监控过程会在幻中循环,直到收到用户发送来的结束信号,监控系统退出,监控过程结束。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于事件机制的分布式网络监控方法,其特征在于,包括以下步骤1)读取配置文件,加载事件处理模块;2)监控初始化,创建监控事件,构建不同优先级的事件队列;3)进入监控循环,根据优先级处理各个事件首先处理高优先级队列中的事件,其次通过并发方式处理低优先级队列事件;4)退出。
2.如权利要求1所述的方法,其特征在于步骤1)中需要从配置文件中获得创建事件所需要的监控对象内容以及监控选项。
3.如权利要求1所述的方法,其特征在于步骤2)中的初始化工作包括得到监控对象的信息内容,通过计算得到各个数据信息,创建核心数据结构事件,并在此基础上构建不同优先级的事件队列。
4.如权利要求1所述的方法,其特征在于步骤3)要中的高优先级队列中的事件是指监控事件以外的其他事件,包括监控回收事件、日志处理事件;低优先级事件是指所有的监控事件,包括主机监控事件以及服务监控事件两类。
全文摘要
本发明实现了一种基于事件机制的分布式网络监控方法,包括各种初始化操作;构建基于优先级的事件队列;根据优先级对事件进行处理;获取网络中客户机的状态信息等。本发明适用于当前流行的分布式远程监控系统架构,采用统一的事件机制,节省了存储空间,优化了管理方式;通过并行检查机制,提高了监控系统的监控能力,最终提高了原有分布式监控系统在增长的网络环境下的使用寿命,可以有效减少企业硬件成本,较好地保证了正常的网络环境。
文档编号H04L29/08GK102457578SQ201110422600
公开日2012年5月16日 申请日期2011年12月16日 优先权日2011年12月16日
发明者兰雨晴, 刘艳彬, 夏颖, 张永军, 王建慧 申请人:中标软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1