CN114564314A - 一种对集群内监控数据进行采集的方法和装置 - Google Patents

一种对集群内监控数据进行采集的方法和装置 Download PDF

Info

Publication number
CN114564314A
CN114564314A CN202210253499.1A CN202210253499A CN114564314A CN 114564314 A CN114564314 A CN 114564314A CN 202210253499 A CN202210253499 A CN 202210253499A CN 114564314 A CN114564314 A CN 114564314A
Authority
CN
China
Prior art keywords
component
acquisition
target
acquisition object
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210253499.1A
Other languages
English (en)
Inventor
倪旭光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Information Technology Co Ltd
Original Assignee
Jingdong Technology Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Information Technology Co Ltd filed Critical Jingdong Technology Information Technology Co Ltd
Priority to CN202210253499.1A priority Critical patent/CN114564314A/zh
Publication of CN114564314A publication Critical patent/CN114564314A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供一种对集群内监控数据进行采集的方法和装置,集群中包括协调组件和至少一个分片组件,该方法具体包括:获取待分配的采集对象以及所述采集对象对应的时序数量;基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。实现了对集群部署的每一分片组件分配的目标采集对象对应的时序数量能够保持相对的均衡。

Description

一种对集群内监控数据进行采集的方法和装置
技术领域
本公开涉及云原生技术领域,尤其涉及一种对集群内监控数据进行采集的方法和装置。
背景技术
现有技术中,对采集任务拆分的方案主要有两种:一种是运用哈希算法取模的方法,利用原生监控组件提供的重写机制,将每个要采集的数据按特定维度进行哈希,获取分片,原生监控组件去配置要采集的分片。第二种是对全部采集工作进行划分,每个原生监控组件的采集任务和配置完全独立。但是,上述两种方案虽然对采集任务拆分之后,可以实现原生监控组件的横向扩展的效果,降低单实例的采集压力,但是并不能解决负载均衡的问题以及集群的动态扩缩容。
发明内容
本公开提供一种对集群内监控数据进行采集的方法和装置,实现了对集群部署的每一分片组件分配的目标采集对象对应的时序数量能够保持相对的均衡。
第一方面,本公开提供一种对集群内监控数据进行采集的方法,集群中包括协调组件和至少一个分片组件,该方法具体包括:
获取待分配的采集对象以及所述采集对象对应的时序数量;
基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;
将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;
基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
根据本公开提供的对集群内监控数据进行采集的方法,所述协调组件包括扩展管理器;
所述方法还包括:
在新增采集对象的情况下,获取所述新增采集对象对应的时序数量;
分别查看所述分片组件对应的时序数量,并将所述新增采集对象的时序数量分别与所述分片组件对应的时序数量进行相加,得到每一分片组件对应的时序总量;
若所述每一分片组件对应的时序总量大于预设的第一阈值,调用所述扩展管理器添加新的分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表;
若任意一个或多个分片组件对应的时序总量小于等于预设的第一阈值,在所述一个或多个分片组件中选取时序总量最小值对应的分片组件接收新增采集对象,并生成所述接收新增采集对象的分片组件对应的采集对象分配列表。
根据本公开提供的对集群内监控数据进行采集的方法,所述方法还包括:
在减少采集对象的情况下,分别查看所述分片组件对应的时序数量;
若任意一个或多个分片组件对应的时序数量小于预设的第二阈值,调用所述扩展管理器减少分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表。
根据本公开提供的对集群内监控数据进行采集的方法,所述协调组件中包括目标管理器和配置管理器;
所述根据所述分片组件对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表包括:
根据所述分片组件对应的时序数量调用所述目标管理器对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并通过所述配置管理器生成每个所述目标采集对象对应的采集对象分配列表。
根据本公开提供的对集群内监控数据进行采集的方法,所述调用分片组件基于所述采集对象分配列表对所述目标采集对象进行采集,包括:
通过所述配置管理器将所述采集对象分配列表定期更新至配置文件中,并将所述配置文件存储在部署所述分片组件对应的容器组中;
基于所述配置文件,通过所述分片组件对所述目标采集对象进行采集。
根据本公开提供的对集群内监控数据进行采集的方法,在所述将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表对所述目标采集对象进行采集之前,包括:
对所述目标采集对象执行重写标签操作,生成带有重写标签的目标采集对象;
基于所述带有重写标签的目标采集对象生成采集对象分配列表。
第二方面,本公开提供一种对集群内监控数据进行采集的装置,集群中包括协调组件和至少一个分片组件,该装置具体包括:
获取模块,用于获取待分配的采集对象以及所述采集对象对应的时序数量;
分配模块,用于基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;
调用模块,用于将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;
采集模块,用于基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
第三方面,本公开提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一项所述对集群内监控数据进行采集的方法的步骤。
第四方面,本公开提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一项所述对集群内监控数据进行采集的方法的步骤。
第五方面,本公开提供一种计算机程序产品,包括计算机程序所述计算机程序被处理器执行时实现如上述任一项所述对集群内监控数据进行采集的方法的步骤。
本公开提供的一种对集群内监控数据进行采集的方法和装置,通过获取集群中待分配的采集对象以及采集对象对应的时序数量,根据采集对象对应的时序数量调用集群内的协调组件对待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,使每个分片组件中对应的时序数量保持均衡,并生成每个目标采集对象对应的采集对象分配列表;将采集对象分配列表发送给对应的分片组件,调用分片组件基于采集对象分配列表获取目标采集对象,并通过分片组件对目标采集对象对应的监控数据进行采集。本公开实现了对集群部署的每一分片组件分配的目标采集对象对应的时序数量能够保持相对的均衡。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种对集群内监控数据进行采集的方法的流程示意图;
图2是本公开实施例提供的对集群内监控数据进行采集的整体框图;
图3是本公开实施例提供的协调组件的框图;
图4是本公开实施例提供的对集群内监控数据进行采集的具体执行步骤的示意图;
图5是本公开实施例提供的一种对集群内监控数据进行采集的装置;
图6是本公开实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开实施例一部分实施例,而不是全部的实施例。基于本公开实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开实施例保护的范围。
集群(Cluster)是计算、存储和网络资源的集合,K8s利用这些资源运行各种基于容器的应用。集群的每个组成点称为节点(Node),由节点组合形成群集。Node的职责是运行容器应用,同时根据Cluster的要求管理容器的生命周期。Node运行在Linux的操作系统上,可以是物理机或者是虚拟机。
在集群上安装了K8s平台,K8s全称为Kubernetes,是一个容器集群管理系统,底层基于Docker、Rkt等容器技术,提供强大的应用管理和资源管理调度能力。K8s具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配置额管理能力。同时,K8s提供了完善的管理工具,这些工具覆盖了包括开发、测试部署、运维监控在内的各个环节。因此,K8s是一个全新的、基于容器技术的分布式架构解决方案,并且,是一个一站式的、完备的分布式系统开发和支撑平台。
Prometheus是一套系统监控告警框架,由Go语言编写而成,是K8s集群的核心监控系统,相比传统监控系统,Prometheus具有如下优势:
(1)强大的多维度数据模型:时序数据由监控指标(metric)名字和键值对形式的标签,提供灵活的多维标签组合查询方式。
(2)灵活而强大的查询语句(PromQL):在同一个查询语句中,可以对多个metric进行乘法、加法、连接、取分位数等操作。
(3)高效且灵活的存储方案:高性能本地时序数据库,单机可支持上千万的监控数据存储,同时可以根据需要对接第三方存储产品。
(4)易于管理:Prometheus Server是一个单独的二进制文件,可直接在本地启动工作,不依赖分布式存储;并且提供了容器化部署镜像,可以方便地在容器中拉起监控服务。
(5)支持多种发现机制:支持通过静态文件配置和动态发现机制来发现被监控的目标对象,自动完成数据采集。Prometheus目前支持Kubernetes、etcd、Consul等多种服务发现机制,减少运维手动配置,这对于云环境下的弹性伸缩非常重要。
(6)良好的可视化:有多种可视化图形界面,可以很方便地集合Grafana等图形用户界面(Graphical User Interface,GUI)组件进行监控结果的数据展示;基于Prometheus提供的API,用户还可以实现自己的监控可视化UI。
(7)易于伸缩:通过使用功能分区(sharing)+联邦集群(federation)可以对Prometheus进行扩展,形成一个逻辑集群;Prometheus提供多种语言的客户端SDK,这些SDK可以快速使应用程序进入Prometheus的监控中。
(8)采用HTTP:使用pull方式拉取数据,简单易用。
采用Prometheus实现大规模k8s集群监控,当面临性能瓶颈时,目前的解决方案一般是对采集任务进行拆分,也就是对集群部署多个Prometheus实例(每一个Prometheus实例也可称为分片组件),每一个Prometheus实例执行一部分的采集任务,这样在一定程度上实现横向扩展的目的。现有技术中,对采集任务拆分的方案主要有两种:一种是hash_mod,Prometheus支持通过Relabel机制,在配置文件中,对采集上来的数据进行hash,通过在不同Prometheus实例的配置文件中指定不同的moduleID来进行分片化,然后通过联邦,Thanos等方式将数据进行统一汇总。第二种是对全部job进行划分,每个Prometheus实例的采集任务和配置完全独立。
上述两种方案虽然对采集任务拆分之后,可以实现Prometheus实例横向扩展的效果,降低单实例的采集压力,但是两种方案都存在以下缺点:
(1)对预采集对象要有所了解:使用上述方法的前提是使用者必须对采集对象会上报的数据有所了解,例如必须知道采集对象会上报某个用于hash_mod的label,或者必须知道不同job的整体规模,才能对job进行划分。
(2)Prometheus实例负载不均衡:虽然上述方案预期都是希望将数据打散到不同Prometheus实例上,但实际上通过某些label的值进行hash_mod的,或者按job进行划分的方式并不能保证每个实例最终所采集的Series数是均衡的,实例依旧存在内存占用过高的风险。
(3)都不支持集群的动态扩缩容:由于Prometheus资源消耗和k8s集群规模是相关的,所以在日常运维过程中,Prometheus实例数量以及规格基本靠经验获得,部署之后,通过采集对象得知用量变化,人工修改配置最终实现集群的扩缩容,整个过程复杂并且不可靠。
本公开实施例提供的一种对集群内监控数据进行采集的方法主要体现在对集群内的采集对象进行采集的阶段,在大规模的k8s集群中Prometheus能够实现横向扩展的情况下,不可避免的需要考虑对采集任务分配的问题,该方法用以解决现有技术中的两种方案的缺陷,实现了对集群部署的每个Prometheus实例负载相对均衡,并且能够支持集群的动态扩缩容。
参照图1所示,为本公开实施例提供的一种对集群内监控数据进行采集的方法的流程示意图,在集群中包括协调组件和至少一个分片组件。
协调组件指的是Coordinator,支持采集任务的均衡分配,另外,Coordinator也负责根据采集对象的规模以及负载的变化实现Prometheus的增加或减少分片组件。
分片组件指的是对集群内部署的Prometheus实例,集群中包括至少一个分片组件,可以理解为对集群部署至少一个Prometheus实例。
该方法具体包括:
110,获取待分配的采集对象以及所述采集对象对应的时序数量。
该步骤中,待分配的采集对象为Target,指的是按Prometheus格式所读取的采集对象。
分片组件指的是Prometheus分片,可以理解为在一个集群里会部署多个Prometheus实例,每个实例负责采集一部分数据,所以每个实例都叫做一个Prometheus分片。
时序数量指的是Series的数量,对应的,Series是由监控指标名称(metric),以及一组key/value标签定义的,具有相同的名字以及标签则属于同一时间序列。
120,基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表。
该步骤中,协调组件指的是Coordinator,根据采集对象Target对应的Series的数量,通过Coordinator将待分配的采集对象分配至每一Prometheus分片,确定为每个Prometheus分片分配的目标采集对象,使每个Prometheus分片接收的目标采集对象对应的Series数量保持相对均衡。
采集对象分配列表指的是Target列表,每个Prometheus分片接收的目标采集对象对应生成各自的采集对象分配列表。
130,将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象。
该步骤中,Target列表是由集群中的协调组件生成的,所以将Target列表发送给Prometheus分片,由Prometheus分片根据Target列表对目标采集对象进行采集。
比如,Target列表为[Target1,Target2],对应的Target1,Target2为目标采集对象。
140,基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
该步骤中,监控数据指的是时序数据,在Target1,Target2为目标采集对象的情况下,通过Prometheus分片从Target1和Target2拉取时序数据。
对应的,监控数据可以为:k8s节点的监控数据,比如节点的cpu、load、disk、memory等指标;可以包括内部系统组件的状态数据,比如kube-scheduler、kube-controller-manager、kubedns/coredns等组件的详细运行状态;还可以包括pod、用户的业务等数据指标。
本公开提供的一种对集群内监控数据进行采集的方法,通过获取集群中待分配的采集对象以及采集对象对应的时序数量,根据采集对象对应的时序数量调用集群内的协调组件对待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,使每个分片组件中对应的时序数量保持均衡,并生成每个目标采集对象对应的采集对象分配列表;将采集对象分配列表发送给对应的分片组件,调用分片组件基于采集对象分配列表获取目标采集对象,并通过分片组件对目标采集对象对应的监控数据进行采集。本公开实现了对集群部署的每一分片组件分配的目标采集对象对应的时序数量能够保持相对的均衡。
基于上述任一实施例,所述协调组件包括扩展管理器。
扩展管理器指的是Scaling manager,主要负责维护每个Prometheus分片的负载情况,以及实现集群的动态扩缩容,在每次进行集群的扩缩容,都要首先完成一次采集任务的重新分配。
所述方法还包括步骤210~240:
步骤210,在新增采集对象的情况下,获取所述新增采集对象对应的时序数量。
该步骤中,在新增采集对象的情况下可以理解为在新增Target的情况下。
获取所述新增采集对象对应的时序数量,可以理解为获取新增Target对应的Series的数量。
具体地,根据新增Target对应的Series的数量判断新增Target属于哪个Prometheus分片,判断的原则是新增Target对应的series数量加上Prometheus分片现存的Series不超过Prometheus分片的最高负载阈值。
步骤220,分别查看所述分片组件对应的时序数量,并将所述新增采集对象的时序数量分别与所述分片组件对应的时序数量进行相加,得到每一分片组件对应的时序总量。
该步骤中,分别查看所述分片组件对应的时序数量指的是分别查看每一个Prometheus分片现存的Series的数量。
具体地,将新增Target对应的Series的数量分别和每一Prometheus分片现存的Series的数量进行相加,分别得到每一Prometheus分片对应的Series总量。
步骤230,若所述每一分片组件对应的时序总量大于预设的第一阈值,调用所述扩展管理器添加新的分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表。
该步骤中,预设的第一阈值指的是分片组件的最高负载阈值。
具体地,若在集群内部署的每一个分片组件的Series总量都超过了分片组件的最高负载阈值,则调用协调组件中的Scaling manager为集群添加新的分片组件,并且,将新增采集对象归属到已有的待分配采集对象中,共同作为待分配的采集对象。通过协调组件对待分配的采集对象重新进行分配,确定为每个分片组件分配的目标采集对象,并基于每个分片组件收到的目标采集对象各自生成对应的采集对象分配列表。
步骤240,若任意一个或多个分片组件对应的时序总量小于等于预设的第一阈值,在所述一个或多个分片组件中选取时序总量最小值对应的分片组件接收新增采集对象,并生成所述接收新增采集对象的分片组件对应的采集对象分配列表。
该步骤中,若在集群内部署的分片组件中有一个分片组件的Series总量小于或等于分片组件的最高负载阈值,则需要该分片组件接收新增采集对象,并生成该分片组件对应的采集对象分配列表。
若在集群内部署的分片组件中有多个分片组件的Series总量小于或等于分片组件的最高负载阈值,需要在多个分片组件中选取时序总量最小值对应的分片组件接收新增采集对象,并使接收新增采集对象的分片组件生成采集对象分配列表。
通过协调组件中的Scaling manager对集群部署的分片组件的新增,能够实现在集群动态扩容的情况下,保证了每个分片组件最终所采集的Series数量是均衡的。
基于上述任一实施例,所述方法还包括步骤310~320:
步骤310,在减少采集对象的情况下,分别查看所述分片组件对应的时序数量。
该步骤中,在减少采集对象的情况下可以理解为在减少Target的情况下。
分别查看所述分片组件对应的时序数量指分别查看分片组件的Series的数量。
步骤320,若任意一个或多个分片组件对应的时序数量小于预设的第二阈值,调用所述扩展管理器减少分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表。
该步骤中,预设的第二阈值指的是分片组件的最低负载阈值。
具体地,若在集群内部署的任意一个或多个分片组件对应的Series数量小于最低负载阈值,则调用协调组件中的Scaling manager为集群减少分片组件,并且,将减少的采集对象从待分配的采集对象中删除。通过协调组件对待分配的采集对象重新进行分配,确定为每个分片组件分配的目标采集对象,并基于每个分片组件收到的目标采集对象各自生成对应的采集对象分配列表。
通过协调组件中的Scaling manager对集群部署的分片组件的减少,能够实现在集群动态缩容的情况下,保证了每个分片组件最终所采集的series数量是均衡的。
基于上述任一实施例,所述协调组件中包括目标管理器和配置管理器。
目标管理器指的是Target manager,Target manager的核心功能就是实现Target的均衡分配。
配置管理器指的是Config manager,Config manager用于生成Target列表。
所述步骤120具体包括:
根据所述分片组件对应的时序数量调用所述目标管理器对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并通过所述配置管理器生成每个所述目标采集对象对应的采集对象分配列表。
该步骤中,调用Target manager对待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并通过Config manager生成每个目标采集对象对应的Target列表。
基于上述任一实施例,所述步骤130具体包括下述步骤131~132:
步骤131,通过所述配置管理器将所述采集对象分配列表定期更新至配置文件中,并将所述配置文件存储在部署所述分片组件对应的容器组中。
该步骤中,配置文件指的是Prometheus配置文件,容器组指的是pod。
具体地,通过Config manager将Target列表定期更新到静态的Prometheus配置文件中,在k8s集群中通过Configmap的方式存储在部署分片组件对应的Pod里。
ConfigMap是一种API对象,用来将非加密数据保存到键值对中,可以用作环境变量、命令行参数或者存储卷中的配置文件。
步骤132,基于所述配置文件,通过所述分片组件获取所述目标采集对象。
该步骤中,由于将配置文件存储在部署分片组件对应的容器组里,因此Prometheus分片可以从本地读取到配置文件来获取目标采集对象Target,进而可以直接从Target拉取监控数据。
基于上述任一实施例,在步骤130之前具体包括下述步骤1311~1312:
步骤1311,对所述目标采集对象执行重写标签操作,生成带有重写标签的目标采集对象。
该步骤中,执行重写标签操作指的是执行Relabel机制,具体的Relabel是在Prometheus采集样本数据之前,对Target的标签进行重写的机制。
Target会存在对应的默认标签,但是,Target的默认标签不会将Target显示出来,需要通过执行Relabel机制,对Target的标签进行重写,以使Target能够显示出来,然后通过这些标签,分片组件中的Prometheus就能够知道如何去监控对应的Target。
步骤1312,基于所述带有重写标签的目标采集对象生成采集对象分配列表。
该步骤中,协调组件发送给分片组件的Target列表是一个静态的已经完成Relabel的Target列表。因此,协调组件将带有重写标签的目标采集对象生成采集对象分配列表。
进一步地,对本公开的实施做进一步补充说明,参照图2所示,为本公开实施例提供的对集群内监控数据进行采集的整体框图,包括协调组件(Coordinator)、数据组件(Thanos)、分片组件(Prometheus实例)、服务组件(Services)、目标采集对象(Target),分片组件位于Shard组件内部,在Shard组件内部还包括边车组件(Thanos-sidecar)。
需要补充说明的是,每个Prometheus分片只采集到一部分监控数据,因此需要引入Thanos组件,达到能查询全部监控数据的目的,边车组件Thanos-sidecar与Prometheus部署在一起,位于Shard组件内部,通过Thanos-sidecar获取Prometheus的数据可以供Thanos组件查询。在整个执行过程中可以设置服务组件Services,通过Services将集群内的待分配的采集对象暴露出来,对应的也可以不设置Services,根据具体的应用场景进行设置。
参照图3所示,为本公开实施例提供的协调组件的框图,协调组件(Coordinator)中包括目标管理器(Target manager)、目标采集对象(Targets)、扩展管理器(Scalingmanager)、配置管理器(Config manager);目标管理器(Target manager)首先需要实现Prometheus的服务发现的机制,配置文件config用表示,通过Prometheus配置文件发现采集对象;Targets主要用于定期获取到它对应的Series数量,以便于后续根据Targetseries的数量进行任务的分配;静态的配置文件用Static config表示,用于Targetmanager对待分配的采集对象进行分配后,将分配信息更新到一个静态的Prometheus配置文件中;图3中虚线中的分片组件表示,在集群发生动态扩缩容的情况下,通过Scalingmanager对集群部署的分片组件进行增加或者减少。
参照图4所示,为本公开实施例提供的对集群内监控数据进行采集的具体执行步骤的示意图,包括步骤410~460:
410,通过Prometheus的服务发现机制获取待分配的采集对象,通过待分配的采集对象获取对应的时序数量。
420,根据采集对象对应的Series数量调用Target manager对待分配的采集对象进行分配。
430,分配完成之后确定为每个分片组件分配的目标采集对象Target,并通过Config manager生成每个目标采集对象对应的Target列表。
440,通过协调组件Coordinator将Target列表发送至对应的分片组件,调用Prometheus基于Target列表获取目标采集对象Target。
450,基于目标采集对象Target,通过Prometheus从目标采集对象Target中拉取监控数据,完成采集。
下面对本公开实施例提供的对集群采集对象采集的装置进行描述,下文描述的对集群采集对象采集的装置与上文描述的对集群采集对象采集的方法可相互对应参照。
具体参照图5所示,为本公开实施例提供的一种对集群内监控数据进行采集的装置,集群中包括协调组件和至少一个分片组件,该装置具体包括:
获取模块510,用于获取待分配的采集对象以及所述采集对象对应的时序数量。
分配模块520,用于基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表。
调用模块530,用于将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表对所述目标采集对象进行采集。
采集模块540,用于基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
本公开提供的一种对集群内监控数据进行采集的装置,通过获取集群中待分配的采集对象以及采集对象对应的时序数量,根据采集对象对应的时序数量调用集群内的协调组件对待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,使每个分片组件中对应的时序数量保持均衡,并生成每个目标采集对象对应的采集对象分配列表;将采集对象分配列表发送给对应的分片组件,调用分片组件基于采集对象分配列表获取目标采集对象,并通过分片组件对目标采集对象对应的监控数据进行采集。本公开实现了对集群部署的每一分片组件分配的目标采集对象对应的时序数量能够保持相对的均衡。
基于上述任一实施例,所述协调组件包括扩展管理器;
所述方法还包括:
新增模块,用于在新增采集对象的情况下,获取所述新增采集对象对应的时序数量;
查看模块,用于分别查看所述分片组件对应的时序数量,并将所述新增采集对象的时序数量分别与所述分片组件对应的时序数量进行相加,得到每一分片组件对应的时序总量;
调用模块,用于若所述每一分片组件对应的时序总量大于预设的第一阈值,调用所述扩展管理器添加新的分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表;
选取模块,用于若任意一个或多个分片组件对应的时序总量小于等于预设的第一阈值,在所述一个或多个分片组件中选取时序总量最小值对应的分片组件接收新增采集对象,并生成所述接收新增采集对象的分片组件对应的采集对象分配列表。
基于上述任一实施例,所述方法还包括:
减少模块,用于在减少采集对象的情况下,分别查看所述分片组件对应的时序数量;
生成模块,用于若任意一个或多个分片组件对应的时序数量小于预设的第二阈值,调用所述扩展管理器减少分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表。
基于上述任一实施例,所述协调组件中包括目标管理器和配置管理器;
所述分配模块520具体用于:
基于所述采集对象对应的时序数量调用所述目标管理器对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并通过所述配置管理器生成每个所述目标采集对象对应的采集对象分配列表。
基于上述任一实施例,所述采集模块530具体用于:
调用分片组件基于所述采集对象分配列表获取所述目标采集对象,包括:
通过所述配置管理器将所述采集对象分配列表定期更新至配置文件中,并将所述配置文件存储在部署所述分片组件对应的容器组中;
基于所述配置文件,通过所述分片组件获取所述目标采集对象。
基于上述任一实施例,在采集模块530之前,具体用于:
对所述目标采集对象执行重写标签操作,生成带有重写标签的目标采集对象;
基于所述带有重写标签的目标采集对象生成采集对象分配列表。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行一种对集群内监控数据进行采集的方法,集群中包括协调组件和至少一个分片组件,该方法具体包括:获取待分配的采集对象以及所述采集对象对应的时序数量;基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本公开还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的一种对集群内监控数据进行采集的方法,集群中包括协调组件和至少一个分片组件,该方法具体包括:获取待分配的采集对象以及所述采集对象对应的时序数量;基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
又一方面,本公开还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的一种对集群内监控数据进行采集的方法,集群中包括协调组件和至少一个分片组件,该方法具体包括:获取待分配的采集对象以及所述采集对象对应的时序数量;基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围。

Claims (10)

1.一种对集群内监控数据进行采集的方法,其特征在于,集群中包括协调组件和至少一个分片组件,该方法具体包括:
获取待分配的采集对象以及所述采集对象对应的时序数量;
基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;
将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;
基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
2.根据权利要求1所述的对集群内监控数据进行采集的方法,其特征在于,所述协调组件包括扩展管理器;
所述方法还包括:
在新增采集对象的情况下,获取所述新增采集对象对应的时序数量;
分别查看所述分片组件对应的时序数量,并将所述新增采集对象的时序数量分别与所述分片组件对应的时序数量进行相加,得到每一分片组件对应的时序总量;
若所述每一分片组件对应的时序总量大于预设的第一阈值,调用所述扩展管理器添加新的分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表;
若任意一个或多个分片组件对应的时序总量小于等于预设的第一阈值,在所述一个或多个分片组件中选取时序总量最小值对应的分片组件接收新增采集对象,并生成所述接收新增采集对象的分片组件对应的采集对象分配列表。
3.根据权利要求2所述的对集群内监控数据进行采集的方法,其特征在于,所述方法还包括:
在减少采集对象的情况下,分别查看所述分片组件对应的时序数量;
若任意一个或多个分片组件对应的时序数量小于预设的第二阈值,调用所述扩展管理器减少分片组件,并对所述待分配的采集对象重新分配,确定为每个分片组件分配的目标采集对象,生成每个所述目标采集对象对应的采集对象分配列表。
4.根据权利要求1所述的对集群内监控数据进行采集的方法,其特征在于,所述协调组件中包括目标管理器和配置管理器;
所述基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表包括:
基于所述采集对象对应的时序数量调用所述目标管理器对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并通过所述配置管理器生成每个所述目标采集对象对应的采集对象分配列表。
5.根据权利要求4所述的对集群内监控数据进行采集的方法,其特征在于,所述调用分片组件基于所述采集对象分配列表获取所述目标采集对象,包括:
通过所述配置管理器将所述采集对象分配列表定期更新至配置文件中,并将所述配置文件存储在部署所述分片组件对应的容器组中;
基于所述配置文件,通过所述分片组件获取所述目标采集对象。
6.根据权利要求3所述的对集群内监控数据进行采集的方法,其特征在于,在所述将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象之前,包括:
对所述目标采集对象执行重写标签操作,生成带有重写标签的目标采集对象;
基于所述带有重写标签的目标采集对象生成采集对象分配列表。
7.一种对集群内监控数据进行采集的装置,其特征在于,集群中包括协调组件和至少一个分片组件,该装置具体包括:
获取模块,用于获取待分配的采集对象以及所述采集对象对应的时序数量;
分配模块,用于基于所述采集对象对应的时序数量调用所述协调组件对所述待分配的采集对象进行分配,确定为每个分片组件分配的目标采集对象,并生成每个所述目标采集对象对应的采集对象分配列表;
调用模块,用于将所述采集对象分配列表发送至对应的分片组件,调用分片组件基于所述采集对象分配列表获取所述目标采集对象;
采集模块,用于基于所述目标采集对象,通过所述分片组件对所述目标采集对象对应的监控数据进行采集。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述对集群内监控数据进行采集的方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述对集群内监控数据进行采集的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述对集群内监控数据进行采集的方法的步骤。
CN202210253499.1A 2022-03-15 2022-03-15 一种对集群内监控数据进行采集的方法和装置 Pending CN114564314A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210253499.1A CN114564314A (zh) 2022-03-15 2022-03-15 一种对集群内监控数据进行采集的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210253499.1A CN114564314A (zh) 2022-03-15 2022-03-15 一种对集群内监控数据进行采集的方法和装置

Publications (1)

Publication Number Publication Date
CN114564314A true CN114564314A (zh) 2022-05-31

Family

ID=81720413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210253499.1A Pending CN114564314A (zh) 2022-03-15 2022-03-15 一种对集群内监控数据进行采集的方法和装置

Country Status (1)

Country Link
CN (1) CN114564314A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904879A (zh) * 2023-01-06 2023-04-04 天津卓朗昆仑云软件技术有限公司 用于Prometheus集群的实例分配系统、方法及设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904879A (zh) * 2023-01-06 2023-04-04 天津卓朗昆仑云软件技术有限公司 用于Prometheus集群的实例分配系统、方法及设备

Similar Documents

Publication Publication Date Title
US10635496B2 (en) Thread pool management
CN105049268B (zh) 分布式计算资源分配系统和任务处理方法
CN107689953B (zh) 一种面向多租户云计算的容器安全监控方法及系统
US8832130B2 (en) System and method for implementing on demand cloud database
US20160098472A1 (en) Map-reduce job virtualization
CN112506444A (zh) 基于Kubernetes集群的扩缩容控制方法和装置、电子设备
CN104486445A (zh) 一种基于云平台的分布式可扩展资源监控系统及方法
CN106354729B (zh) 一种图数据处理方法、装置和系统
CN110417686B (zh) 云资源动态调度系统
US20140122427A1 (en) Retrieving historical object-related configuration data
CN108920153A (zh) 一种基于负载预测的Docker容器动态调度方法
CN111343219B (zh) 计算服务云平台
CN114090176A (zh) 一种基于Kubernetes的容器调度方法
US20230333953A1 (en) Enhanced configuration management of data processing clusters
US20210406053A1 (en) Rightsizing virtual machine deployments in a cloud computing environment
US11609777B2 (en) System and method for multi-cluster storage
CN111984505A (zh) 一种运维数据采集引擎及采集方法
CN114564314A (zh) 一种对集群内监控数据进行采集的方法和装置
CN111352726A (zh) 一种基于容器化微服务的流数据处理方法及装置
CN110196751A (zh) 互扰服务的隔离方法及装置、电子设备、存储介质
CN108681578B (zh) 一种业务数据存储方法、装置、服务器及存储介质
CN107368355B (zh) 虚拟机的动态调度方法和装置
CN105610621B (zh) 一种分布式系统架构任务级参数动态调整的方法及装置
CN113778973B (zh) 数据存储方法和装置
US11182174B2 (en) System configuration analysis for migration

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination