设备监控方法、装置、计算机设备及存储介质与流程

文档序号:16685994发布日期:2019-01-22 18:19阅读:164来源:国知局
设备监控方法、装置、计算机设备及存储介质与流程

本发明涉及计算机技术领域,具体涉及一种设备监控方法、装置、计算机设备及存储介质。



背景技术:

对于设备运维监控技术,往往需要对成千上万个设备进行监控,同时,每一个设备要进行监控的指标成百上千。运维监控本身要解决的问题就是如何从这成千上万的设备上采集成百上千类的数据。

目前,对于单个被监控设备而言,有些设备并不能对监控请求提供特别高的负载能力支持。比如ibmx3250服务器,其管理接口就不能支持频繁的调用和并发的调用,一旦出现这种情况,该管理口就会有一段时间停止响应,在这段时间内,监控系统将完全无法获取设备状态信息。

又比如某些业务系统,单是保障其自身业务的运行,就已经将近耗尽业务所在服务器的计算资源和带宽资源,此时如果再通过大量并发的方式对该业务进行监控,则很有可能导致资源枯竭,业务宕机。

另一方面,对整个it环境而言,所有监控数据需要通过被监控设备的网卡,经由数级网络设备(包括交换机、网闸、防火墙等)传输到监控服务器上。可能对单个被监控设备而言,其监控所占带宽不足为虑,而通过数以千计的设备重重叠加,其网络流量就不可小觑了。

发明人在研究过程中发现,现有技术中对于被监控设备的监控往往采用并发式监控,这使得带宽占用较大,具体地带宽占用计算如下:

设单个监控指标采集监控数据的平均字节数为p,总监控指标数为o,总监控设备数为d,平均监控时间间隔为ta,监控脚本每执行一次耗时为tp,则平均带宽占用b为:

b=(o*d)/(ta/tp)*p/tp

具体举例来说:假设设备数为1000台,监控指标数约为100,每次监控采集的平均字节数为10k,即10kb,每一次监控耗时1秒钟,平均监控时间间隔为5分钟(300秒),则带宽占用为:

100*1000/(300/1)*10/1=3333.333(kb/s)

经计算,现有技术中一次监控所得到的监控数据占用带宽很大,容易导致被监控设备资源枯竭,业务宕机等问题。



技术实现要素:

本发明要解决现有技术中在进行设备监控时监控数据传输占用带宽大的问题,从而提供一种设备监控方法、装置、计算机设备及存储介质。

本发明的一方面,提供了一种设备监控方法,包括:获取被监控设备的监控信息和监控脚本集合,其中,所述监控信息为对所述被监控设备进行监控所需的信息,所述监控脚本集合包括多个用于实现监控任务的执行的监控脚本;根据所述监控信息和所述监控脚本集合生成监控序列,所述监控序列中定义有所述监控脚本的执行顺序序列;采用串行的方式按所述监控序列所定义的顺序依次执行所述监控脚本,以对所述被监控设备进行监控。

可选地,采用串行的方式按所述监控序列所定义的顺序依次执行所述监控脚本包括:将监控任务按照第一间隔时间存入到监控任务表中,其中,所述监控任务表中设置有所述监控序列中每个序列的执行时间,相邻两个序列的执行时间间隔为所述第一间隔时间;读取所述监控任务表中的执行时间,并获取当前时间;如果所述当前时间与读取到的执行时间一致,则启动所述读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,如果所述当前时间与读取到的执行时间的时间差超过第二间隔时间,则启动所述读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,启动所述读取到的执行时间对应的监控任务,执行对应的监控脚本包括:将所述监控信息传递至所述对应的监控脚本;执行所述对应的监控脚本,采集所述被监控设备的数据。

可选地,根据所述监控信息和所述监控脚本集合生成监控序列包括:监控调度程序创建监控任务;所述监控调度程序将所述监控信息传送给所述监控任务;所述监控任务加载监控序列生成器,并将所述监控信息传送至所述监控序列生成器;所述监控序列生成器将所述监控信息和所述监控脚本集合组合成所述监控序列。

可选地,所述监控序列的顺序为:性能监控脚本、进程监控脚本、端口监控脚本、磁盘健康度监控脚本、sqlserver数据库监控脚本、oracle数据库监控脚本、mysql数据库监控脚本、tomcat中间件监控脚本、weblogic中间件监控脚本、websphere中间件监控脚本、iis监控脚本、网卡监控脚本。

可选地,所述监控信息包括:设备信息、子网信息、设备报警忽略信息、全局报警忽略信息、监控数据采集端口和授权信息。

本发明的另一方面,提供了一种设备监控装置,包括:获取单元,用于获取被监控设备的监控信息和监控脚本集合,其中,所述监控信息为对所述被监控设备进行监控所需的信息,所述监控脚本集合包括多个用于实现监控任务的执行的监控脚本;合成单元,用于根据所述监控信息和所述监控脚本集合生成监控序列,所述监控序列中定义有所述监控脚本的执行顺序序列;执行单元,用于采用串行的方式按所述监控序列所定义的顺序依次执行所述监控脚本,以对所述被监控设备进行监控。

可选地,执行单元具体用于执行的步骤包括:将监控任务按照第一间隔时间存入到监控任务表中,其中,所述监控任务表中设置有所述监控序列中每个序列的执行时间,相邻两个序列的执行时间间隔为所述第一间隔时间;读取所述监控任务表中的执行时间,并获取当前时间;如果所述当前时间与读取到的执行时间一致,则启动所述读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,如果所述当前时间与读取到的执行时间的时间差超过第二间隔时间,则启动所述读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,所述执行单元还用于将所述监控信息传递至所述对应的监控脚本;执行所述对应的监控脚本,采集所述被监控设备的数据。

可选地,所述合成单元具体用于执行的步骤包括:监控调度程序创建监控任务;所述监控调度程序将所述监控信息传送给所述监控任务;所述监控任务加载监控序列生成器,并将所述监控信息传送至所述监控序列生成器;所述监控序列生成器将所述监控信息和所述监控脚本集合组合成所述监控序列。

本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述设备监控方法的步骤。

本发明的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述设备监控方法的步骤。

根据本发明实施例,通过生成监控序列,其定义有监控脚本的执行顺序,在对被监控设备进行监控时,采用串行的方式依次顺序执行监控脚本,这样可以避免现有技术中在对被监控设备进行一次监控时占用带宽较大的问题,降低对被监控设备的瞬时带宽压力。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中设备监控方法的流程图;

图2为本发明实施例中设备监控方法的程序结构的示意图;

图3为本发明实施例中设备监控装置的示意图;

图4为本发明实施例计算机设备的硬件结构示意图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

本发明实施例提供了一种设备监控方法,如图1所示,方法包括:

步骤s101,获取被监控设备的监控信息和监控脚本集合,其中,监控信息为对被监控设备进行监控所需的信息,监控脚本集合包括多个用于实现监控任务的执行的监控脚本。

监控信息可以包括:设备信息、子网信息、设备报警忽略信息、全局报警忽略信息、监控数据采集端口和授权信息。

监控脚本可以按照监控任务进行划分,例如,性能监控脚本、端口监控脚本、进程监控脚本等。

步骤s102,根据监控信息和监控脚本集合生成监控序列,监控序列中定义有监控脚本的执行顺序序列。

具体地,可以根据设备信息读取监控数据采集端口和授权信息,并将设备信息、设备报警忽略信息、全局报警忽略信息、监控脚本集合组合成监控序列。

步骤s103,采用串行的方式按监控序列所定义的顺序依次执行监控脚本,以对被监控设备进行监控。

根据本发明实施例,通过生成监控序列,其定义有监控脚本的执行顺序,在对被监控设备进行监控时,采用串行的方式依次顺序执行监控脚本,这样可以避免现有技术中在对被监控设备进行一次监控时占用带宽较大的问题,降低对被监控设备的瞬时带宽压力。

作为对比,发明实施例所述方法在进行监控时,带宽占用计算公式为:

b’=d’/(ta’/tp’)*p’/tp’

其中,单个监控指标采集监控数据的平均字节数为p’,总监控设备数为d’,监控序列的调度时间间隔,tp的含义为监控序列的执行时间,b’为平均带宽占用。

进一步地举例,设备数仍然为1000台,监控指标数为100,每一个监控指标耗时1秒钟,在一个序列中,100个监控指标顺序执行耗时100秒,平均监控时间间隔为5分钟(300秒),则占用带宽为:

1000/(300/100)*10/100=33(kb/s)

很明显,在满足相同的监控需求情况下,采用本发明实施例的设备监控方法相比于现有技术在带宽占用上更有优势。

本发明实施例中,对于监控脚本的执行顺序也即是监控序列的顺序,设置为:性能监控脚本、进程监控脚本、端口监控脚本、磁盘健康度监控脚本、sqlserver数据库监控脚本、oracle数据库监控脚本、mysql数据库监控脚本、tomcat中间件监控脚本、weblogic中间件监控脚本、websphere中间件监控脚本、iis监控脚本、网卡监控脚本。在对被监控设备进行监控的过程中,按照上述顺序从前往后依次执行脚本。

作为一种可选实施方式,上述步骤s102,根据监控信息和监控脚本集合生成监控序列包括:

步骤s1021,监控调度程序创建监控任务。

步骤s1022,监控调度程序将监控信息传送给监控任务。监控信息包括设备信息、设备报警忽略信息、全局报警忽略信息;设备信息包括设备的资产号、ip地址、设备类型等。

步骤s1023,监控任务加载监控序列生成器,并将监控信息传送至监控序列生成器。传送至监控序列生成器的监控信息与上述监控信息相同。

步骤s1024,监控序列生成器将监控信息和监控脚本集合组合成监控序列。具体地,监控序列生成器根据设备信息读取监控数据采集端口和授权信息,并将设备信息、设备报警忽略信息、全局报警忽略信息、监控脚本集合组合成监控序列。

作为一种可选的实施方式,上述步骤s103,采用串行的方式按监控序列所定义的顺序依次执行监控脚本包括:

步骤s1031,将监控任务按照第一间隔时间存入到监控任务表中,其中,监控任务表中设置有监控序列中每个序列的执行时间,相邻两个序列的执行时间间隔为第一间隔时间。第一间隔时间表示在进行监控时两个监控脚本执行的时间间隔,例如30s。监控任务表中设置的执行时间可以是启动监控任务时,以倒计时时间间隔设置,例如第一个序列的执行时间为12:29:30;第二个序列的执行时间为12:29:00。当然,也可以直接按照自然时间进行设置,原理相同这里不再赘述。

步骤s1032,读取监控任务表中的执行时间,并获取当前时间。

步骤s1033,如果当前时间与读取到的执行时间一致,则启动读取到的执行时间对应的监控任务,执行对应的监控脚本。

本发明实施例中,通过比对当前时间和监控任务表中设置的执行时间,当达到相应的执行时间时,启动对应的监控任务,执行对应的监控脚本。

作为另一种可选的实施方式,如果当前时间与读取到的执行时间的时间差超过第二间隔时间,则启动读取到的执行时间对应的监控任务,执行对应的监控脚本。第二间隔时间为监控时间间隔,例如10分钟,当时间差达到第二间隔时间,表明距离上次监控时间已经超过第二间隔时间,需要启动监控任务进行再次监控。

进一步地,上述启动读取到的执行时间对应的监控任务,执行对应的监控脚本包括:将监控信息传递至对应的监控脚本;执行对应的监控脚本,采集被监控设备的数据。

具体地,监控任务执行监控数据采集器。监控数据采集器按顺序逐一执行监控脚本,在执行过程中,将设备信息、数据采集端口和授权信息、设备报警忽略信息、全局报警忽略信息作为参数传给监控脚本。监控脚本向被监控设备的数据采集端口进行验证登录,登录成功后通过不同的协议进行监控数据采集。

下面结合图2来对本发明实施例的进行描述。图2所示为本发明实施例的设备监控方法的程序对象关系图。其中各项分别表示为:

server_pool:监控调度程序。

sub_net:子网信息,包括子网地址和子网掩码。只有被监控设备ip地址所在子网存在于子网信息中,该设备才会被监控。

net_device:设备信息,包括设备的资产号、ip地址、设备类型等。

server_task:监控任务(监控序列的执行进程)。

task_loader:监控序列生成器或者监控数据采集器。

monitor:监控脚本。

cfg_hosts:监控数据采集端口和授权信息。

cfg_warn:单设备的报警忽略策略。

cfg_warn_global:全局报警忽略策略。

具体的方法执行步骤如下:

步骤一、加载监控脚本。

具体为监控序列生成器(task_loader)读取特定目录下的所有监控脚本文件,并保存到监控脚本monitors属性中。

步骤二、加载被监控设备。具体包括:

1、监控调度程序(server_pool)读取所有设备信息(net_device)。

2、监控调度程序(server_pool)读取所有的子网信息(sub_net)。

3、监控调度程序(server_pool)遍历所有设备,并检查设备的ip地址(net_device.ip_addr_str)所在子网是否已经在子网(sub_net)中定义。如果已定义,则放入accepted_ips变量中。

4、读取设备报警忽略信息(cfg_warn)。

5、读取全局报警忽略信息(cfg_warn_global)。

步骤三、组成监控序列。具体包括:

1、监控调度程序(server_pool)创建监控任务(server_task)。

2、监控调度程序(server_pool)将设备信息(net_device)、设备报警忽略信息(cfg_warn)、全局报警忽略信息(cfg_warn_global)传送给监控任务(server_task)。

3、监控任务(server_task)加载监控序列生成器(task_loader),并将设备信息(net_device)、设备报警忽略信息(cfg_warn)、全局报警忽略信息(cfg_warn_global)传送给监控序列生成器(task_loader)。

4、监控序列生成器(task_loader)根据设备信息读取监控数据采集端口和授权信息(cfg_hosts),并将设备信息(net_device)、设备报警忽略信息(cfg_warn)、全局报警忽略信息(cfg_warn_global)、监控脚本集合(task_loader.monitors)组合成监控序列。其中,监控序列生成器(task_loader)对监控脚本进行排序,排序规则为:性能监控脚本、进程监控脚本、端口监控脚本、磁盘健康度监控脚本、sqlserver数据库监控脚本、oracle数据库监控脚本、mysql数据库监控脚本、tomcat中间件监控脚本、weblogic中间件监控脚本、websphere中间件监控脚本、iis监控脚本、网卡监控脚本(越往前越优先)。

步骤四、按时间间隔调度监控序列,具体包括:

1、监控调度程序(server_pool)将监控任务(server_task)按照30秒时间为间隔设置执行时间,放入监控任务表(server_pool.task_mapping)中。

启动时间的设置方式为:如果当前时间为12:30:00,则第一个序列的执行时间为12:29:30;第二个序列的执行时间为12:29:00。

2、监控调度程序(server_pool)以30秒为时间间隔不断检查监控任务表(server_pool.task_mapping),并将当前时间与执行时间进行比较,如果时间差超过十分钟,则启动监控任务表中该记录对应的监控任务(server_task)。

3、监控任务执行监控数据采集器(task_loader)。

4、监控数据采集器按顺序逐一执行监控脚本(monitor),在执行过程中,将设备信息(net_device)、采集端口和授权信息(cfg_hosts)、设备报警忽略信息(cfg_warn)、全局报警忽略信息(cfg_warn_global)作为参数传给监控脚本。

5、监控脚本(monitor)向被监控服务器的数据采集端口进行验证登录,登录成功后通过不同的协议进行数据采集。

本发明实施例还提供了一种设备监控装置,该装置可以用于执行本发明实施例所述的设备监控方法。如图3所示,该装置包括:

获取单元301,用于获取被监控设备的监控信息和监控脚本集合,其中,监控信息为对被监控设备进行监控所需的信息,监控脚本集合包括多个用于实现监控任务的执行的监控脚本。

合成单元302,用于根据监控信息和监控脚本集合生成监控序列,监控序列中定义有监控脚本的执行顺序序列。

执行单元303,用于采用串行的方式按监控序列所定义的顺序依次执行监控脚本,以对被监控设备进行监控。

根据本发明实施例,通过生成监控序列,其定义有监控脚本的执行顺序,在对被监控设备进行监控时,采用串行的方式依次顺序执行监控脚本,这样可以避免现有技术中在对被监控设备进行一次监控时占用带宽较大的问题,降低对被监控设备的瞬时带宽压力。

可选地,执行单元具体用于执行的步骤包括:将监控任务按照第一间隔时间存入到监控任务表中,其中,监控任务表中设置有监控序列中每个序列的执行时间,相邻两个序列的执行时间间隔为第一间隔时间;读取监控任务表中的执行时间,并获取当前时间;如果当前时间与读取到的执行时间一致,则启动读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,如果当前时间与读取到的执行时间的时间差超过第二间隔时间,则启动读取到的执行时间对应的监控任务,执行对应的监控脚本。

可选地,执行单元还用于将监控信息传递至对应的监控脚本;执行对应的监控脚本,采集被监控设备的数据。

可选地,合成单元具体用于执行的步骤包括:监控调度程序创建监控任务;监控调度程序将监控信息传送给监控任务;监控任务加载监控序列生成器,并将监控信息传送至监控序列生成器;监控序列生成器将监控信息和监控脚本集合组合成监控序列。

具体描述参见上述方法实施例,这里不再赘述。

本实施例还提供一种计算机设备,如可以执行程序的台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图4所示。需要指出的是,图4仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储单元,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如实施例所述的设备监控装置的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行设备监控装置,以实现实施例的设备监控方法。

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储设备监控装置,被处理器执行时实现实施例的设备监控方法。

显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本申请的保护范围之中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1