实例集群的监控方法、装置和服务器与流程

文档序号:22344407发布日期:2020-09-25 18:16阅读:95来源:国知局
实例集群的监控方法、装置和服务器与流程

本申请涉及数据监控技术领域,尤其是涉及一种实例集群的监控方法、装置和服务器。



背景技术:

实例集群中通常包含有多个实例,每个实例有多个节点,在实例运行的过程中通常需要对实例中的每个节点的运行状态进行监控,相关技术中,实例集群的监控方法通常有上报监控机制和集中监控机制两种。

针对上报监控机制通常需要在实例的每个节点上部署一个监控点,该监控点每隔固定时长采集一次与其对应的节点上的数据,检测采集的数据是否异常,并将检测结果发送给服务端,但是该方式对网络中断、外部机器无法连接等问题无法检测;针对上述集中监控机制,可以设置一个监控中心,由该监控中心部署监控服务,每个监控服务主动连接每一个实例,以采集每个实例的监控数据,但为了保证在固定时间间隔内可以采集到每个实例的监控数据,该监控服务可监控的实例数量有限,导致该方式只适用于小规模的实例集群的监控场景。



技术实现要素:

本申请的目的在于提供一种实例集群的监控方法、装置和服务器,以适用于大规模的实例集群的监控场景。

第一方面,本申请实施例提供一种实例集群的监控方法,该方法包括:基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量;其中,每个执行线程用于:监控实例集群中至少一部分实例;根据线程数量,生成监控服务的执行线程;通过生成的监控服务的执行线程,监控实例集群中的实例。

在可选的实施方式中,预设数据库中存储有实例集群中当前运行的实例的元数据信息;上述基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量的步骤之前,上述方法还包括:根据预设数据库中存储的当前运行的实例的元数据信息,确定实例集群中当前运行的实例数量。

在可选的实施方式中,上述基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量的步骤,包括:根据当前运行的实例数量,确定监控服务需要监控的监控对象的对象总量;基于对象总量,以及监控服务的执行线程能够监控的单位对象数量,确定监控服务的执行线程的线程数量。

在可选的实施方式中,上述实例集群中,每个实例包括多个节点;如果监控服务包括节点监控服务,该节点监控服务的监控对象包括每个实例中的多个节点;如果监控服务包括复制集监控服务,复制集监控服务的监控对象包括每个实例中的复制集;该复制集由实例中的至少一部分节点组成;如果监控服务包括分片集监控服务,该分片集监控服务的监控对象包括每个实例中的分片集;该分片集由实例中的至少一部分节点组成。

在可选的实施方式中,上述通过生成的监控服务的执行线程,监控实例集群中的实例的步骤,包括:针对监控服务的每个执行线程,为该执行线程分配该执行线程需要监控的实例;每个执行线程用于:采集该执行线程需要监控的实例中的指定监控数据;通过监控服务的每个执行线程,采集所述实例集群中各个实例的指定监控数据。

在可选的实施方式中,如果上述监控服务包括节点监控服务,节点监控服务的执行线程用于:采集该执行线程需要监控的实例中的与节点相关的监控项数据;如果监控服务包括复制集监控服务,复制集监控服务的执行线程用于:采集该执行线程需要监控的实例中的与复制集相关的监控项数据;如果监控服务包括分片集监控服务,分片集监控服务的执行线程用于:采集该执行线程需要监控的实例中的与分片集相关的监控项数据。

在可选的实施方式中,上述采集实例集群中各个实例的指定监控数据的步骤之后,该方法还包括:针对实例集群中的每个实例,判断该实例对应的指定监控数据是否超出该指定监控数据对应的监控阈值;如果超出,对指定监控数据进行告警处理。

第二方面,本实施例提供一种实例集群的监控装置,该装置包括:线程数量确定模块,用于基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量;其中,每个执行线程用于:监控实例集群中至少一部分实例;线程生成模块,用于根据线程数量,生成监控服务的执行线程;实例监控模块,用于通过生成的监控服务的执行线程,监控实例集群中的实例。

在可选的实施方式中,预设数据库中存储有实例集群中当前运行的实例的元数据信息;线程数量确定模块,还用于:根据预设数据库中存储的当前运行的实例的元数据信息,确定实例集群中当前运行的实例数量。

在可选的实施方式中,上述线程数量确定模块,包括:第一数量确定模块,用于根据当前运行的实例数量,确定监控服务需要监控的监控对象的对象总量;第二数量确定模块,用于基于对象总量,以及监控服务的执行线程能够监控的单位对象数量,确定监控服务的执行线程的线程数量。

在可选的实施方式中,上述实例监控模块,包括:任务分配模块,用于针对监控服务的每个执行线程,为该执行线程分配该执行线程需要监控的实例;每个执行线程用于:采集该执行线程需要监控的实例中的指定监控数据;数据采集模块,用于通过监控服务的每个执行线程,采集实例集群中各个实例的指定监控数据。

第三方面,本申请实施例提供一种服务器,该服务器包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述实例集群的监控方法。

第四方面,本申请实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述实例集群的监控方法。

本申请实施例带来了以下有益效果:

本申请实施例提供的一种实例集群的监控方法、装置和服务器,首先基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量,每个执行线程用于:监控所述实例集群中至少一部分实例;根据所述线程数量,生成所述监控服务的执行线程;通过生成的所述监控服务的执行线程,监控所述实例集群中的实例。该方式可以根据实例集群中当前运行的实例数量,动态确定监控服务的执行线程的线程数量,以通过生成的与该线程数量一致的执行线程监控实例集群中的实例,该方式可以通过适当数量的执行线程并行监控实例集群中的实例,基于实例集群中运行的实例较多,也可以实现对实例集群中各个实例的及时有效监控。

申请的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请的上述技术即可得知。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。

附图说明

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

图1为本申请实施例提供的一种实例集群的监控方法的流程图;

图2为本申请实施例提供的另一种实例集群的监控方法的流程图;

图3为本申请实施例提供的另一种实例集群的监控方法的流程图;

图4为本申请实施例提供的一种监控系统的结构示意图;

图5为本申请实施例提供的一种实例集群的监控装置的结构示意图;

图6为本申请实施例提供的一种服务器的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

相关技术中,实例集群的监控方法通常有上报监控机制和集中监控机制两种。该上报监控机制存在对网络中断、外部机器无法连接等问题无法检测的问题,因此,该方式的适用场景有限;集中监控机制需要保证在固定时间间隔(例如,1分钟)内可以采集到每个实例的监控数据,同时部署的监控服务可监控的实例数量有限,因而导致该方式只适用于小规模的实例集群的监控场景,难以适用于实例数量比较大的场景(例如,云数据库场景)。

基于此,本申请实施例提供了一种实例集群的监控方法、装置和服务器,该技术可以应用于任何实例的监控场景中,尤其是实例数量较多的实例监控场景中。为便于对本实施例进行理解,首先对本申请实施例所公开的一种实例集群的监控方法进行详细介绍,如图1所示,该方法包括如下具体步骤:

步骤s102,基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量;其中,每个执行线程用于:监控实例集群中至少一部分实例。

通常一个系统中可以部署有多个实例集群,每个实例集群中可以运行有多个实例,需要监控每个运行的实例的工作状态,以确保实例可以正常运行。上述待监控的实例集群可以是系统中的任意一个或者多个实例集群;上述当前运行的实例数量可以是待监控的实例集群中当前正在运行的实例的个数;根据该实例数量可以确定预设监控服务的执行线程的线程数量,该线程数量可以保证执行线程在固定时间间隔内对当前运行的所有实例进行监控,通常实例数量越多,需要的监控服务的执行线程的线程数量越多。该线程数量可以根据当前运行的实例数量进行调整或者实时更新,例如,每隔固定时间(如一分钟或者十分钟)确定一次待监控的实例集群中当前运行的实例数量,以根据该实例数量确定当前所需的监控服务的执行线程的线程数量。

上述监控服务可以监控实例的运行状态、网络连接状态、实例中每个节点的状态和复制延迟状态等。在具体实现时,每个执行线程可以监控实例集群中的一个或者多个实例;也可以监控一个实例中的一部分,例如,通常一个实例中包含有至少一个节点,一个执行线程可以监控实例中的一个节点,也可以监控实例中的多个节点。

步骤s104,根据上述线程数量,生成监控服务的执行线程。

在具体实现时,可以根据确定的线程数量,生成与该线程数量一致的监控服务的执行线程。

步骤s106,通过生成的监控服务的执行线程,监控实例集群中的实例。

上述生成的监控服务的执行线程的数量可以为多个,通过每个执行线程监控至少一部分实例,从而使得生成的监控服务的执行线程可以监控实例集群中当前运行的所有实例。

本申请实施例提供的一种实例集群的监控方法,首先基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量,每个执行线程用于:监控所述实例集群中至少一部分实例;根据所述线程数量,生成所述监控服务的执行线程;通过生成的所述监控服务的执行线程,监控所述实例集群中的实例。该方式可以根据实例集群中当前运行的实例数量,动态确定监控服务的执行线程的线程数量,以通过生成的与该线程数量一致的执行线程监控实例集群中的实例,该方式可以通过适当数量的执行线程并行监控实例集群中的实例,基于实例集群中运行的实例较多,也可以实现对实例集群中各个实例的及时有效监控。

本申请实施例还提供了另一种实例集群的监控方法,该方法在上述实施例方法的基础上实现;该方法重点描述确定预设监控服务的执行线程的线程数量的具体过程(通过下述步骤s204-s206实现),如图2所示,该方法包括如下步骤:

步骤s202,根据预设数据库中存储的当前运行的实例的元数据信息,确定实例集群中当前运行的实例数量。其中,该预设数据库中存储有实例集群中当前运行的实例的元数据信息。

上述预设数据库可以是关系型数据库,例如,mysql数据库、oracle数据库等。上述预设数据库中保存有实例集群中当前运行的实例的元数据信息,该元数据信息中包括当前运行的每个实例的id(identitydocument,身份标识码)、ip(internetprotocol,网际互连协议)地址、端口号和实例角色(也可以理解为该实例在实例集群中的功能)等。

在具体实现时,上述预设数据库通常保存在外部设备上,该外部设备用于管理实例集群中的实例,也即是该外部设备可以将当前正在运行的实例的元数据信息保存在预设数据库中,可以将当前新增的实例的元数据信息添加在预设数据库中,也可以将当前删除的实例的元数据信息从预设数据库中去除。

在一些实施例中,每个实例都具有唯一的id和ip地址,因而可以将获取到的元数据信息中的实例的id的个数或者ip地址的个数,确定为实例集群中当前运行的实例数量。

步骤s204,根据当前运行的实例数量,确定监控服务需要监控的监控对象的对象总量。

上述监控对象可以是监控服务需要监控的对象,根据监控对象的不同,监控服务监控的事项也不同,每个监控对象对应的对象总量通常也存在差异。具体地,一个实例集群中,每个实例可以包括多个节点;每个节点执行的任务可能相同也可能不同,上述监控服务可以是节点监控服务、复制集监控服务、分片集监控服务中的一种或者多种。

如果上述监控服务包括节点监控服务,该节点监控服务的监控对象包括每个实例中的多个节点,也可以理解为节点监控服务需要监控实例集群中每个实例的所有节点。如果上述监控服务包括复制集监控服务,该复制集监控服务的监控对象包括每个实例中的复制集;该复制集由实例中的至少一部分节点组成,在具体实现时,该复制集通常由每个实例中的三个节点组成,分别是主节点、从节点和备份节点;针对复制集监控服务,需要监控的是实例集群中的复制集,也即是主节点、从节点和备份节点。如果上述监控服务包括分片集监控服务,该分片集监控服务的监控对象包括每个实例中的分片集,该分片集由实例中的至少一部分节点组成,在具体实现是,该分片集为实例的多个节点中用于配置的配置节点,该配置节点的数量可以是两个或者三个。

上述复制集可以保证实例中的数据在生产部署时的冗余和可靠性,通过在不同的机器(相当于上述从节点和备份节点)上保存副本来保证数据的不会因为单节点损坏而丢失,能够随时应对数据丢失、机器(相当于节点)损坏带来的风险。上述分片集可以应对高数据量和吞吐量的数据库实例对单机的性能造成的较大压力。

步骤s206,基于上述对象总量,以及监控服务的执行线程能够监控的单位对象数量,确定监控服务的执行线程的线程数量。

上述单位对象数量也即是监控服务的执行线程在固定时间间隔内可以处理的监控对象的数量,通常不同的监控服务的执行线程指固定时间间隔内可以处理的监控对象的数量不同。在具体实现时,可以基于每种监控对象的对象总量与监控服务的执行线程能够监控的单位对象数量的商,确定监控服务的执行线程的线程数量。如果所述监控服务仅包括节点监控服务,可以将实例集群中实例的节点的节点总量,与节点监控服务的执行线程固定时间间隔内能够监控的节点的数量的商值,得到节点监控服务的执行线程的线程数量,如果该商值不为整数,通过向上取整的方式确定线程数量,例如,商值为30,则线程数量为30;如果商值为50.23,则线程数量为51。

如果上述监控服务仅包括复制集监控服务,可以将实例集群中的复制集总量,与复制集监控服务的执行线程固定时间间隔内能够监控的复制集的数量的商值,得到复制集监控服务的执行线程的线程数量;如果上述监控服务仅包括分片集监控服务,可以将实例集群中的分片集总量,与分片集监控服务的执行线程在固定时间间隔内能够监控的分片集的数量的商值,得到分片集监控服务的执行线程的线程数量;如果上述监控服务包括节点监控服务、复制集监控服务和分片集监控服务中的多种,分别计算出包含的每种监控服务的执行线程对应的线程数量,然后将各监控服务的执行线程的线程数量相加,得到执行线程最终的线程数量。

在具体实现时,监控服务包括多个类型可以全面的监控实例的运行状态,确保全面监控实例存在的问题,例如可以对网络中断、外部机器无法连接等问题进行监控,保证实例的正常运行。

步骤s208,根据上述线程数量,生成监控服务的执行线程。

步骤s210,通过生成的监控服务的执行线程,监控实例集群中的实例。

上述实例集群的监控方法,采用了集中监控机制,并根据当前运行的实例数量,确定监控服务需要监控的监控对象的对象总量,进而基于该对象总量,以及监控服务的执行线程能够监控的单位对象数量,确定监控服务的执行线程的线程数量,然后通过生成的、与线程数量一致的执行线程监控实例集群中的实例,该方式可以动态确定监控当前运行的实例的执行线程的数量,可以保证在固定时间间隔内对实例集群中的每个实例进行监控,同时由于每个线程可以并行执行,可以应用于规模化的实例集群的监控场景。

本申请实施例还提供了另一种实例集群的监控方法,该方法在上述实施例方法的基础上实现;该方法重点描述通过生成的监控服务的执行线程,监控实例集群中的实例的具体过程(通过下述步骤s306-s308实现),如图3所示,该方法包括如下步骤:

步骤s302,基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量;其中,每个执行线程用于:监控实例集群中至少一部分实例。

步骤s304,根据上述线程数量,生成监控服务的执行线程。

步骤s306,针对监控服务的每个执行线程,为执行线程分配执行线程需要监控的实例;每个执行线程用于:采集执行线程需要监控的实例中的指定监控数据。

在具体实现时,针对监控服务的每个执行线程,需要根据执行线程能够监控的单位对象数量,为执行线程分配任务,该任务也即是该执行线程需要监控的实例,在分配任务时,需要确保实例集群中的每个实例都被监控,且不超过每个执行线程能够监控的单位对象数量。

每个执行线程可以监控实例集群中的一部分实例,并且不同的执行线程需要监控的监控对象不同,因而可能需要监控的实例中的指定监控数据也不同,该指定监控数据可以是实例到的节点运行状态数据、节点的网络连接状态数据、复制延迟状态数据或者实例状态数据等。

步骤s308,通过上述监控服务的每个执行线程,采集实例集群中各个实例的指定监控数据。

每个执行线程可以采集其分配任务中对应的实例中的指定监控数据,从而确保可以采集到实例集群中当前运行的每个实例的执行监控数据。在具体实现时,不同监控服务的执行线程需要监控的监控数据不同,如果监控服务包括节点监控服务,该节点监控服务的执行线程用于:采集执行线程需要监控的实例中的与节点相关的监控项数据;如果监控服务包括复制集监控服务,该复制集监控服务的执行线程用于:采集执行线程需要监控的实例中的与复制集相关的监控项数据;如果监控服务包括分片集监控服务,该分片集监控服务的执行线程用于:采集执行线程需要监控的实例中的与分片集相关的监控项数据。

上述与节点相关的监控项数据包括节点运行状态数据、节点的网络连接状态数据等;上述与复制集相关的监控项数据包括复制延迟状态数据;上述与分片集相关的监控项数据包括实例状态数据等。

步骤s310,针对上述实例集群中的每个实例,判断实例对应的指定监控数据是否超出该指定监控数据对应的监控阈值;如果超出,对指定监控数据进行告警处理。

针对不同的监控数据设置有不同的监控阈值,该监控阈值可以是用户根据需求预先设定好的。针对监控服务的每个执行线程,当执行线程采集到实例的指定监控数据时,会判断实例对应的指定监控数据是大于该指定监控数据对应的监控阈值,如果大于,将对该指定监控数据进行告警处理。

上述告警处理可以是向监控人员的手机发送信息或者拨打电话,或者向监控人员的计算机上发送告警信息等。

在具体实现时,上述实例集群的监控方法可以通过监控系统实现,该监控系统中引入微服务架构,并对微服务架构中的各个模块进行插件化,以每个模块可以单独进行升级、更改,从而更加方便向监控系统中添加或者删除某些功能。如图4所示为监控系统的结构示意图,该监控系统中包括6个模块,分别为总控模块(也可以称为monitoragent)、监控项配置模块(也可称为config-manager)、实例监控模块(也可称为mongo-monitor)、容器监控模块(也可称为lxc-monitor)、元数据监控模块(也可称为mysql-monitor)和告警模块。

如图4所示,上述总控模块分别与监控项配置模块、实例监控模块、容器监控模块、元数据监控模块和告警模块通信连接,监控配置模块、元数据监控模块和告警模块均分别与实例监控模块和容器监控模块通信连接。

上述总控模块可以为微内核框架,用于管理和控制系统中各个模块的生命周期(创建、启动、数据传递、停止、删除等);还用于管理系统总体的数据结构,例如每个执行线程的数据结构、每个模块的配置信息等;该总控模块还定义了一套统一接口,但不实现具体业务功能,其他模块需要注册到总控模块中,并根据各自的功能具体实现这套接口,也可以理解为总控模块只可以对注册到总控模块的模块进行管理,并使注册的模块可以使用总控模块的统一接口。

上述监控项配置模块可以配置需要监控的监控项和监控级别,并将该监控项和监控级别写到一块共享结构体中,在监控服务启动时初始化该共享结构体,从而可以使实例监控模块和容器监控模块可以从该共享结构体中获取到各自需要监控的监控项和监控级别;该监控项和监控级别可以用户根据需求预设设置好的,监控项可以是实例的运行状态、网络连接状态、实例中每个节点的状态和复制延迟状态等,也可以是内存使用情况、cpu(centralprocessingunit,中央处理器)使用情况、磁盘使用情况等;监控级别可以是容器级别的监控,也可以是数据库级别的监控。

上述容器监控模块用于监控lxc(linuxcontainer,简称linux容器)的监控项,该lxc的监控项包括内存、cpu、磁盘等资源的使用情况,该容器监控模块可以作为服务端与lxc-monitor-client(相当于客户端的容器监控单元)交互获取数据,服务端与客户端的通信协议可以使用grpc(googleremoteprocedurecall,谷歌给出的远程过程调用)协议,上述容器监控模块与客户端的容器监控单元进行通信的线路可以作为单独的一类线程与其他执行线程并行运行。在具体实现时,每个实例包含有多个节点,每个节点都是部署在上述linux容器中的,为了确保每个节点的资源使用正常,需要监控linux容器的资源使用情况。

上述实例监控模块也即是数据库级别的监控项,该数据库级别的监控项可以包括实例的运行状态、网络连接状态、实例中每个节点的状态和复制延迟状态等;在具体实现时,该实例监控模块可以从mongodb数据库中获取上述监控项,可以直接通过mongodb的go驱动mgo.v2与mongodb数据库进行交互,该交互可以作为单独的一类线程与其他线程并行运行。

上述元数据监控模块用于从预设数据库(例如,mysql数据库)中读取当前正在运行的实例的元数据信息,再将读取到的每个实例的元数据信息初始化到共享内存的instance_map(相当于一个数据存储单元)中,其他各模块可以根据instance_map中的元数据信息获取当前需要监控的实例,以及需要监控的实例数量。

上述告警模块可以作为单独的一类线程与其他线程并行运行,该类线程可以从告警数据库中获取到告警数据,并对告警数据进行信息拼接和格式转换,信息拼接包括将该告警数据对应机房、ip地址、告警级别、高竟内容和告警组别(该告警组别中包含有监控人员的电话号码、邮箱等)等进行信息拼接,上述告警模块通常可以将告警信息发送至监控人员的计算机中,通常可以通过http协议进行信息交互,因此上述格式转换可以是将告警信息按照http协议的格式进行调整,以使其可以通过http协议传输至监控人员的计算机中。

在具体实现时,上述告警模块通常是将告警信息发送至监控人员的计算机中的onepiece软件中,该onepieie通常是一个软件程序,可以接收告警信息,并且发告警给告警组别上配置的监控人员的电话号码、onepiece账号或者邮箱等,通常针对告警信息中的不同的告警级别有不同的处理,例如,当告警级别较高时,可以立即给监控人员打电话,以尽快通知到监控人员。

在具体实现时,上述容器监控模块和实例监控模块可以将每个实例对应的指定监控数据超出该指定监控数据对应的监控阈值的监控数据对应的报警数据写入指定的告警数据库中,该告警数据库可以是warningchan(chan通常是一种共享数据结构,可以在进程内的线程间传递数据,类似于队列),然后告警模块从该告警数据可中获取告警数据,也可以理解为容器监控模块和实例监控模块作为告警数据库中数据的生产者。上述告警数据库可以用于容器监控模块对应的执行线程、实例监控模块对应的执行线程与告警模块对应的线程之间传递数据,使两类线程并行运行,提高了数据的处理速度。

在一些实施例中,上述实例监控模块可以作为主线程,可以生成三个子线程(相当于上述节点监控服务、复制集监控服务和分片集监控服务),每个子线程负责一个监控分类。

节点监控服务(可以称为nodeworker)可以是以实例的节点为单位的监控,由于每个实例中会有很多节点,因此该节点监控服务需要监控的数据量最大;复制集监控服务(可以称为replsetworker)可以是以复制集为单位的监控;分片集监控服务(可以称为shardclusterworker)可以是以分片集群为单位的监控。

在具体实现时,以上三个监控服务可以会每隔指定时间间隔获取实例集群中当前正在运行的实例数量,根据该实例数量计算各自需要部署的执行线程的线程数量,并生成各自对应的执行线程,为每一个执行线程分配需要监控的监控任务,以监控实例集群中的实例。通常三个监控服务会根据需要监控的节点数、复制集数、分片集数进行计算,来确定各自需要生成多少执行线程。

在监控任务分配完成后,每个执行线程会去采集分给自己的那部分节点、复制集或者分片集的指定监控数据(例如是否能正常连接、节点状态、集群状态、复制延迟等信息),将采集到的指定监控数据超出该指定监控数据对应的监控阈值的数据对应的报警数据写入warningchannal(相当于上述告警数据库)中。

在具体实现时,每个执行线程执行完之后就会发信号给它的父线程,然后退出,也可以理解为每个执行线程执行完本次监控后会向其对应的节点监控服务、复制集监控服务或者分片集监控服务发送信息,以通知相应的监控服务任务完成,任务完成后将退出本次监控或者继续监对应的监控任务。上述方式中,多个执行线程并发采集监控数据,并且可以根据实例集群的规模动态调整执行线程的线程数量,确保在指定时间间隔内能完成对所有实例的轮询。

上述监控服务包括多个类型且集中监控,可以全面的监控实例的运行状态,确保全面监控实例存在的问题,例如可以对网络中断、外部机器无法连接等问题进行监控,保证实例的正常运行。

上述实例集群的监控方法,采用中心化监控和报警的机制,可以满足数据库从外部连接验证的监控需求,也可以用于规模化的实例集群的监控场景,也即是可以监控大量的实例,同时该方式整采用动态多线程的方式,根据当前运行的实例和数量灵活调整执行线程数量,通过并行运行每个执行线程来实现在固定时间间隔内的可以监控到所有的当前运行的实例,确保每个实例的正常运行。

对应于上述实例集群的监控方法的实施例,本申请实施例还提供了一种实例集群的监控装置,如图5所示,该装置包括:

线程数量确定模块50,用于基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量;其中,每个执行线程用于:监控实例集群中至少一部分实例。

线程生成模块51,用于根据上述线程数量,生成监控服务的执行线程。

实例监控模块52,用于通过生成的监控服务的执行线程,监控实例集群中的实例。

上述实例集群的监控装置,首先基于待监控的实例集群中当前运行的实例数量,确定预设监控服务的执行线程的线程数量,每个执行线程用于:监控所述实例集群中至少一部分实例;根据所述线程数量,生成所述监控服务的执行线程;通过生成的所述监控服务的执行线程,监控所述实例集群中的实例。该方式可以根据实例集群中当前运行的实例数量,动态确定监控服务的执行线程的线程数量,以通过生成的与该线程数量一致的执行线程监控实例集群中的实例,该方式可以通过适当数量的执行线程并行监控实例集群中的实例,基于实例集群中运行的实例较多,也可以实现对实例集群中各个实例的及时有效监控。

具体地,预设数据库中存储有实例集群中当前运行的实例的元数据信息;上述装置还包括实例数量确定模块,用于:根据预设数据库中存储的当前运行的实例的元数据信息,确定实例集群中当前运行的实例数量。

进一步地,上述线程数量确定模块包括:第一数量确定模块,用于根据当前运行的实例数量,确定监控服务需要监控的监控对象的对象总量;第二数量确定模块,用于基于对象总量,以及监控服务的执行线程能够监控的单位对象数量,确定监控服务的执行线程的线程数量。

在具体实现时,每个实例包括多个节点;如果监控服务包括节点监控服务,节点监控服务的监控对象包括每个实例中的多个节点;如果监控服务包括复制集监控服务,复制集监控服务的监控对象包括每个实例中的复制集;复制集由实例中的至少一部分节点组成;如果监控服务包括分片集监控服务,分片集监控服务的监控对象包括每个实例中的分片集;分片集由实例中的至少一部分节点组成。

进一步地,上述实例监控模块包括:任务分配模块,用于针对监控服务的每个执行线程,为执行线程分配执行线程需要监控的实例;每个执行线程用于:采集执行线程需要监控的实例中的指定监控数据;数据采集模块,用于通过监控服务的每个执行线程,采集实例集群中各个实例的指定监控数据。

具体地,如果监控服务包括节点监控服务,该节点监控服务的执行线程用于:采集执行线程需要监控的实例中的与节点相关的监控项数据;如果监控服务包括复制集监控服务,复制集监控服务的执行线程用于:采集执行线程需要监控的实例中的与复制集相关的监控项数据;如果监控服务包括分片集监控服务,分片集监控服务的执行线程用于:采集执行线程需要监控的实例中的与分片集相关的监控项数据。

进一步地,上述装置还包括告警模块,用于:针对实例集群中的每个实例,判断实例对应的指定监控数据是否超出指定监控数据对应的监控阈值;如果超出,对指定监控数据进行告警处理。

本申请实施例所提供的实例集群的监控装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

本申请实施例还提供了一种服务器,参见图6所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器执行的机器可执行指令,处理器101执行机器可执行指令以实现上述实例集群的监控方法。

进一步地,图6所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。

其中,存储器100可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。

本申请实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述实例集群的监控方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

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