监控系统的部署方法、装置、计算机设备及存储介质转让专利

申请号 : CN201711091445.5

文献号 : CN107896162B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高泗俊李渊

申请人 : 平安科技(深圳)有限公司

摘要 :

本申请实施例公开了一种监控系统的部署方法、装置、计算机设备及存储介质。其中该方法包括:获取所述监控系统中每个组件模块对应的组件信息;根据所述组件信息对所述组件模块进行划分以生成类别组件组;获取同一组类别组件组中多个所述组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板,并将所述差异信息存储在配置文件中;根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及调用所述部署编排文件对所述监控系统进行部署。该方法通过对组件模块的处理,由此提高了监控系统的部署效率,同时方便日后对该监控系统的进行管理。

权利要求 :

1.一种监控系统的部署方法,其特征在于,包括:获取监控系统中每个组件模块对应的组件信息;

根据所述组件信息对所述组件模块进行划分以生成类别组件组;

获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;

基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中;

根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及调用所述部署编排文件对所述监控系统进行部署;

所述基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中,包括:对每个所述组件模块的差异信息进行变量设置;

根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;以及将经过所述变量设置的差异信息存储在配置文件中。

2.根据权利要求1所述的监控系统的部署方法,其特征在于,所述根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件,包括:调用预设读取脚本读取所述配置文件;

根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。

3.根据权利要求1所述的监控系统的部署方法,其特征在于,所述组件信息包括编程语言信息,所述编程语言信息包括Golang语言和Python语言;

所述根据所述组件信息对所述组件模块进行分类以生成类别组件组,包括:根据所述编程语言信息对所述组件模块进行分类以生成Golang组件组和Python组件组;

所述获取同一组类别组件组中多个组件模块之间的共性信息和差异信息,包括:获取所述Golang组件组中多个所述组件模块之间的共性信息和差异信息,以及获取所述Python组件组中多个所述组件模块之间的共性信息和差异信息。

4.根据权利要求1所述的监控系统的部署方法,其特征在于,在所述调用所述部署编排文件对所述监控系统进行部署之前,还包括:将部署所述监控系统所需的主机加入主机资源池并对所述主机资源池中的主机进行标记以生成主机标记号;以及根据所述主机标记号对所述主机资源池中的主机进行调度管理;

所述调用所述部署编排文件对所述监控系统进行部署,包括:调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。

5.一种监控系统的部署装置,其特征在于,包括:第一获取单元,用于获取监控系统中每个组件模块对应的组件信息;

划分生成单元,用于根据所述组件信息对所述组件模块进行划分以生成类别组件组;

第二获取单元,用于获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;

生成存储单元,用于基于所述差异信息和共性信息生成容器文件模板,并将所述差异信息存储在配置文件中;

文件生成单元,用于根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及调用部署单元,用于调用所述部署编排文件对所述监控系统进行部署;

所述生成存储单元,包括:

变量设置子单元,用于对每个所述组件模块的差异信息进行变量设置;

模板生成子单元,用于根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;

信息存储子单元,用于将经过所述变量设置的差异信息存储在配置文件中。

6.根据权利要求5所述监控系统的部署装置,其特征在于,所述文件生成单元,包括:调用读取子单元,用于调用预设读取脚本读取所述配置文件;

信息填充子单元,用于根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。

7.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述监控系统的部署方法。

8.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-4任一项所述监控系统的部署方法。

说明书 :

监控系统的部署方法、装置、计算机设备及存储介质

技术领域

[0001] 本申请涉及互联网技术领域,尤其涉及一种监控系统的部署方法、装置、计算机设备及存储介质。

背景技术

[0002] 目前,市场上存在很多运维用的监控系统,比如Argus监控系统、Zabbix监控系统和Open-falcon监控系统。这些监控系统的组件模块数量较多,一般包括将近30个组件模块。在部署这些监控系统时,每个组件模块都要保证高可用性,以及需要进行管理、监控、升级和部署等,较多的组件模块使得部署方式变得非常复杂,如果还采用传统的部署方式,这个工作量和运维成本将会比较高,同时部署也不够灵活,进而增加了监控系统的运维成本。

发明内容

[0003] 本申请提供了一种监控系统的部署方法、装置、计算机设备及存储介质,以提高监控系统的部署效率。
[0004] 第一方面,本申请提供了一种监控系统的部署方法,其包括:
[0005] 获取监控系统中每个组件模块对应的组件信息;
[0006] 根据所述组件信息对所述组件模块进行划分以生成类别组件组;
[0007] 获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;
[0008] 基于所述差异信息和共性信息生成容器文件模板,并将所述差异信息存储在配置文件中;
[0009] 根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及[0010] 调用所述部署编排文件对所述监控系统进行部署。
[0011] 第二方面,本申请提供了一种监控系统的部署装置,其包括:
[0012] 第一获取单元,用于获取监控系统中每个组件模块对应的组件信息;
[0013] 划分生成单元,用于根据所述组件信息对所述组件模块进行划分以生成类别组件组;
[0014] 第二获取单元,用于获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;
[0015] 生成存储单元,用于基于所述差异信息和共性信息生成容器文件模板,并将所述差异信息存储在配置文件中;
[0016] 文件生成单元,用于根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及
[0017] 调用部署单元,用于调用所述部署编排文件对所述监控系统进行部署。
[0018] 第三方面,本申请又提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请提供的任一项所述监控系统的部署方法。
[0019] 第四方面,本申请还提供了一种存储介质,其中所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行本申请提供的任一项所述监控系统的部署方法。
[0020] 本申请实施例通过对监控系统的组件模块进行分类,并获取同类别的组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板,以及将所述差异信息存储在配置文件中;利用配置文件和容器文件模板生成部署编排文件;由容器集群管理系统根据所述部署编排文件完成对所述监控系统进行部署。通过对组件模块的处理,由此提高了监控系统的部署效率,同时方便日后对该监控系统的进行管理。

附图说明

[0021] 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022] 图1是本申请一实施例提供的一种监控系统的部署方法的示意流程图;
[0023] 图2是图1中步骤S104的子步骤示意流程图;
[0024] 图3是图1中步骤S105的子步骤示意流程图;
[0025] 图4是本申请另一实施例提供的一种监控系统的部署方法的示意流程图;
[0026] 图5为本申请一实施例提供的一种监控系统的部署装置的示意性框图;
[0027] 图6为本申请另一实施例提供的一种监控系统的部署装置的示意性框图;
[0028] 图7为本申请一实施例提供的一种计算机设备的一示意性框图。

具体实施方式

[0029] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0030] 应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0031] 请参阅图1,图1是本申请一实施例提供的一种监控系统的部署方法的示意流程图。如图1所示,该监控系统的部署方法包括步骤S101~S106。
[0032] S101、获取监控系统中每个组件模块对应的组件信息。
[0033] 监控系统主要用于互联网产品的运维,提供事前及时预警发现故障以及问题定位分析,比如市场存在的Open-falcon监控系统、Zabbix监控系统或Argus监控系统。这些监控系统均包括多个组件模块,比如agent、gateway、proxy、transfer和query等组件模块,每个组件都有不同的功能。在部署监控系统时,需要考虑到每个组件模块,因此会影响了部署的效率。
[0034] 在本实施中,获取该监控系统中每个组件模块对应的组件信息。该组件信息包括组件模块的编程语言信息。具体地,该编程语言信息比如Golang语言和Python语言,该监控系统的组件模块基本均是采用Golang语言和Python语言编写的。
[0035] 在一实施例中,该组件信息还可包括组件模块的状态信息等,该状态信息比如有数据状态信息和无数据状态信息。其中,有数据状态信息是指与本地数据有关联的组件模块对应的状态信息;无数据状态信息是指与本地数据没有关联的组件模块对应的状态信息。
[0036] 因为具有不同组件信息的组件模块对应的部署方式和安装环境可能均不相同,因此需要对监控系统的多个组件模块进行区分处理。
[0037] S102、根据所述组件信息对所述组件模块进行划分以生成类别组件组。
[0038] 在本实施例中,具体是根据所述编程语言信息对监控系统的所有组件模块进行划分以生成类别组件组。
[0039] 譬如,以Argus监控系统为例,假如该Argus监控系统包括30个组件模块,30个组件模块中有14个组件模块采用Golang语言编写的,另外16个组件模块采用Python语言编写的,则可将该Argus监控系统的30个组件模块划分为Golang组件组和Python组件组,即Golang组件组包括14个采用Golang语言编写的组件模块,Python组件组包括16个采用Python语言编写的组件模块。
[0040] 在一实施例中,也可以根据状态信息对监控系统的所有组件模块进行划分以生成类别组件组。具体划分方法类似根据编程语言信息进行划分,在此不做详细介绍。
[0041] S103、获取同一组类别组件组中多个组件模块之间的差异信息和共性信息。
[0042] 在本实施例中,按照上述分类划分方法,每个类比组件组均包括多个组件模块,多个所述组件模块之间存在差异信息,同时也存在共性信息。
[0043] 比如、golang组件组的hbs、transfer、judge、graph、query和alarm等组件模块。这些组件模块的共性信息包括:共用安装包、启动服务、启动指令、相同的docker基础镜像和相同的服务命名等信息;这些组件模块的差异信息包括:启动端口、挂载存储卷和副本数等信息。
[0044] 具体地,是通过程序代码引用所述共性信息和差异信息对应的名称进行调用而获取到的。比如共用安装包的名称、启动指令对应的名称或不同的启动端口对应的不同名称等。
[0045] S104、基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中。
[0046] 在本实施例中,为了将监控系统的组件模块容器化,需要制作相应的文件模块,具体可采用容器集群管理系统(Kubernetes,简称K8s)对监控系统进行部署,相对应该容器文件模板包括Dockerfile模板、K8s deployment模板和k8s编排模板等。
[0047] 在本实施例中,具体地,如图2所示,步骤S104包括子步骤S104a至S104c。
[0048] S104a、对每个所述组件模块的差异信息进行变量设置。
[0049] 具体地,对每个组件模块的差异信息进行不同的变量设置。此外每个所述组件模块的差异信息中不同的差异部分进行不同变量设置。该变量设置是为差异部分设置对应的变量。
[0050] 比如,将transfer组件模块的差异信息设置对应变量x。该差异信息具体包括挂载存储卷和副本数等差异部分,进而将挂载存储卷和副本数设置对应变量x1和x2等。
[0051] S104b、根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板。
[0052] 具体地,在将每个所述组件模块的差异信息进行变量设置后,将所述差异信息进行变量替换,根据所述变量和共性信息生成容器文件模板,具体地是通过容器生成命令调用该共性信息和每个所述组件模块的差异信息对应的变量进而生成容器文件模板,即该容器模板包括共性信息和差异信息对应的变量。
[0053] S104c、将经过所述变量设置的差异信息存储在配置文件中。
[0054] 具体地,是将所述组件模块的差异信息及其相对应的变量存储在配置文件中。
[0055] 该基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中,相对现有的部署方法不仅可以提高部署效率,同时容器文件模板和配置文件只需存储在两个不同的位置,因此有利于后续的文件管理。
[0056] S105、根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件。
[0057] 在本实施例中,该预设文件生成规则是指将配置文件的中差异信息按照预设变量方式填充在容器文件模板中,比如transfer组件模块,其相对容器文件模板的差异信息对应的变量为x1和x2,在生成transfer组件模块对应的编排文件时,x1和x2为预设变量,根据该预设变量x1和x2将在配置文件中对应差异信息填充在该容器文件模板中。可以根据容器文件模板和配置文件动态地生成不同环境下的部署编排文件。其中不同环境包括开发、测试或生产等环境。
[0058] 具体地,生成部署编排文件的方式,如图3所示,步骤S105包括子步骤S105a和S105b。
[0059] S105a、调用预设读取脚本读取所述配置文件。
[0060] 具体可以通过键入命令符的方式来调用预设读取脚本以读取所述配置文件,该预设读取脚本用于读取配置文件。
[0061] S105b、根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。
[0062] 具体地根据所述变量对应关系将配置文件差异信息对应填充在容器文件模板的包含的变量,从而生成一个完整的部署编排文件。
[0063] S106、调用所述部署编排文件对所述监控系统进行部署。
[0064] 具体可以使用调用命令加所述部署编排文件的名称的方式,调用所述部署编排文件以对所述监控系统进行部署。
[0065] 在本实施例中,具体使用Kubernetes调用该部署编排文件已完成对所述监控系统进行部署。该Kubernetes为容器集群管理系统,可以自动协调该监控系统的组件模块,利用上述方法生成的部署编排文件对该监控系统进行部署,完全不用考虑每个组件模块的资源占用情况。由此节省了人工操作,提高了部署的效率。
[0066] 本申请实施例通过对监控系统的组件模块进行分类,并获取同类别的组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板,以及将所述差异信息存储在配置文件中;利用配置文件和容器文件模板生成部署编排文件;由容器集群管理系统根据所述部署编排文件完成对所述监控系统进行部署,进而提高了部署效率。同时将所述差异信息存储在配置文件,也方便日后对该监控系统的组件模块的管理。
[0067] 请参阅图4,图4是本申请另一实施例提供的一种监控系统的部署方法的示意流程图。该监控系统的部署方法可运行在服务器中,其中该服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。如图4所示,该监控系统的部署方法包括步骤S201~S208。
[0068] S201、获取所述监控系统中每个组件模块对应的组件信息,其中所述组件信息包括编程语言信息,所述编程语言信息包括Golang语言和Python语言。
[0069] 在本实施例中,获取所述监控系统中每个组件模块对应的组件信息,具体为:根据所述编程语言信息对所述组件模块进行分类以生成Golang组件组和Python组件组。
[0070] 其中,根据组件模块的编程语言进行分类,比如Argus的组件模块中hbs,transfer,judge,graph,query,alarm等组件模块是由Golang语言编写的,而像portal,dashboard,links等组件模块是用Python语言写的。
[0071] 因为两种语言编写的组件模块的部署方式不同,具体地Golang编写的组件模块没有依赖,可以直接启动运行。而Python编写的组件模块需要启动python虚拟环境加载相关的依赖包才能正常启动运行。因此通过对组件模块部署特点的分析,方便对应容器文件模板进行制作,同时还可以提高部署效率。
[0072] S202、根据所述组件信息对所述组件模块进行划分以生成类别组件组。
[0073] 具体地,根据所述编程语言信息对所述组件模块进行分类以生成Golang组件组和Python组件组。对于Argus监控系统,该Golang组件组包括hbs、transfer、judge、graph、query和alarm等组件模块;Python组件组包括portal、dashboard和links等组件模块。
[0074] S203、获取同一组类别组件组中多个组件模块之间的差异信息和共性信息。
[0075] 具体为:获取所述Golang组件组中多个所述组件模块之间的共性信息和差异信息,以及获取所述Python组件组中多个所述组件模块之间的共性信息和差异信息。
[0076] S204、基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中。
[0077] 具体为:对每个所述组件模块的差异信息进行变量设置;根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;以及将经过所述变量设置的差异信息存储在配置文件中。
[0078] 此外,还可将所述配置文件保存在预设数据库中以及通过configmap管理所述配置文件。具体是通过Kubernetes中的configmap来集中管理该监控系统的配置文件,由此提高了管理效率。
[0079] S205、根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件。
[0080] 具体地,调用预设读取脚本读取所述配置文件;以及根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。该预设脚本执行的操作是读取所述配置文件,根据配置文件的变量对应的差异信息对容器文件模板中的变量进行描述填充,从而生成一个完成的部署编排文件。
[0081] 在本实施例中,具体是使用容器集群管理系统(Kubernetes,简称K8s)对该监控系统进行部署。相对应地,所述部署编排文件包括Dockerfile部署编排文件和K8s部署编排文件。
[0082] S206、将部署所述监控系统所需的主机加入主机资源池并对所述主机资源池中的主机进行标记以生成主机标记号。
[0083] 在利用K8s调用所述部署编排文件对所述监控系统进行部署时,还可获取部署所述监控系统所需的主机,该主机可以为物理机或虚拟机。将这些主机加入主机资源池中,将也通过K8s对这些主机进行管理和调度,以便在主机出现故障时,借助K8s进行组件模块迁移,自动将组件模块迁移到可用的主机上,大大降低了运维复杂度。
[0084] 将这些主机加入主机资源池中,具体是将这些主机中安装docker、flannel和Kubernetes等客户端软件,启动时指定Kubernetes的master的IP,这样主机就会注册到K8s集群里,被Kubernetes的master接管,进而为将这些主机加入主机资源池中。
[0085] 对所述主机资源池中的主机进行标记以生成主机标记号,具体为将主机加入资源池后,对资源池中的主机进行打标,比如标记为主机#1、#2、#3等。这些#1、#2、#3即为主机标号。
[0086] S207、根据所述主机标记号对所述主机资源池中的主机进行调度管理。
[0087] 在本实施例中,根据所述主机标记号对所述主机资源池中的主机进行调度管理,方便K8s根据组件模块的资源占用情况选择不同的主机进行部署。
[0088] S208、调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0089] 具体可以使用调用命令加所述部署编排文件的名称的方式,调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0090] 上述实施例根据编程语言信息对监控系统的组件模块进行分类,并获取同类别的组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板,以及将所述差异信息存储在配置文件中;利用配置文件和容器文件模板生成部署编排文件;由容器集群管理系统根据所述部署编排文件完成对所述监控系统进行部署,进而提高了部署效率。同时将所述差异信息存储在配置文件,也方便日后对该监控系统的组件模块的管理。此外,还将部署该监控系统的主机加入到资源池中进行集中管理,由此还降低了部署运维的复杂度。
[0091] 请参阅图5,图5是本申请实施例提供的一种监控系统的部署装置的示意性框图。该部署装置300安装在服务器或终端中,其中该服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群;该终端包括台式电脑、手提电脑、平板电脑、个人数字助理(PDA)或智能手机等。
[0092] 如图5所示,部署装置300包括第一获取单元301、划分生成单元302、第二获取单元303、生成存储单元304、文件生成单元305和调用部署单元306。
[0093] 第一获取单元301,用于获取监控系统中每个组件模块对应的组件信息。
[0094] 其中,获取该监控系统中每个组件模块对应的组件信息。该组件信息包括组件模块的编程语言信息。具体地,该编程语言信息比如Golang语言和Python语言,该监控系统的组件模块基本均是采用Golang语言和Python语言编写的。
[0095] 在一实施例中,该组件信息还可包括组件模块的状态信息等,该状态信息比如有数据状态信息和无数据状态信息。其中,有数据状态信息是指与本地数据有关联的组件模块对应的状态信息;无数据状态信息是指与本地数据没有关联的组件模块对应的状态信息。
[0096] 划分生成模块302,用于根据所述组件信息对所述组件模块进行划分以生成类别组件组。
[0097] 具体地,根据所述编程语言信息对监控系统的所有组件模块进行划分以生成类别组件组。
[0098] 譬如,以Argus监控系统为例,假如该Argus监控系统包括30个组件模块,30个组件模块中有14个组件模块采用Golang语言编写的,另外16个组件模块采用Python语言编写的,则可将该Argus监控系统的30个组件模块划分为Golang组件组和Python组件组,即Golang组件组包括14个采用Golang语言编写的组件模块,Python组件组包括16个采用Python语言编写的组件模块。
[0099] 在一实施例中,也可以根据状态信息对监控系统的所有组件模块进行划分以生成类别组件组。
[0100] 第二获取单元303,用于获取同一组类别组件组中多个组件模块之间的差异信息和共性信息。
[0101] 比如、golang组件组的hbs、transfer、judge、graph、query和alarm等组件模块。这些组件模块的共性信息包括:共用安装包、启动服务、启动指令、相同的docker基础镜像和相同的服务命名等信息;这些组件模块的差异信息包括:启动端口、挂载存储卷和副本数等信息。
[0102] 生成存储单元304,用于基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中。
[0103] 为了将监控系统的组件模块容器化,需要制作相应的文件模块,具体可采用容器集群管理系统(Kubernetes,简称K8s)对监控系统进行部署,相对应该容器文件模板包括Dockerfile模板、K8s deployment模板和k8s编排模板等。
[0104] 具体地,生成存储单元304包括变量设置子单元3041、模板生成子单元3042和信息存储子单元3043。
[0105] 变量设置子单元3041,用于对每个所述组件模块的差异信息进行变量设置。
[0106] 具体地,对每个组件模块的差异信息进行不同的变量设置。此外每个所述组件模块的差异信息中不同的差异部分进行不同变量设置。该变量设置是为差异部分设置对应的变量。
[0107] 比如,将transfer组件模块的差异信息设置对应变量x。该差异信息具体包括挂载存储卷和副本数等差异部分,进而将挂载存储卷和副本数设置对应变量x1和x2等。
[0108] 模板生成子单元3042,用于根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板。
[0109] 具体地,在将每个所述组件模块的差异信息进行变量设置后,将所述差异信息进行变量替换,根据所述变量和共性信息生成容器文件模板,即该容器模板包括共性信息和差异信息对应的变量。
[0110] 信息存储子单元3043,用于将经过所述变量设置的差异信息存储在配置文件中。
[0111] 具体地,是将所述组件模块的差异信息及其相对应的变量存储在配置文件中。
[0112] 该基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中,相对现有的部署方法不仅可以提高部署效率,同时容器文件模板和配置文件只需存储在两个不同的位置,因此有利于后续的文件管理。
[0113] 文件生成单元305,用于根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件。
[0114] 其中,该预设文件生成规则是指将配置文件的中差异信息按照预设变量方式填充在容器文件模板中,由此可以根据容器文件模板和配置文件动态地生成不同环境下的部署编排文件。其中不同环境包括开发、测试或生产等环境。
[0115] 具体地,文件生成单元305包括调用读取子单元3051和信息填充子单元3052。
[0116] 调用读取子单元3051,用于调用预设读取脚本读取所述配置文件。
[0117] 具体可以通过键入命令符的方式来调用预设读取脚本以读取所述配置文件,该预设读取脚本用于读取配置文件。
[0118] 信息填充子单元3052,用于根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。
[0119] 具体地根据所述变量对应关系将配置文件差异信息对应填充在容器文件模板的包含的变量,从而生成一个完整的部署编排文件。
[0120] 调用部署单元306,用于调用所述部署编排文件对所述监控系统进行部署。
[0121] 具体可以使用调用命令加所述部署编排文件的名称的方式,调用所述部署编排文件以对所述监控系统进行部署。
[0122] 其中,具体使用Kubernetes调用该部署编排文件已完成对所述监控系统进行部署。该Kubernetes为容器集群管理系统,可以自动协调该监控系统的组件模块,利用上述部署编排文件对该监控系统进行部署,完全不用考虑每个组件模块的资源占用情况。由此节省了人工操作,提高了部署的效率。
[0123] 请参阅图6,图6是本申请实施例提供的一种监控系统的部署装置的示意性框图。如图6所示,部署装置400包括第一获取单元401、划分生成单元402、第二获取单元403、生成存储单元404、文件生成单元405、加入标记单元406、调度管理单元407和调用部署单元408。
[0124] 第一获取单元401,用于获取所述监控系统中每个组件模块对应的组件信息,其中所述组件信息包括编程语言信息,所述编程语言信息包括Golang语言和Python语言。
[0125] 在本实施例中,第一获取单元401具体用于:根据所述编程语言信息对所述组件模块进行分类以生成Golang组件组和Python组件组。
[0126] 比如,Argus的组件模块中hbs,transfer,judge,graph,query,alarm等组件模块是由Golang语言编写的,而像portal,dashboard,links等组件模块是用Python语言写的。
[0127] 划分生成单元402,用于根据所述组件信息对所述组件模块进行划分以生成类别组件组。
[0128] 具体地,根据所述编程语言信息对所述组件模块进行分类以生成Golang组件组和Python组件组。对于Argus监控系统,该Golang组件组包括hbs、transfer、judge、graph、query和alarm等组件模块;Python组件组包括portal、dashboard和links等组件模块。
[0129] 第二获取单元403,用于获取同一组类别组件组中多个组件模块之间的差异信息和共性信息。
[0130] 具体用于获取所述Golang组件组中多个所述组件模块之间的共性信息和差异信息,以及获取所述Python组件组中多个所述组件模块之间的共性信息和差异信息。
[0131] 生成存储单元404,用于基于所述差异信息和共性信息生成容器文件模板,并将所述差异信息存储在配置文件中。
[0132] 具体用于:对每个所述组件模块的差异信息进行变量设置;根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;以及将经过所述变量设置的差异信息存储在配置文件中。
[0133] 此外,还包括保存管理单元,该保存管理单元用于还可将所述配置文件保存在预设数据库中以及通过configmap管理所述配置文件。具体是通过Kubernetes中的configmap来集中管理该监控系统的配置文件,由此提高了管理效率。
[0134] 文件生成单元405,用于根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件。
[0135] 具体用于:调用预设读取脚本读取所述配置文件;以及根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。该预设脚本执行的操作是读取所述配置文件,根据配置文件的变量对应的差异信息对容器文件模板中的变量进行描述填充,从而生成一个完成的部署编排文件。
[0136] 在本实施例中,具体是使用容器集群管理系统(Kubernetes,简称K8s)对该监控系统进行部署。相对应地,所述部署编排文件包括Dockerfile部署编排文件和K8s部署编排文件。
[0137] 加入标记单元406,用于将部署所述监控系统所需的主机加入主机资源池并对所述主机资源池中的主机进行标记以生成主机标记号。
[0138] 将这些主机加入主机资源池中,具体是将这些主机中安装docker、flannel和Kubernetes等客户端软件,启动时指定Kubernetes的master的IP,这样主机就会注册到K8s集群里,被Kubernetes的master接管,进而为将这些主机加入主机资源池中。
[0139] 对所述主机资源池中的主机进行标记以生成主机标记号,具体为将主机加入资源池后,对资源池中的主机进行打标,比如标记为主机#1、#2、#3等。这些#1、#2、#3即为主机标号。
[0140] 调度管理单元407,用于根据所述主机标记号对所述主机资源池中的主机进行调度管理。
[0141] 在本实施例中,根据所述主机标记号对所述主机资源池中的主机进行调度管理,方便K8s根据组件模块的资源占用情况选择不同的主机进行部署。
[0142] 调用部署单元408,用于调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0143] 具体可以使用调用命令加所述部署编排文件的名称的方式,调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0144] 上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图7所示的计算机设备上运行。
[0145] 请参阅图7,图7是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500设备可以是终端或服务器。
[0146] 参照图7,该计算机设备500包括通过系统总线510连接的处理器520、存储器和网络接口550,其中,存储器可以包括非易失性存储介质530和内存储器540。
[0147] 该非易失性存储介质530可存储操作系统531和计算机程序532。该计算机程序532被执行时,可使得处理器520执行一种监控系统的部署方法。
[0148] 该处理器520用于提供计算和控制能力,支撑整个计算机设备500的运行。
[0149] 该内存储器540为非易失性存储介质530中的操作系统531及计算机程序532提供高速缓存的运行环境。
[0150] 该网络接口550用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0151] 其中,所述处理器520用于运行存储在存储器中的程序代码,以实现如下程序:
[0152] 获取监控系统中每个组件模块对应的组件信息;根据所述组件信息对所述组件模块进行划分以生成类别组件组;获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中;根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及调用所述部署编排文件对所述监控系统进行部署。
[0153] 在一实施例中,处理器520在执行所述基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中时,具体执行如下程序:
[0154] 对每个所述组件模块的差异信息进行变量设置;根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;以及将经过所述变量设置的差异信息存储在配置文件中。
[0155] 在一实施例中,处理器520在执行所述根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件时,具体执行如下程序:
[0156] 调用预设读取脚本读取所述配置文件;根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。
[0157] 在一实施例中,处理器520在用于运行存储在存储器中的程序代码,以实现如下程序:
[0158] 获取监控系统中每个组件模块对应的组件信息;根据所述组件信息对所述组件模块进行划分以生成类别组件组;获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中;根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;将部署所述监控系统所需的主机加入主机资源池并对所述主机资源池中的主机进行标记以生成主机标记号;以及根据所述主机标记号对所述主机资源池中的主机进行调度管理;调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0159] 应当理解,在本申请实施例中,处理器520可以是中央处理单元(Central ProcessingUnit,CPU),该处理器520还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0160] 本领域技术人员可以理解,图7中示出的计算机设备500结构并不构成对计算机设备500的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0161] 在本申请的另一实施例中提供一种存储介质,该存储介质为计算机可读存储介质,该计算机可读存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时实现:
[0162] 获取监控系统中每个组件模块对应的组件信息;根据所述组件信息对所述组件模块进行划分以生成类别组件组;获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中;根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;以及调用所述部署编排文件对所述监控系统进行部署。
[0163] 在一实施例中,该程序指令被处理器执行所述基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中时,具体实现:
[0164] 对每个所述组件模块的差异信息进行变量设置;根据每个所述组件模块的差异信息对应的变量和所述共性信息生成容器文件模板;以及将经过所述变量设置的差异信息存储在配置文件中。
[0165] 在一实施例中,该程序指令被处理器执行所述根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件时,具体实现:
[0166] 调用预设读取脚本读取所述配置文件;根据所述变量将所述配置文件中的差异信息填充至所述容器文件模板中以生成所述部署编排文件。
[0167] 在一实施例中,该程序指令被处理器执行,还实现:
[0168] 获取监控系统中每个组件模块对应的组件信息;根据所述组件信息对所述组件模块进行划分以生成类别组件组;获取同一组类别组件组中多个组件模块之间的差异信息和共性信息;基于所述差异信息和共性信息生成容器文件模板并将所述差异信息存储在配置文件中;根据所述容器文件模板和配置文件按预设文件生成规则生成部署编排文件;将部署所述监控系统所需的主机加入主机资源池并对所述主机资源池中的主机进行标记以生成主机标记号;以及
[0169] 根据所述主机标记号对所述主机资源池中的主机进行调度管理;调用所述部署编排文件将所述监控系统部署在所述主机资源池中的主机中。
[0170] 该计算机可读存储介质可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0171] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0172] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的监控系统的部署装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0173] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0174] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。
[0175] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0176] 该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
[0177] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。