一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

声明式云平台监控采集配置动态管理和加载的系统及方法与流程

2022-04-30 16:20:43 来源:中国专利 TAG:


1.本发明涉及云计算领域,具体地说是一种声明式云平台监控采集配置动态管理和加载的系统及方法。


背景技术:

2.随着信息技术和云计算的发展,业务需求的不断变化,云平台集群规模和集群上运行的服务也不断变化。需求变化伴随着服务组件增加、服务组件的下架和服务组件的版本迭代,这样对传统的监控采集模式带来了一定挑战。
3.传统的监控模式下,监控采集器和监控对象之间的对应关系需要人工手动维护,新增、删除一个监控对象都需要人工手动维护对应监控配置文件。
4.传统的监控模式下,监控采集配置的相关参数的变化需要人工去修改维护。比如采集周期,账号和密码等;监控对象的多变带来的人工维护成本高昂且缺乏灵活性,这些因素包括集群节点的扩容缩容,不同节点有不同的监控需求,不同的系统架构有不同的监控需求,服务运行的pod的变化(pod中断重启,副本数变化等)。
5.传统的监控模式下,监控服务采用的传统sidecar注入监控采集程序的方式有着天生的缺陷,包括依赖注入管理程序且采集器有注入失败的风险和注入采集器对服务本身运行稳定性有干扰。
6.传统的监控模式下,监控采集器不支持采集配置的热加载,修改配置文件,需要重启程序才能生效。
7.故如何实现云平台监控采集配置动态管理和加载,降低人工维护成本是目前亟待解决的技术问题。


技术实现要素:

8.本发明的技术任务是提供一种声明式云平台监控采集配置动态管理和加载的系统及方法,来解决如何实现云平台监控采集配置动态管理和加载,降低人工维护成本的问题。
9.本发明的技术任务是按以下方式实现的,一种声明式云平台监控采集配置动态管理和加载的系统,该系统包括资源管理和控制器controller,监控采集器monitor-agent和配置接收处理器agent,每个集群部署一个资源管理和控制器controller,每个节点部署一个监控采集器monitor-agent和配置接收处理器agent,监控采集器monitor-agent和配置接收处理器agent运行在一个pod内,并部署在集群每个节点上;
10.资源管理和控制器controller包括事件监听模块、事件处理模块以及配置任务发送管理模块;事件监听模块用于资源管理和控制器controller监听事件;事件处理模块用于资源管理和控制器controller事件处理和配置生成封装;配置任务发送管理模块用于资源管理和控制器controller发送队列管理。
11.作为优选,资源管理和控制器controller监听事件具体如下:
12.事件监听模块监听配置资源的创建、修改和删除事件,集群节点扩容缩容事件,集群节点事件以及集群pod创建更新删除事件;
13.事件监听模块将监听到的变更事件封装配置变化消息发送到通知事件处理模块;其中配置变化信息包括变更操作类型及变更信息;变更操作类型包括增加、删除及更新。
14.更优地,资源管理和控制器controller事件处理和配置生成封装具体如下:
15.事件处理模块接收到事件后,选择执行对应的处理逻辑,更新集群元数据;集群元数据包括节点元数据、监控采集器monitor-agent的pod数据、监控采集配置数据以及声明被监控的服务组件pod数据;
16.计算对应节点采集程序的配置更新:用户在声明采集配置时,声明设置了监控对象特征匹配信息,设置agentselector声明该采集配置作用于哪些集群节点,通过节点labels去匹配对应的节点,支持节点多标签键值对匹配;设置podselector声明该采集配置对应哪些服务组件的pod,通过pod的labels去匹配对应的pod,支持pod多标签键值对匹配;
17.封装消息,入队管理;监控采集封装消息包括监控采集具体配置、下发节点的信息及对应执行的动作action;下发节点的信息包括节点名称、节点运行的监控采集器monitor-agent pod的ip;对应执行的动作action包括增加、删除及修改。
18.更优地,资源管理和控制器controller发送队列管理具体如下:
19.配置任务发送管理模块实时监听入队信号,收到入队信号,处理队列中同一节点任务,进行任务合并处理,重新封装任务,将发送任务入队;
20.配置任务发送管理模块周期轮询执行配置发送任务,将队列里面的发送任务下发对应采集端,并判断是否发送成功:
21.①
、若发送成功,则任务出队;
22.②
、若发送失败,则记录重试次数,计算下次发送时间,重新入队;
23.其中,重发时间计算公式如下:
24.t=t1 (retrynum 1)*interval
25.其中,t表示下次重发时间;t1表示当前时间;retrynum表示重试次数;interval表示重试周期。
26.更优地,所述配置接收处理器agent具体如下:
27.(1)、配置下发到配置接收处理器agent;
28.(2)、配置接收处理器agent接收到配置后,读取下发配置及消息头携带的md5值;
29.(3)、配置接收处理器agent根据配置内容生成md5与下发的md5值比较,进行配置完整性校验:
30.①
、若校验通过,则执行步骤(4);
31.②
、若校验未通过,则返回校验失败状态,等待下次下发;
32.(4)、配置完整性校验通过后,执行预加载,并预加载是否成功:
33.①
、若成功,则通知采集程序reload加载配置;
34.②
、若预加载失败,则返回预加载失败状态,打印相关失败日志信息。
35.一种声明式云平台监控采集配置动态管理和加载的方法,该方法是基于事件驱动,监听集群上监控采集配置新增、删除及修改的变化、集群节点信息的变化、监控对象的变化和监控采集器的变化,触发对应的更新处理逻辑,计算配置信息,下发到对应节点上的
监控采集器,并重新加载,实现动态更新;再利用kubernetes crd机制将监控采集配置自定义扩展成kubernetes(k8s)资源进行新增、删除、修改及查找管理,通过kubernetes现有成熟的资源编排和管理功能实现对监控采集配置的动态管理和加载。
36.作为优选,该方法具体如下:
37.s1、通过将监控采集配置定义成一个kubernetes资源,使得用户能够根据需求创建、更新及删除对应的监控采集配置资源,实现对监控采集配置的动态管理和加载;并利用kubernetes自定义资源扩展特性实现对监控采集配置资源的统一模型定义;资源模型的定义如下:
38.apiversion:lma.inspur.com/v1alpha1
39.kind:monitorcollectorconfig
40.metadata:
41.name:string
42.namespace:string
43.spec:
44.conf:string
45.podselector:[]string
[0046]
agentselector:[]string;
[0047]
资源模型名称:monitorcollectorconfig;
[0048]
资源模型配置内容:spec.conf声明的采集配置内容,spec.agentselector节点标签特征匹配,类型是列表,多个特征标签匹配计算采用逻辑与实现,功能是声明该配置将作用于特征匹配到的节点;spec.podselector是pod标签特征匹配,类型是列表,多个特征标签匹配计算采用逻辑与实现,功能是声明该配置将被作用于特征匹配到的服务pod;
[0049]
资源模型元数据:metadata.name监控采集配置资源名称,metadata.namespace该采集配置资源定义的命名空间;
[0050]
s2、通过监听监控采集配置资源的创建修改删除事件、采集监控采集器monitor-agent的pod创建删除事件、集群上运行的已经声明被监控的服务组件pod的创建删除事件以及云平台节点事件进行动态计算和更新监控采集配置,
[0051]
s3、通过监控对象所在节点进行配置下发信息封装处理;其中,封装的一个监控采集发送任务包括监控采集具体配置、下发节点的信息以及本次任务发送的类型;任务发送的类型包括新增、更新及删除;下发节点的信息包括节点名称及节点运行的监控采集器monitor-agent pod的ip;
[0052]
s4、入队到统一的发送队列管理模块进行管理后,封装生成一个配置发送任务,并通过发送任务队列将任务信息下发到对应节点的配置接收处理器agent,通过配置接收处理器agent通知监控采集器monitor-agent将采集配置重新加载生效。
[0053]
更优地,监听集群上监控采集配置新增、删除及修改的变化具体如下:
[0054]
(1)、监听监控配置资源事件:资源管理和控制器controller接收到监控采集配置资源事件并处理,并判断监控采集配置资源事件的类型:
[0055]

、若是创建事件,则执行步骤(2);
[0056]

、若是删除事件,则执行步骤(3);
[0057]

、若是更新事件,则执行步骤(4);
[0058]
(2)处理创建事件:通过特征匹配featureselector生成下发任务消息agentconfigs,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行步骤(5);
[0059]
其中,特征匹配featureselector计算过程为:通过agentselector特征匹配生成节点资源的监控配置文件,自定义的监控配置资源里面的agentselector列表和集群节点标签之间进行键值对比较,生成配置文件(filename=crnamespace_crname.conf);通过podselector特征匹配计算对应服务监控的配置,生成配置文件(filename=crnamespace_podname.conf);服务ip的动态发现和配置生成是通过获取服务的pod ip实现的;
[0060]
(3)、处理删除事件:通过特征匹配featureselector生成下发任务消息agentconfigs,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行(5);
[0061]
(4)、处理更新事件:通过特征匹配featureselector生成下发任务消息agentconfigs,判断是否为是agentselector或podselector修改:
[0062]
若是,则需要生成旧的匹配规则下配置文件的下发删除任务信息,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行步骤(5);
[0063]
(5)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果是否成功:
[0064]

、若发送成功,则任务结束;
[0065]

、若发送失败,则记录状态,任务重新入队,下一步执行步骤(6);
[0066]
(6)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0067]

、若校验失败,则返回执行结果;
[0068]

、若校验成功,则执行步骤(7);
[0069]
(7)、执行预加载,并判断是否预加载成功:
[0070]

、若预加载失败,则返回执行结果;
[0071]

、若预加载成功,则执行步骤(8);
[0072]
(8)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0073]
更优地,监听集群节点信息的变化具体如下:
[0074]
(1)、事件接收:判断是否是节点标签更新:
[0075]
若是节点标签更新事件,则通过特征匹配featureselector生成下发任务消息agentconfigs,action=create新加一个监控配置,action=delete删除当前不匹配的监控配置,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发;
[0076]
(2)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果是否成功:
[0077]

、若是,则任务结束;
[0078]

、若否,则记录状态,任务重新入队,下一步执行步骤(3);
[0079]
(3)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0080]

、若校验失败,则返回执行结果;
[0081]

、若校验成功,则执行步骤(4);
[0082]
(4)、执行预加载,并判断是否执行成功:
[0083]

、若执行失败,则返回执行结果;
[0084]

、若执行成功,则执行步骤(5);
[0085]
(5)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0086]
更优地,监听采集监控采集器monitor-agent的pod创建删除事件具体如下:
[0087]
(1)、事件接收:判断是否是监控采集器pod事件:
[0088]
若是,则判断是否是pod ready事件(其他事件忽略):
[0089]
若是配置接收处理器agent pod ready事件,则通过特征匹配featureselector生成下发任务消息agentconfigs,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发,下一步执行步骤(3);
[0090]
(2)、事件接收:判断是否是已经声明的被监控服务的pod:
[0091]
若是,则通过特征匹配featureselector生成下发任务消息agentconfigs,pod ready事件action=create,pod删除事件action=delete,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发,下一步执行步骤(3);
[0092]
(3)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果是否成功:
[0093]

、若是,则任务结束;
[0094]

、若否,则记录状态,任务重新入队,下一步执行步骤(4);
[0095]
(4)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0096]

、若校验失败,则返回执行结果;
[0097]

、若校验成功,则执行步骤(5);
[0098]
(5)、执行预加载,并判断是否执行成功:
[0099]

、若执行失败,则返回执行结果;
[0100]

、若执行成功,则执行步骤(6);
[0101]
(6)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0102]
本发明的声明式云平台监控采集配置动态管理和加载的系统及方法具有以下优点:
[0103]
(一)本发明充分发挥kubernetescrd特性,定义一个统一的监控采集配置资源模型,提供统一的标准接口方便用户管理自己服务组件的监控采集配置。充分利用kubernetes资源事件监听机制实时的动态计算和更新云平台上已声明的监控资源信息和对应节点采集器的监控采集配置,还解决了用户自定义监控采集配置的问题、动态更新和加载监控配置的问题,采用非侵入的外部监控探测方式实现对平台服务组件的监控,规避传统注入采集器的方式带来的风险和维护成本;同时通过统一的监控采集配置模型、统一
的管理方式以及实时动态计算监控对象和动态加载采集配置的特性,减低了人工维护成本;
[0104]
(二)本发明允许用户根据实际需求定制监控采集配置,根据监控对象(可能是一个服务,一个文件,一个设备等等)的实际需求编写对应的监控采集配置,实现了用户对采集配置的自我管理;
[0105]
(三)本发明实现了声明式的采集配置:用户可以在部署服务的时候自定义采集配置,包括采集插件类型,采集周期,采集器支持的其他参数设置等;
[0106]
(四)本发明实现了用户管理配置资源的增删改:新增服务组件时创建对应的采集配置资源,组件版本迭代时更新对应的采集配置资源,下架服务组件时删除对应的配置资源;
[0107]
(五)本发明采用非侵入性的外部采集探针方式实现监控采集:在服务运行的节点上部署采集器,下发该服务对应的采集配置给对应节点采集器实现对服务的监控采集,如附图5所示,新旧模式服务采集配置区别说明:
[0108]
比较传统sidecar模式,传统模式下因为服务组件和监控采集器运行在一个pod里面,监控采集配置中服务ip对应设置为127.0.0.1即可,但是本发明的非侵入监控采集模式下服务pod对应的监控采集配置中服务ip应该设置为pod ip;
[0109]
传统sidecar模式服务监控采集配置:
[0110]
conf:
[0111]
server=“http://127.0.0.1:80/status”[0112]
非倾入模式服务监控采集配置:
[0113]
conf:
[0114]
server=“${podip}:80/status”[0115]
controller会动态获取podip并替换变量${podip},生成pod对应server配置,下发并加载配置到pod运行节点的采集器;
[0116]
(六)本发明实现了采集对象的动态匹配和发现:用户在定义采集配置时需要声明监控对象对应的匹配特征,作用是管理程序可以通过监听集群对应资源的变化,通过用户定义监控配置中的匹配特征做动态处理和更新监控配置;
[0117]
(七)本发明实现了采集配置的动态加载,用户对采集配置的增删改操作、及监控对象的动态变化(可能是节点扩缩容,节点标签的变化,服务组件的pod的创建删除),会触发监控配置的重新计算和更新下发,并同步更新到对应采集器的配置文件中,并且被采集器重新加载生效(采集器实现reload接口,实现对监控配置的热加载支持);
[0118]
(八)用户自定义管理监控采集配置,实现用户根据自己的实际需求定制对应的监控采集配置,对采集配置进行增删改管理;
[0119]
(九)本发明实现了动态加载,可以实现对用户声明的监控对象进行实时监控,监控对象信息的实时更新,对应同步更新加载对应的监控采集配置,降低人工维护采集配置文件的成本;
[0120]
(十)本发明实现了监控采集器和服务组件解耦,解决了传统监控服务组件采用的sidecar模式部署服务组件时依赖采集器注入问题,规避采集器干扰服务组件运行的风险。
附图说明
[0121]
下面结合附图对本发明进一步说明。
[0122]
附图1为声明式云平台监控采集配置动态管理和加载的系统的部署架构图;
[0123]
附图2为资源管理和控制器controller监听事件的流程框图;
[0124]
附图3为资源管理和控制器controller事件处理和配置生成封装的流程框图;
[0125]
附图4为资源管理和控制器controller发送队列管理的流程框图;
[0126]
附图5为新旧架构服务监控模式对比示意图。
具体实施方式
[0127]
参照说明书附图和具体实施例对本发明的声明式云平台监控采集配置动态管理和加载的系统及方法作以下详细地说明。
[0128]
实施例1:
[0129]
如附图1所示,本发明的声明式云平台监控采集配置动态管理和加载的系统,该系统包括资源管理和控制器controller,监控采集器monitor-agent和配置接收处理器agent,每个集群部署一个资源管理和控制器controller,每个节点部署一个监控采集器monitor-agent和配置接收处理器agent,监控采集器monitor-agent和配置接收处理器agent运行在一个pod内,并部署在集群每个节点上;
[0130]
资源管理和控制器controller包括事件监听模块、事件处理模块以及配置任务发送管理模块;事件监听模块用于资源管理和控制器controller监听事件;事件处理模块用于资源管理和控制器controller事件处理和配置生成封装;配置任务发送管理模块用于资源管理和控制器controller发送队列管理。
[0131]
如附图2所示,本实施例中的资源管理和控制器controller监听事件具体如下:
[0132]
(1)、事件监听模块监听配置资源的创建、修改和删除事件,集群节点扩容缩容事件,集群节点事件以及集群pod创建更新删除事件;
[0133]
(2)、事件监听模块将监听到的变更事件封装配置变化消息发送到通知事件处理模块;其中配置变化信息包括变更操作类型及变更信息;变更操作类型包括增加、删除及更新。
[0134]
如附图3所示,本实施例中的资源管理和控制器controller事件处理和配置生成封装具体如下:
[0135]
(1)、事件处理模块接收到事件后,选择执行对应的处理逻辑,更新集群元数据;集群元数据包括节点元数据、监控采集器monitor-agent的pod数据、监控采集配置数据以及声明被监控的服务组件pod数据;
[0136]
(2)、计算对应节点采集程序的配置更新:用户在声明采集配置时,声明设置了监控对象特征匹配信息,设置agentselector声明该采集配置作用于哪些集群节点,通过节点labels去匹配对应的节点,支持节点多标签键值对匹配;设置podselector声明该采集配置对应哪些服务组件的pod,通过pod的labels去匹配对应的pod,支持pod多标签键值对匹配;
[0137]
(3)、封装消息,入队管理;监控采集封装消息包括监控采集具体配置、下发节点的信息及对应执行的动作action;下发节点的信息包括节点名称、节点运行的监控采集器monitor-agent pod的ip;对应执行的动作action包括增加、删除及修改。
[0138]
如附图4所示,本实施例中的资源管理和控制器controller发送队列管理具体如下:
[0139]
(1)、配置任务发送管理模块实时监听入队信号,收到入队信号,处理队列中同一节点任务,进行任务合并处理,重新封装任务,将发送任务入队;
[0140]
(2)、配置任务发送管理模块周期轮询执行配置发送任务,将队列里面的发送任务下发对应采集端,并判断是否发送成功:
[0141]

、若发送成功,则任务出队;
[0142]

、若发送失败,则记录重试次数,计算下次发送时间,重新入队;
[0143]
其中,重发时间计算公式如下:
[0144]
t=t1 (retrynum 1)*interval
[0145]
其中,t表示下次重发时间;t1表示当前时间;retrynum表示重试次数;interval表示重试周期。
[0146]
本实施例中的配置接收处理器agent具体如下:
[0147]
(1)、配置下发到配置接收处理器agent;
[0148]
(2)、配置接收处理器agent接收到配置后,读取下发配置及消息头携带的md5值;
[0149]
(3)、配置接收处理器agent根据配置内容生成md5与下发的md5值比较,进行配置完整性校验:
[0150]

、若校验通过,则执行步骤(4);
[0151]

、若校验未通过,则返回校验失败状态,等待下次下发;
[0152]
(4)、配置完整性校验通过后,执行预加载,并预加载是否成功:
[0153]

、若成功,则通知采集程序reload加载配置;
[0154]

、若预加载失败,则返回预加载失败状态,打印相关失败日志信息。
[0155]
实施例2:
[0156]
本发明的声明式云平台监控采集配置动态管理和加载的方法,该方法是基于事件驱动,监听集群上监控采集配置新增、删除及修改的变化、集群节点信息的变化、监控对象的变化和监控采集器的变化,触发对应的更新处理逻辑,计算配置信息,下发到对应节点上的监控采集器,并重新加载,实现动态更新;再利用kubernetes crd机制将监控采集配置自定义扩展成kubernetes(k8s)资源进行新增、删除、修改及查找管理,通过kubernetes现有成熟的资源编排和管理功能实现对监控采集配置的动态管理和加载。
[0157]
作为优选,该方法具体如下:
[0158]
s1、通过将监控采集配置定义成一个kubernetes资源,使得用户能够根据需求创建、更新及删除对应的监控采集配置资源,实现对监控采集配置的动态管理和加载;并利用kubernetes自定义资源扩展特性实现对监控采集配置资源的统一模型定义;资源模型的定义如下:
[0159]
apiversion:lma.inspur.com/v1alpha1
[0160]
kind:monitorcollectorconfig
[0161]
metadata:
[0162]
name:string
[0163]
namespace:string
[0164]
spec:
[0165]
conf:string
[0166]
podselector:[]string
[0167]
agentselector:[]string;
[0168]
资源模型名称:monitorcollectorconfig;
[0169]
资源模型配置内容:spec.conf声明的采集配置内容,spec.agentselector节点标签特征匹配,类型是列表,多个特征标签匹配计算采用逻辑与实现,功能是声明该配置将作用于特征匹配到的节点;spec.podselector是pod标签特征匹配,类型是列表,多个特征标签匹配计算采用逻辑与实现,功能是声明该配置将被作用于特征匹配到的服务pod;
[0170]
资源模型元数据:metadata.name监控采集配置资源名称,metadata.namespace该采集配置资源定义的命名空间;
[0171]
示例:
[0172]
```
[0173]
apiversion:lma.inspur.com/v1alpha1
[0174]
kind:monitorcollectorconfig
[0175]
metadata:
[0176]
name:edac
[0177]
namespace:monitoring
[0178]
spec:
[0179]
conf:|-[0180]

//具体的配置内容
[0181]
agentselector:
[0182]-node-role.kubernetes.io/bare-metal:enabled
[0183]-kubernetes.io/arch:amd64
[0184]
```
[0185]
```
[0186]
apiversion:lma.inspur.com/v1alpha1
[0187]
kind:monitorcollectorconfig
[0188]
metadata:
[0189]
name:redis
[0190]
namespace:common
[0191]
spec:
[0192]
conf:|-[0193]

//具体的配置内容
[0194]
podselector:
[0195]-app=redis4-ha
[0196]-component=server
[0197]
```
[0198]
其中,filename:配置文件名称;crnamespace:监控配置资源的命名空间;crname:
监控配置资源的名称;podname:通过特征匹配到的被监控的服务组件pod名称;agentconfigs:下发任务消息;agentconfigs(nodename,agentpodip,{action,filename,content}),agentconfigs包含信息:nodename:节点名称;agentpodip:采集器podip;action:对应文件的执行操作(create,update,delete);filename:配置文件名称;content:filename文件的内容。
[0199]
s2、通过监听监控采集配置资源的创建修改删除事件、采集监控采集器monitor-agent的pod创建删除事件、集群上运行的已经声明被监控的服务组件pod的创建删除事件以及云平台节点事件进行动态计算和更新监控采集配置,
[0200]
s3、通过监控对象所在节点进行配置下发信息封装处理;其中,封装的一个监控采集发送任务包括监控采集具体配置、下发节点的信息以及本次任务发送的类型;任务发送的类型包括新增、更新及删除;下发节点的信息包括节点名称及节点运行的监控采集器monitor-agent pod的ip;
[0201]
s4、入队到统一的发送队列管理模块进行管理后,封装生成一个配置发送任务,并通过发送任务队列将任务信息下发到对应节点的配置接收处理器agent,通过配置接收处理器agent通知监控采集器monitor-agent将采集配置重新加载生效。
[0202]
本实施例中的监听集群上监控采集配置新增、删除及修改的变化具体如下:
[0203]
(1)、监听监控配置资源事件:资源管理和控制器controller接收到监控采集配置资源事件并处理,并判断监控采集配置资源事件的类型:
[0204]

、若是创建事件,则执行步骤(2);
[0205]

、若是删除事件,则执行步骤(3);
[0206]

、若是更新事件,则执行步骤(4);
[0207]
(2)处理创建事件:通过特征匹配featureselector生成下发任务消息agentconfigs,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行步骤(5);
[0208]
其中,特征匹配featureselector计算过程为:通过agentselector特征匹配生成节点资源的监控配置文件,自定义的监控配置资源里面的agentselector列表和集群节点标签之间进行键值对比较,生成配置文件(filename=crnamespace_crname.conf);通过podselector特征匹配计算对应服务监控的配置,生成配置文件(filename=crnamespace_podname.conf);服务ip的动态发现和配置生成是通过获取服务的pod ip实现的;
[0209]
(3)、处理删除事件:通过特征匹配featureselector生成下发任务消息agentconfigs,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行(5);
[0210]
(4)、处理更新事件:通过特征匹配featureselector生成下发任务消息agentconfigs,判断是否为是agentselector或podselector修改:
[0211]
若是,则需要生成旧的匹配规则下配置文件的下发删除任务信息,按照nodename生成多个下发任务,发送到队列管理模块,下一步执行步骤(5);
[0212]
(5)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果是否成功:
[0213]

、若发送成功,则任务结束;
[0214]

、若发送失败,则记录状态,任务重新入队,下一步执行步骤(6);
[0215]
(6)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0216]

、若校验失败,则返回执行结果;
[0217]

、若校验成功,则执行步骤(7);
[0218]
(7)、执行预加载,并判断是否预加载成功:
[0219]

、若预加载失败,则返回执行结果;
[0220]

、若预加载成功,则执行步骤(8);
[0221]
(8)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0222]
更优地,监听集群节点信息的变化具体如下:
[0223]
(1)、事件接收:判断是否是节点标签更新:
[0224]
若是节点标签更新事件,则通过特征匹配featureselector生成下发任务消息agentconfigs,action=create新加一个监控配置,action=delete删除当前不匹配的监控配置,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发;
[0225]
(2)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果是否成功:
[0226]

、若是,则任务结束;
[0227]

、若否,则记录状态,任务重新入队,下一步执行步骤(3);
[0228]
(3)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0229]

、若校验失败,则返回执行结果;
[0230]

、若校验成功,则执行步骤(4);
[0231]
(4)、执行预加载,并判断是否执行成功:
[0232]

、若执行失败,则返回执行结果;
[0233]

、若执行成功,则执行步骤(5);
[0234]
(5)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0235]
更优地,监听采集监控采集器monitor-agent的pod创建删除事件具体如下:
[0236]
(1)、事件接收:判断是否是监控采集器pod事件:
[0237]
若是,则判断是否是pod ready事件(其他事件忽略):
[0238]
若是配置接收处理器agent pod ready事件,则通过特征匹配featureselector生成下发任务消息agentconfigs,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发,下一步执行步骤(3);
[0239]
(2)、事件接收:判断是否是已经声明的被监控服务的pod:
[0240]
若是,则通过特征匹配featureselector生成下发任务消息agentconfigs,pod ready事件action=create,pod删除事件action=delete,生成更新任务发送到队列管理模块,合并处理同节点配置发送任务,发送任务入队列等待下发,下一步执行步骤(3);
[0241]
(3)、队列管理模块轮询处理队列,发送配置更新,记录发送结果,并判断发送结果
是否成功:
[0242]

、若是,则任务结束;
[0243]

、若否,则记录状态,任务重新入队,下一步执行步骤(4);
[0244]
(4)、lma-agent接收到消息,处理配置更新任务,校验配置,并判断是否校验成功:
[0245]

、若校验失败,则返回执行结果;
[0246]

、若校验成功,则执行步骤(5);
[0247]
(5)、执行预加载,并判断是否执行成功:
[0248]

、若执行失败,则返回执行结果;
[0249]

、若执行成功,则执行步骤(6);
[0250]
(6)、lma-agent更新节点采集配置文件,调用监控采集器monitor-agent的reload接口通知监控采集器monitor-agent执行reload,监控采集器monitor-agent热加载采集配置,配置加载生效。
[0251]
本发明利用kubernetes自定义资源扩展特性定义统一的监控采集配置资源模型,实现对用户自定义监控采集配置资源的管理,支持声明式的监控对象特征匹配,支持监控采集配置的动态加载,通过对平台资源的事件监听实现对监控对象的实时发现和监控采集配置的实时同步,对整个集群的监控资源进行统一管理,及配置任务下发的统一管理调度,并采用非侵入性的监控采集实现方式实现监控采集和服务组件之间解耦,实现监控采集和服务组件之间解耦,废弃了传统sidecar注入采集器的侵入性监控采集方式。通过对监控采集配置资源已经声明匹配到的业务组件pod的事件实时监听,自动感知pod的变化,动态更新pod运行节点上对应采集器的采集配置。
[0252]
本发明实现监控采集配置的动态管理,动态管理包括两个方面,一方面是对监控采集配置资源的动态管理,controller通过对监控采集配置资源的事件监听实现对监控采集配置的增删改管理,监听到监控采集配置资源事件通过特征匹配计算生成对应节点采集器的监控配置变更信息(监控配置文件的创建、更新、删除),然后下发给对应采集器,agentselector匹配节点标签,podselector匹配pod标签;另一方面是对监控对象的动态管理,controller实时监听集群节点事件、集群服务组件pod事件,通过特征匹配计算生成对应节点采集器的监控配置变更信息(对监控配置文件的创建、更新、删除),然后下发给对应采集器,agentselector匹配节点标签,podselector匹配pod标签。
[0253]
本发明实现了对用户自定义监控采集配置资源的管理,用户可以根据需求创建、更新、删除对应的监控采集配置资源,同时支持监控采集配置的动态加载,监控采集器支持配置reload,暴露reload接口,外部通知reload接口触发reload逻辑,配置更新生效,进而解决了传统监控采集器无法热加载采集配置的缺陷;还支持声明式的监控对象特征匹配,用户在自定义监控采集配置时需要声明该配置选择的监控对象;并通过对平台资源的事件监听实现对监控对象的实时发现和监控采集配置的实时同步更新,对云平台监控资源(包括用户声明的监控采集配置和监控对象资源)进行统一处理和计算,对配置下发任务进行统一的队列调度和发送失败重新入队重试管理。
[0254]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进
行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献