论文部分内容阅读
[摘要]局域网监控系统是确保局域网内各个应用系统能够正常运行,减少企业损失和运营成本的重要系统,而监控服务器是监控系统的核心部分,本文介绍了一种较高效的局域网监控系统服务器的设计和实现方案。
[关键词]局域网监控系统;监控服务器;触发项;
中图分类号:TN948.7 文献标识码:A 文章编号:1009-914X(2013)05-0285-01
1.局域网监控系统概述
局域网监控系统,是用来监控局域网内各个服务器状态的一套系统,通过该系统可以全面掌握局域网内的各个业务主机的运行状况。发现问题及时报警,减少企业损失。
监控系统最重要的部分就是监控服务器,本文先对各个服务器的架构进行了介绍,然后给出本监控系统监控服务器的详细设计。
2.监控系统服务器端设计
2.1一般性服务器的设计架构
2.1.1单进程服务器模型
該模型是最原始的一种服务器模型,整个服务进程是单进程的,必须要等到上一次的任务执行完毕才能接收下一次的连接。其缺点是无法同时为两个以上的客户端服务,效率很低。
2.1.2每个连接开启一个进程模型
该模型为每一个连接开启一个新的进程进行服务,这样就可以为多个客户端服务了。但是此模式是当有连接后才创建进程,由于创建进程需要消耗一定的系统资源,而且效率不一定高,所以此模式只能用于对实时性要求不高的场合。
2.1.3进程池服务器模型
先创建多个服务进程,然后等待客户端的连接,当有客户端连接时,从服务进程池中选取一个进程为之服务。服务完成后,回收进程资源,重新创建一个新的服务进程并把新的进程重新放到进程池中等待下一次的客户端连接。
2.2局域网监控系统架构的选择
该系统的系统架构和其他服务器系统架构不同,采用多进程,多任务同时进行的模型来处理请求。考虑到客户端可能有多个,而且我们预先不知道对端的地址,显然采用被动模式不可行,所以我们的服务器端采用了主动模式,有服务器端向各个被监控设备主动发起连接请求,发送监控命令。
2.3监控服务器功能设计
监控服务器是局域网监控系统的核心部分,根据功能可以分为以下几个模块:
2.3.1监控模块
该模块主要功能是,定时从数据库中获取需要监控的设备信息,读取该设备的各个监控项和该监控项预先定义好的命令关键字。
监控项读取完成后,判断被监控主机的监控客户端是否存活,若存活则向该被监控主机发起连接请求,连接建立完成后,通过通讯协议模块一次一条命令的把监控命令发送给被监控主机。
监控服务器获取被监控端发送过来的监控结果,按照配置处理监控结果,并把结果保存到数据库中。监控结果也可能是错误信息。
2.3.2数据库自动维护模块
该模块的主要功能是对监控得到的历史数据进行自动维护,自动删除过期的历史数据,历史数据的保存期限可以由管理员设定。通过该模块的数据库自动维护功能,防止数据库所占磁盘空间过大而使系统崩溃。
2.3.3主动发现模块
主动发现模块主要针对没有安装agent的被监控设备,该模块会定时的从数据库中轮询主动发现的配置项,并根据配置的主机的IP地址自动的对这些主机进行探测,取得并保存探测结果。该模块可以检测到被监控主机是否开启了相应服务等信息。
2.3.4报警服务模块
该模块主要功能是:从数据库中轮询配置的报警项,并根据配置执行相应的报警动作。
2.3.5通讯协议模块
通讯协议模块是监控服务器和Agent模块进行通信的协议。监控服务器需要通过通信协议来发送监控命令给ggent模块,同样Agent模块要通过通信协议把监控结果传送给监控服务器模块。
通讯协议的设计基本设计思路是:监控服务器通过TCP协议向Agent端发起连接,Agent模块检查发起连接端的合法性才接受连接请求和监控命令,Agent模块再通过通信协议把结果传回给监控服务器。
2.4监控服务器详细设计
监控服务器是监控系统的核心模块,监控功能主要由该模块实现。
监控服务器是运行在Linux系统上的一个多进程多任务程序。该程序首先要检查数据库是否运行正常,若不正常后来所有任务都无法进行。接下来创建监听套接字,并为每个任务分配进程编号。通过每个任务的进程数,计算出总的进程数。
每个任务的进程数可能有多个,这样可以提高系统的处理效率。我们设计的监控服务器和一般的监控服务器不同,因为我们要探测被测主机是否存活,所以我们是作为主动发起连接的一方。通过每个进程的计数来创建任务进程。
2.4.1监控模块详细设计
监控模块主要完成监控命令的发送并获取监控结果的任务。监控的结果可能是异常的,假如要监控的主机宕机或由于网络问题而无法连通,那么我们将无法与该主机建立连接。在和客户端建立连接或发送监控命令时,会启动一个定时器,若在固定时间内没有返回,我们认为主机无法连通。将把结果记录为主机无法到达。
2.4.2数据库自动维护详细设计
数据库自动维护模块的工作流程,首先进行初始化处理,然后连接数据库,如连接不成功则返回再次连接直到成功,连接数据库成功后进行清除历史触发项数据、历史检测数据、历史报警数据和历史日志数据,然后将处理结果保存到数据库中后进行下一次操作。
数据库主动维护模块主要是监控数据库是否运行正常,并对历史数据进行清理等操作。
2.4.3主动发现模块详细设计
主动发现模块主要是为监控没有安装监控客户端的主机而设计的。若被监控主机没有安装监控客户端,我们可以通过主动送探测包的方式,来探测被监控主机是否存活以及某个服务是否工作正常。
2.4.4报警服务模块详细设计
报警服务模块主要完成报警任务。而事件发生执行某个报警动作,是由管理员事先配置好后保存到数据库中的。报警服务进程会定时的在数据库中查询某个报警项是否符合报警条件,若符合根据配置采取相应的动作,然后继续轮询。提供声音和电子邮件的报警方式。
2.4.5通讯协议模块详细设计
协议的具体数据结构由协议头、数据长度和数据字段组成。
我们自己定义了一个协议头数据,该协议头包括该系统的版本信息,身份确认信息等内容。
通讯协议模块的流程为首先初始化数据,然后发送协议头、数据长度和数据,并判断所发信息是否正确,若不正确则直接返回,若正确就进行下一步工作,接收协议头、读取数据长度、读取返回数据,并处理和保存。
3.优缺点以及改进方案
本系统的优点是,由于本系统服务器实际上是主动发起方,所以服务器端的负载较小,即使主机数量很多,也不会影响服务器系统的正常运行。
本系统的缺点是在时间上,若主机数量很大,而检测项目又很多,则没轮询完一次需要的时间可能稍长一些,这样使得界面更新的速度可能变慢。
本系统可以采用多线程并发的方式,也就是每次获取多个监控项目,并创建多个线程来共同完成,每个线程完成一个或多个监控项,完成后把监控结果保存到数据库中。利用这种多监控项多线程的处理方式,减少获取监控结果的间隔时间,提高监控效率。
[关键词]局域网监控系统;监控服务器;触发项;
中图分类号:TN948.7 文献标识码:A 文章编号:1009-914X(2013)05-0285-01
1.局域网监控系统概述
局域网监控系统,是用来监控局域网内各个服务器状态的一套系统,通过该系统可以全面掌握局域网内的各个业务主机的运行状况。发现问题及时报警,减少企业损失。
监控系统最重要的部分就是监控服务器,本文先对各个服务器的架构进行了介绍,然后给出本监控系统监控服务器的详细设计。
2.监控系统服务器端设计
2.1一般性服务器的设计架构
2.1.1单进程服务器模型
該模型是最原始的一种服务器模型,整个服务进程是单进程的,必须要等到上一次的任务执行完毕才能接收下一次的连接。其缺点是无法同时为两个以上的客户端服务,效率很低。
2.1.2每个连接开启一个进程模型
该模型为每一个连接开启一个新的进程进行服务,这样就可以为多个客户端服务了。但是此模式是当有连接后才创建进程,由于创建进程需要消耗一定的系统资源,而且效率不一定高,所以此模式只能用于对实时性要求不高的场合。
2.1.3进程池服务器模型
先创建多个服务进程,然后等待客户端的连接,当有客户端连接时,从服务进程池中选取一个进程为之服务。服务完成后,回收进程资源,重新创建一个新的服务进程并把新的进程重新放到进程池中等待下一次的客户端连接。
2.2局域网监控系统架构的选择
该系统的系统架构和其他服务器系统架构不同,采用多进程,多任务同时进行的模型来处理请求。考虑到客户端可能有多个,而且我们预先不知道对端的地址,显然采用被动模式不可行,所以我们的服务器端采用了主动模式,有服务器端向各个被监控设备主动发起连接请求,发送监控命令。
2.3监控服务器功能设计
监控服务器是局域网监控系统的核心部分,根据功能可以分为以下几个模块:
2.3.1监控模块
该模块主要功能是,定时从数据库中获取需要监控的设备信息,读取该设备的各个监控项和该监控项预先定义好的命令关键字。
监控项读取完成后,判断被监控主机的监控客户端是否存活,若存活则向该被监控主机发起连接请求,连接建立完成后,通过通讯协议模块一次一条命令的把监控命令发送给被监控主机。
监控服务器获取被监控端发送过来的监控结果,按照配置处理监控结果,并把结果保存到数据库中。监控结果也可能是错误信息。
2.3.2数据库自动维护模块
该模块的主要功能是对监控得到的历史数据进行自动维护,自动删除过期的历史数据,历史数据的保存期限可以由管理员设定。通过该模块的数据库自动维护功能,防止数据库所占磁盘空间过大而使系统崩溃。
2.3.3主动发现模块
主动发现模块主要针对没有安装agent的被监控设备,该模块会定时的从数据库中轮询主动发现的配置项,并根据配置的主机的IP地址自动的对这些主机进行探测,取得并保存探测结果。该模块可以检测到被监控主机是否开启了相应服务等信息。
2.3.4报警服务模块
该模块主要功能是:从数据库中轮询配置的报警项,并根据配置执行相应的报警动作。
2.3.5通讯协议模块
通讯协议模块是监控服务器和Agent模块进行通信的协议。监控服务器需要通过通信协议来发送监控命令给ggent模块,同样Agent模块要通过通信协议把监控结果传送给监控服务器模块。
通讯协议的设计基本设计思路是:监控服务器通过TCP协议向Agent端发起连接,Agent模块检查发起连接端的合法性才接受连接请求和监控命令,Agent模块再通过通信协议把结果传回给监控服务器。
2.4监控服务器详细设计
监控服务器是监控系统的核心模块,监控功能主要由该模块实现。
监控服务器是运行在Linux系统上的一个多进程多任务程序。该程序首先要检查数据库是否运行正常,若不正常后来所有任务都无法进行。接下来创建监听套接字,并为每个任务分配进程编号。通过每个任务的进程数,计算出总的进程数。
每个任务的进程数可能有多个,这样可以提高系统的处理效率。我们设计的监控服务器和一般的监控服务器不同,因为我们要探测被测主机是否存活,所以我们是作为主动发起连接的一方。通过每个进程的计数来创建任务进程。
2.4.1监控模块详细设计
监控模块主要完成监控命令的发送并获取监控结果的任务。监控的结果可能是异常的,假如要监控的主机宕机或由于网络问题而无法连通,那么我们将无法与该主机建立连接。在和客户端建立连接或发送监控命令时,会启动一个定时器,若在固定时间内没有返回,我们认为主机无法连通。将把结果记录为主机无法到达。
2.4.2数据库自动维护详细设计
数据库自动维护模块的工作流程,首先进行初始化处理,然后连接数据库,如连接不成功则返回再次连接直到成功,连接数据库成功后进行清除历史触发项数据、历史检测数据、历史报警数据和历史日志数据,然后将处理结果保存到数据库中后进行下一次操作。
数据库主动维护模块主要是监控数据库是否运行正常,并对历史数据进行清理等操作。
2.4.3主动发现模块详细设计
主动发现模块主要是为监控没有安装监控客户端的主机而设计的。若被监控主机没有安装监控客户端,我们可以通过主动送探测包的方式,来探测被监控主机是否存活以及某个服务是否工作正常。
2.4.4报警服务模块详细设计
报警服务模块主要完成报警任务。而事件发生执行某个报警动作,是由管理员事先配置好后保存到数据库中的。报警服务进程会定时的在数据库中查询某个报警项是否符合报警条件,若符合根据配置采取相应的动作,然后继续轮询。提供声音和电子邮件的报警方式。
2.4.5通讯协议模块详细设计
协议的具体数据结构由协议头、数据长度和数据字段组成。
我们自己定义了一个协议头数据,该协议头包括该系统的版本信息,身份确认信息等内容。
通讯协议模块的流程为首先初始化数据,然后发送协议头、数据长度和数据,并判断所发信息是否正确,若不正确则直接返回,若正确就进行下一步工作,接收协议头、读取数据长度、读取返回数据,并处理和保存。
3.优缺点以及改进方案
本系统的优点是,由于本系统服务器实际上是主动发起方,所以服务器端的负载较小,即使主机数量很多,也不会影响服务器系统的正常运行。
本系统的缺点是在时间上,若主机数量很大,而检测项目又很多,则没轮询完一次需要的时间可能稍长一些,这样使得界面更新的速度可能变慢。
本系统可以采用多线程并发的方式,也就是每次获取多个监控项目,并创建多个线程来共同完成,每个线程完成一个或多个监控项,完成后把监控结果保存到数据库中。利用这种多监控项多线程的处理方式,减少获取监控结果的间隔时间,提高监控效率。