CN115225538B - 基于自托管集群的监控方法和装置、电子设备及存储介质 - Google Patents
基于自托管集群的监控方法和装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115225538B CN115225538B CN202210867331.XA CN202210867331A CN115225538B CN 115225538 B CN115225538 B CN 115225538B CN 202210867331 A CN202210867331 A CN 202210867331A CN 115225538 B CN115225538 B CN 115225538B
- Authority
- CN
- China
- Prior art keywords
- application
- cloud
- service object
- performance
- performance parameters
- 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.)
- Active
Links
Abstract
本申请实施例提供了一种基于自托管集群的监控方法和装置、电子设备及存储介质,属于集群部署技术领域。该方法包括:获取云原生系统中各个应用的服务对象类别;根据服务对象类别,读取应用的性能参数;根据服务对象类别和性能参数,建立应用的监控面板。本申请实施例能够提供准确、直观的监控面板,提高对自托管集群监控的全面性和灵活性。
Description
技术领域
本申请涉及集群部署技术领域,尤其涉及一种基于自托管集群的监控方法和装置、电子设备及存储介质。
背景技术
目前,目前IT基础设施软件化已经成为了业界共识,而这一概念对应到实践上就是云原生基础架构,让IT基础设施从而具有了高度抽象、屏蔽底层细节、统一化的特征。而目前在云原生的工程实践上做的最好的,也是当前业界事实标准的就是基于Kubernetes(K8S)生态。K8S能为平台用户提供容器编排、自愈、部署管理等云原生服务,提升基础资源使用效率以及降低管理成本。
目前,用户使用K8S的主要由两种模式,第一种是托管模式,即是向云服务商购买现成的K8S服务,将整个K8S平台托管给云服务商维护,自身仅仅作为应用算力使用者;第二种是自托管模式,自行在服务器,或者由云服务商提供的计算资源上维护自己的K8S平台。这两种模式各有优劣,适用于不同的场景,前者更适合适用于公有云的应用服务,有着方便敏捷、有现成的配套服务的特点,缺点是受限于云服务商提供的服务;后者更适合于企业构建自身的私有云原生服务,优势在于能构建适用于自身应用特点的云服务,同时具有私有云的优点,缺点则在于生态环境的服务,比如对于生产运行的软件至关重要的监控等需要自行设计、构建、维护。由此可见,在自托管模式中缺乏依据云原生架构、生态重新设计符合云原生以及K8S平台本身特点的监控方法,影响了对自托管集群监控的全面性和灵活性。
发明内容
本申请实施例的主要目的在于提出一种基于自托管集群的监控方法和装置、电子设备及存储介质,提高对自托管集群监控的全面性和灵活性。
为实现上述目的,本申请实施例的第一方面提出了一种基于自托管集群的监控方法,应用于云原生系统,所述方法包括:
获取所述云原生系统中各个应用的服务对象类别;
根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为非客户端的情况下,对所述云原生系统进行分层处理;
读取所述应用位于所述云原生系统中各个层次的所述性能参数,包括:在所述应用的关联对象为系统资源的情况下,获取所述系统节点的性能参数;在所述应用的关联对象为系统节点的情况下,获取所述云原生系统中pod节点的性能参数;在所述应用的关联对象为管理集群或数据节点集群的情况下,获取所述云原生系统中node节点的性能参数;其中,所述性能参数包括与所述应用相连的节点的平均利用率、所述应用的性能饱和度、所述应用调用资源的错误率;
根据所述服务对象类别和所述性能参数,建立所述应用的监控面板。
在一些实施例,所述根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为客户端的情况下,读取所述客户端对所述应用的响应参数;
获取所述客户端的性能阈值;
根据所述响应参数和所述性能阈值,得到所述应用的性能参数。
在一些实施例,所述在所述应用的服务对象为非客户端的情况下,对所述云原生系统进行分层处理,包括:
获取所述应用在所述云原生系统中的关联对象;
根据所述应用在所述云原生系统中的关联对象,把所述云原生系统划分为不同的所述层次。
在一些实施例,所述根据所述服务对象类别和所述性能参数,建立所述应用的监控面板之后,还包括:
根据所述应用的服务对象类别以及关联对象,对所述监控面板进行排列。
在一些实施例,所述根据所述服务对象类别和所述性能参数,建立所述应用的监控面板之后,还包括:
读取所述应用的定时器参数;
根据所述定时器参数,调整所述监控面板的监控周期。
为实现上述目的,本申请实施例的第二方面提出了一种基于自托管集群的监控装置,所述装置包括:
获取模块,用于获取云原生系统中各个应用的服务对象类别;
读取模块,用于根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为非客户端的情况下,对所述云原生系统进行分层处理;
读取所述应用位于所述云原生系统中各个层次的所述性能参数,包括:在所述应用的关联对象为系统资源的情况下,获取所述系统节点的性能参数;在所述应用的关联对象为系统节点的情况下,获取所述云原生系统中pod节点的性能参数;在所述应用的关联对象为管理集群或数据节点集群的情况下,获取所述云原生系统中node节点的性能参数;其中,所述性能参数包括与所述应用相连的节点的平均利用率、所述应用的性能饱和度、所述应用调用资源的错误率;
建立模块,用于根据所述服务对象类别和所述性能参数,建立所述应用的监控面板。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现上述第一方面所述的方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面所述的方法。
本申请提出的基于自托管集群的监控方法和装置、电子设备及存储介质,其通过获取云原生系统中各个应用的服务对象类别;根据服务对象类别,读取应用的性能参数;根据服务对象类别和性能参数,建立应用的监控面板,提高对自托管集群监控的全面性和灵活性。
附图说明
图1是本申请实施例提供的基于自托管集群的监控方法的流程图;
图2是图1中的步骤S200的流程图;
图3是图1中的步骤S200另一实施例的流程图;
图4是图3中的步骤S240的流程图;
图5是图3中的步骤S250的流程图;
图6是图1中的步骤S300的流程图;
图7是图1中的步骤S300另一实施例的流程图;
图8是本申请实施例提供的基于自托管集群的监控装置的结构示意图;
图9是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
Kubernetes(K8s):K8s是一个最初由Google开发的,用于自动化部署、扩展和管理容器化应用的开源容器编排器技术。K8s使部署和管理微服务架构应用程序变得很简单。它通过在集群之上形成一个抽象层来实现这一点,允许开发团队平滑地部署应用程序,而K8s主要处理以下任务:控制和管理应用程序对资源的使用、自动负载均衡应用程序的多个实例之间请求、监控资源使用和资源限制,为了可以自动阻止应用消耗过多的资源并且可以再次恢复它们、如果主机资源耗尽或主机死机,将应用程序实例从一台主机迁移到另一台主机是一个可行的选项、当有新的主机加入集群时,新增加的额外资源可以被自动使用。
Master节点:Master节点指的是集群控制节点,管理和控制整个集群,基本上k8s的所有控制命令都发给它,它负责具体的执行过程。在Master上主要运行着:KubernetesController Manager(kube-controller-manager):k8s中所有资源对象的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新等。Kubernetes Scheduler(kube-scheduler):负责资源调度,按照预定的调度策略将Pod调度到相应的机器上。etcd:保存整个集群的状态。
Node节点:除了master以外的节点被称为Node或者Worker节点,可以在master中使用命令kubectl get nodes查看集群中的node节点。每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,该节点上的工作负载就会被Master自动转移到其它节点上。在Node上主要运行着:kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。kube-proxy:实现service的通信与负载均衡。docker(Docker Engine):Docker引擎,负责本机的容器创建和管理。
Pod节点:K8s pod节点是K8s管理容器集的最小单位。每个pod有一个分配给pod中的所有容器的单独的IP地址。在pod中的容器内存和存储资源是共享的。当应用程序只有一个进程时,pod也可以有一个容器。
云原生(Cloud Native)是一种基于云的基础之上的软件架构思想,以及基于云进行软件开发实践的一组方法论。云原生具有以下特征:容器化封装,以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离;自动化管理,统一调度和管理中心,从根本上提高系统和资源利用率,同时降低运维成本;面向微服务,通过松耦合方式,提升应用程序的整体敏捷性和可维护性。
etcd是一个分布式的、高可用的、一致的key-value存储数据库,基于Go语言实现,主要用于共享配置和服务发现。在分布式系统中,各种服务配置信息的管理共享和服务发现是一个很基本也是很重要的问题。etcd可集中管理配置信息,服务端将配置信息存储于etcd,客户端通过etcd得到服务配置信息,etcd监听配置信息的改变,发现改变通知客户端。为了防止单点故障,还可启动多个etcd组成集群。etcd集群使用Raft一致性算法处理日志复制,保证多节点数据的强一致性。
K8s是为容器服务而生的一个可移植容器的编排管理工具,主要应用于云架构和云原生的部署场景。越来越多的公司正在应用和推广K8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地。
相关技术中,自托管模式的K8s能构建适用于自身应用特点的云服务,同时具有私有云的优点,广泛应用于企业构建自身的私有云原生服务,但是在生态环境的服务需要进行再次开发,比如对于生产运行的软件至关重要的监控等需要自行设计、构建、维护。因此在自托管模式中缺乏依据云原生架构、生态重新设计符合云原生以及K8S平台本身特点的监控方法,影响了对自托管集群监控的全面性和灵活性。具体地,本申请的自托管模式,具体是相对于如Google kubernetes Egninee(GKE)等公共服务商提供的K8S公有云服务/产品,而公有云模式并非适用于所有场景,自托管便是指处于某种原因必须进行私有部署的K8S平台(私有云),因而这种场景下建立的K8S集群,监控等必要服务需要自行构建。
基于此,本公开实施例提供了一种基于自托管集群的监控方法和装置、电子设备及存储介质,旨在提高对自托管集群监控的全面性和灵活性。
本申请实施例提供的一种基于自托管集群的监控方法和装置、电子设备及存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的基于自托管集群的监控方法。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请实施例提供的基于自托管集群的监控方法,涉及人工智能技术领域。本申请实施例提供的基于自托管集群的监控方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现基于自托管集群的监控方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本申请的各个具体实施方式中,当涉及到需要根据用户信息、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本申请实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的用户相关数据。
图1是本申请实施例提供的基于自托管集群的监控方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S100至步骤S300。
步骤S100,获取云原生系统中各个应用的服务对象类别。
具体地,在一些实施例的步骤S100中,将云原生系统中应用的服务对象类别分为客户端和非客户端。其中,应用的服务对象类别分为客户端的情况下,代表应用为用户提供应用服务,此时能通过客户端或者用户的运行状况,对应用的运行状态进行实时监控。此外,应用的服务对象类别分为非客户端的情况下,代表应用为其他应用提供算力,此时,则需要对应用在云原生系统中的关联对象进行分析并提取相对应的监控信息。
可以理解的是,通过服务对象类别对云原生系统中各个应用进行分类处理,能有效地提高云原生系统中不同应用的监控信息获取效率,节省系统资源。此外,通过调用云原生系统中的读取指令,能快速准确地获取云原生系统中各个应用的服务对象类别,属于现有技术,此处不再赘述。
步骤S200,根据服务对象类别,读取应用的性能参数。
具体地,在一些实施例的步骤S200中,根据服务对象类别的不同,采用不同的方式采集应用的性能参数。由上述步骤S100可知,应用的服务对象类别为客户端或非客户端,能表征应用运行状态的性能参数的获取方式也存在区别,因此,为了保证应用的性能参数能快速、准确地获取,需要根据服务对象类别进行区分。
从架构设计来说,K8S设计理念是作为一个分布式硬件之上的云操作系统,向下整合各类型物理资源为云资源池,通过K8S体系屏蔽下层多种分布式硬件复杂性,向上则提供了统一的面向容器的应用以及管理编排接口,同时在最上层利用容器技术,屏蔽应用的环境复杂性,从而每个应用就可以类似云操作系统上的进程,可以被调度到任意资源或者分布式节点上,那么从服务对象的角度来说,硬件和K8S构成的云应用提供统一而抽象的容器计算和管理服务,以容器托管在其上运行的应用向最终用户提供应用软件服务,这两者相对独立,同时其架构和组成不同,因此,本申请根据服务对象类别的不同,对应用进行分开进行监控分析和设计。
请参阅图2,在一些实施例中,步骤S200可以包括但不限于包括步骤S210至步骤S230:
步骤S210,在应用的服务对象类别为客户端的情况下,读取客户端对应用的响应参数。
具体地,在应用的服务对象类别为客户端的情况下,能将托管在K8S上的应用服务视为在K8S操作系统上运行的单体应用,能基于RED方法结合平台本身特性设计监控模型,即通过RED方法表征客户端对应用的响应参数。其中,RED方法主要关注以下三种关键指标:速率:服务每秒接收的请求数;错误:每秒失败的请求数;耗时:每个请求的耗时。
因此,读取客户端对应用的响应参数,即采集应用的接受的请求量、错误请求量和平均请求耗时,能有效地反应出应用的运行状态。
步骤S220,获取客户端的性能阈值。
具体地,在本实施例中,为了调整监控指标从单个实例到整体服务,需要结合对应用的白盒监控,避免在云原生系统下,部分应用经常处于灰色故障状态,部分实例处于不可用或者在重启中,过多的无效监控对系统造成额外的负担。因此,需要通过外部用户对服务整体响应做指标采集,只要响应参数在阈值范围内,即视为正常,而事后分析交由链路监控负责。因此,需要获取客户端的性能阈值,以确保客户端的正常运作范围。
步骤S230,根据响应参数和性能阈值,得到应用的性能参数。
具体地,在一些实施例的步骤S230中,通过对比响应参数和性能阈值,就能判断此时应用是否处于正常的运作状态。此时,应用的性能参数用于表征客户端对应用的响应参数是否在性能阈值范围内。示例性的,客户端每秒接收的请求数为2000,而客户端的性能阈值为每秒接收的请求数为3000,此时客户端每秒接收的请求数在性能阈值范围内,应用的处于正常的运作状态。
具体地,在本实施例中,将采集目标调整为每个应用对外服务的ELB service或者ingress,以及应用每个组件的service上的应用的service接受的请求量,service接受的错误请求量以及每分钟平均请求耗时。以上指标均可以通过K8S内建的metrics server获取,一般和promethues一起整合到Grafana展示,属于现有技术,此处不再赘述。
请参阅图3,在一些实施例中,步骤S200可以包括但不限于包括步骤S240和步骤S250:
步骤S240,在应用的服务对象类别为非客户端的情况下,对云原生系统进行分层处理。
具体地,在本实施例中,在应用的服务对象类别为非客户端的情况下,由于私有云的构成形式多样,并不一定涵盖从计算节点主机到附加服务的每一个云原生组件,对云原生系统进行分层处理易于推广复用;分层处理也便于进行组合展示,应对不同侧重点构建监控面板。示例性的,对于搭载高性能GPU核心的K8S集群A,和没有搭载GPU的K8S集群B,其性能参数的取值范围必然不同,但是两者的应用部分监控面板则可以复用。反之,对于同一个集群上运行的计算消耗型应用和用户服务型应用,可以复用底层云服务监控。示例性的,对于构建在高性能BMS上和低成本云服务器上的K8S集群,多个层次的监控设计是可以复用的,只要重新设计应用的关联对象。对于当前广泛使用的Grafana监控展示软件来说,按每一层组织成独立的dashboard后保存,按需要将其组合拼接就可以简单实现。
请参阅图4,在一些实施例中,步骤S240可以包括但不限于包括步骤S241和步骤S242:
步骤S241,获取应用在云原生系统中的关联对象。
具体地,在本实施例中,在应用的服务对象类别为非客户端的情况下,通过应用在云原生系统中的关联对象,以对云原生系统进行分层处理。其中,应用在云原生系统中的关联对象能分为系统节点、系统资源、管理集群和数据节点集群。这些关联对象在云原生系统中处于不同的连接位置,也有不同的功能作用。通过获取应用在云原生系统中的关联对象,能对云原生系统进行高效、科学的分层处理,避免造成资源的浪费和复用。
步骤S242,根据应用在云原生系统中的关联对象,把云原生系统划分为不同的层次。
具体地,在本实施例中,把云原生系统划分为不同的层次,有效地增强平台本身的稳定性和问题诊断效率。由于综合操作系统的分层方法和分布式系统的架构特点,将K8S平台从下到上,按照基础资源、用于计算和控制的K8S节点、K8S服务平面,将云原生系统拆分为资源层、节点层和服务层。资源层对象是每个节点的主机和操作系统(OperatingSystem,OS),节点层的对象是每个K8S节点服务,在这两层之上的服务层的对象是master集群datanode集群。
步骤S250,读取应用位于云原生系统中各个层次的性能参数,其中,性能参数包括与应用相连的节点的平均利用率、应用的性能饱和度、应用调用资源的错误率。
具体地,在一些实施例的步骤S250中,云原生系统中各个层次的性能参数采用USE方法,检查使用率(utilization)、饱和度(saturation),以及所有硬件资源的错误(error)。通过USE方法能发现某一成为瓶颈的资源,许多应用程序的性能问题都能用USE方法得到解决。同时,USE方法也适用于软件资源,取决于应用程序。例如,获取应用程序的内部组件的功能图,能对每种软件资源都做使用率、饱和和错误指标上的考量,就能轻易知道应用程序内存在的问题。示例性的,有一个应用程序用一个工作线程池来处理请求,请求在队列里排队等待被处理。把这个当作资源看待,那么三个指标可以做如下定义:使用率:在一定时间间隔内,忙于处理请求的线程平均数目。例如,线程平均数目为50%意味着,平均来说,一半的线程在忙于请求的工作;饱和度:在一定时间间隔内,请求队列的平均长度,这显示出等待工作线程的有多少个请求;错误:出于某种原因,请求被拒绝或失败。
具体在云原生系统中,使用率能解释为:同时监控各个计算节点的利用率平均值,示例性的,能用可用节点/所有节点比例表示。其中使用率必须大于最小容忍率,代表集群可以容忍的最大异常节点数,通过压测,在每个节点CPU,存储器的利用率达到最大平均值的时候,能够容忍多少节点失能,例如最大平均值为50%,节点本身安全上线为80%,则在只有三个计算节点的情况下,至多容忍1个节点失能,四个节点的情况下可以容忍两个。
饱和度能通过K8S中CPU的api-server的过载程度而来衡量,采集api-server的响应次数k/sec,以及响应延迟。当延迟过高,代表应用的核心资源处于过载状态。
错误率则通过采集平台上调度的POD的错误率,包括pending,如果无法正确调度的POD持续或者达到预设的安全阈值,则判定应用存在异常。
在云原生系统中,由于各个层次的关联对象存在差异,各个层次的性能参数的获取和具体表征方式存在不同。
请参阅图5,在一些实施例中,步骤S250可以包括但不限于包括步骤S251至步骤S253:
步骤S251,在应用的关联对象为系统资源的情况下,获取系统资源的性能参数。
具体地,由上述步骤S242可知,在应用的关联对象为系统资源的情况下,即对于云原生系统中的资源层,即集群内每一个主机,可以抽象为硬件和OS。对硬件,抽取CPU、存储器(MEM)、磁盘(DISK)和网路四个数据作为监控指标,最小节点量由上层负责,此处将以上四个指标分为两类,CPU,MEM,DISK和网络,只需要采集计算每一类的正常/非正常即可,对于OS,采集systemlog中的ERROR数量,进程数作为衡量指标,通过监控软件采集如下四个指标:U指标:CPU使用率、MEM使用率、网络IO使用率;S指标:进程数,系统软中断空闲时间;E指标:系统日志严重错误数。
此外,获取系统节点的性能参数后进行告警设计遵循如下原则:U指标在正常范围内;S指标没有过载也没有限制,E指标一段时间内的错误在合理范围内,且无致命错误。同时设计告警时候,区别于其他系统,考虑到K8S的容错能力,在异常不超过容错能力的时候,无需升级外呼告警,节约监控和运维成本。
步骤S252,在应用的关联对象为系统节点的情况下,获取云原生系统中pod节点的性能参数。
具体地,在一些实施例的步骤S252中,在应用的关联对象为系统节点的情况下,即对于云原生系统中的节点层,应用的关联对象是节点上可以由K8S进行调度管理的资源,pod节点的性能参数包括:U指标,运行在节点上的各个POD的CPU使用率和MEM使用率,同时,采集集群QOS级别为BestEffrotPOD,获取驱逐发生的频次,如果持续频繁发生,说明POD设计或者节点资源不足。S指标,当前POD数和该节点POD支持总数之比;POD支持总数,由采集kubelet的配置得到;当前的POD数量,通过K8S metric server采集。E指标,Kubelet和kube-proxy可用性,示例性的,只有kubelet和kube-proxy正常服务的节点,才是对K8S而言有效的节点;Kubelet和kube-proxy的日志错误数。
可以理解的是,以上云原生系统中pod节点的性能参数均可由Promethues采集,其过程与步骤S251一致,此处不再赘述。
步骤S253,在应用的关联对象为管理集群或数据节点集群的情况下,获取云原生系统中node节点的性能参数。
具体地,在一些实施例的步骤S253中,在应用的关联对象为管理集群或数据节点集群的情况下,即对于云原生系统中的服务层,云原生系统中node节点的性能参数包括:U指标,不可用NODE数占集群冗余节点比例,示例性的不可用NODE数可由K 8S本身metricserver提供,冗余节点数根据场景压测得到,是集群最多可以接受多少NODE失效的数量;api-server的负载和qps。S指标:ETCD的响应时间和存储条目。E指标:api-server和ETCD的日志严重错误数量。
可以理解的是,以上云原生系统中node节点的性能参数均可由Promethues采集,其过程与步骤S251一致,此处不再赘述。
步骤S300,根据服务对象类别和性能参数,建立应用的监控面板。
具体地,在本实施例中,为了更加直观地展示服务对象类别和性能参数,需要建立监控面板展示性能参数。同时,分层的展示也便于用户能够快速定位问题,提升运维效率。示例性的,监控面板能通过调用指令开发,并在网页(web)界面上进行性能参数以及告警信息的展示。
请参阅图6,在一些实施例中,步骤S300之后可以包括但不限于包括步骤S310:
步骤S310,根据应用的服务对象类别以及关联对象,对监控面板进行排列。
具体地,根据上述步骤242,云原生系统拆分为资源层、节点层和服务层,根据应用的服务对象类别以及关联对象,对监控面板进行排列,能把性能参数按照所处的云原生系统的层次,按序进行展示,便于能够快速定位问题,提升运维效率。
请参阅图7,在一些实施例中,步骤S300之后可以包括但不限于包括步骤S320和步骤S330:
步骤S320,读取应用的定时器参数。
具体地,在本实施例中,由于应用会根据定时器参数对性能参数进行采集和更新,在监控设计的过程中,还需要考虑到K8S的服务自愈机制,根据定时器参数对监控周期进行调整,避免会因自愈过程引发误告警。
步骤S330,根据定时器参数,调整监控面板的监控周期。
具体地,在本实施例中,为了避免K8S的服务自愈机制引发误告警,需要调整监控面板的监控周期。示例性的,实施的时候取Liveness probe、readness probe的定时器参数的最大值作为监控周期,且设置2个监控周期内无法自愈才触发告警。
本申请实施例所示意的步骤S100至步骤S300,通过获取云原生系统中各个应用的服务对象类别;根据服务对象类别,读取应用的性能参数;根据服务对象类别和性能参数,建立应用的监控面板,提高对自托管集群监控的全面性和灵活性。
本申请实施例
请参阅图8,本申请实施例还提供一种基于自托管集群的监控装置400,可以实现上述基于自托管集群的监控方法,在一些实施例中,基于自托管集群的监控装置400包括获取模块410、读取模块420和建立模块430。
获取模块410,用于获取云原生系统中各个应用的服务对象类别;
读取模块420,用于根据服务对象类别,读取应用的性能参数;
建立模块430,用于根据服务对象类别和性能参数,建立应用的监控面板。
需要说明的是,该基于自托管集群的监控装置400的具体实施方式与上述基于自托管集群的监控方法的具体实施例基本相同,在此不再赘述。
本申请实施例还提供了一种电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述基于自托管集群的监控方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器901,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器902,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器902中,并由处理器901来调用执行本申请实施例的基于自托管集群的监控方法;
输入/输出接口903,用于实现信息输入及输出;
通信接口904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线905,在设备的各个组件(例如处理器901、存储器902、输入/输出接口903和通信接口904)之间传输信息;
其中处理器901、存储器902、输入/输出接口903和通信接口904通过总线905实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种存储介质,存储介质为计算机可读存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述基于自托管集群的监控方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例提供的基于自托管集群的监控方法、装置、电子设备及存储介质,其通过获取云原生系统中各个应用的服务对象类别;根据服务对象类别,读取应用的性能参数;根据服务对象类别和性能参数,建立应用的监控面板,提高对自托管集群监控的全面性和灵活性。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-9中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (8)
1.一种基于自托管集群的监控方法,应用于云原生系统,其特征在于,所述方法包括:
获取所述云原生系统中各个应用的服务对象类别;
根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为非客户端的情况下,对所述云原生系统进行分层处理;
读取所述应用位于所述云原生系统中各个层次的所述性能参数,包括:在所述应用的关联对象为系统资源的情况下,获取系统节点的性能参数;在所述应用的关联对象为系统节点的情况下,获取所述云原生系统中pod节点的性能参数;在所述应用的关联对象为管理集群或数据节点集群的情况下,获取所述云原生系统中node节点的性能参数;其中,所述性能参数包括与所述应用相连的节点的平均利用率、所述应用的性能饱和度、所述应用调用资源的错误率;
根据所述服务对象类别和所述性能参数,建立所述应用的监控面板。
2.根据权利要求1所述的方法,其特征在于,所述根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为客户端的情况下,读取所述客户端对所述应用的响应参数;
获取所述客户端的性能阈值;
根据所述响应参数和所述性能阈值,得到所述应用的性能参数。
3.根据权利要求1所述的方法,其特征在于,所述在所述应用的服务对象为非客户端的情况下,对所述云原生系统进行分层处理,包括:
获取所述应用在所述云原生系统中的关联对象;
根据所述应用在所述云原生系统中的关联对象,把所述云原生系统划分为不同的所述层次。
4.根据权利要求3所述的方法,其特征在于,所述根据所述服务对象类别和所述性能参数,建立所述应用的监控面板之后,还包括:
根据所述应用的服务对象类别以及关联对象,对所述监控面板进行排列。
5.根据权利要求1所述的方法,其特征在于,所述根据所述服务对象类别和所述性能参数,建立所述应用的监控面板之后,还包括:
读取所述应用的定时器参数;
根据所述定时器参数,调整所述监控面板的监控周期。
6.一种基于自托管集群的监控装置,其特征在于,所述装置包括:
获取模块,用于获取云原生系统中各个应用的服务对象类别;
读取模块,用于根据所述服务对象类别,读取所述应用的性能参数,包括:
在所述应用的服务对象类别为非客户端的情况下,对所述云原生系统进行分层处理;
读取所述应用位于所述云原生系统中各个层次的所述性能参数,包括:在所述应用的关联对象为系统资源的情况下,获取系统节点的性能参数;在所述应用的关联对象为系统节点的情况下,获取所述云原生系统中pod节点的性能参数;在所述应用的关联对象为管理集群或数据节点集群的情况下,获取所述云原生系统中node节点的性能参数;其中,所述性能参数包括与所述应用相连的节点的平均利用率、所述应用的性能饱和度、所述应用调用资源的错误率;
建立模块,用于根据所述服务对象类别和所述性能参数,建立所述应用的监控面板。
7.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现如权利要求1至5任一项所述的方法的步骤。
8.一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210867331.XA CN115225538B (zh) | 2022-07-22 | 基于自托管集群的监控方法和装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210867331.XA CN115225538B (zh) | 2022-07-22 | 基于自托管集群的监控方法和装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115225538A CN115225538A (zh) | 2022-10-21 |
CN115225538B true CN115225538B (zh) | 2023-08-11 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437915A (zh) * | 2018-07-19 | 2021-03-02 | 纳木技术株式会社 | 云平台上监测多个集群和应用程序的方法 |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437915A (zh) * | 2018-07-19 | 2021-03-02 | 纳木技术株式会社 | 云平台上监测多个集群和应用程序的方法 |
Non-Patent Citations (1)
Title |
---|
基于大数据的地质云监控平台建设与应用;王永志;包晓栋;缪谨励;金樑;王亮;;地球物理学进展(02);第851-857页 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108632365B (zh) | 服务资源调整方法、相关装置和设备 | |
CA2861257C (en) | Fault tolerance for complex distributed computing operations | |
CN113569987A (zh) | 模型训练方法和装置 | |
CN112104723A (zh) | 一种多集群的数据处理系统及方法 | |
US11329869B2 (en) | Self-monitoring | |
CN107451147A (zh) | 一种kafka集群动态切换的方法和装置 | |
CN103716372A (zh) | 一种数字图书馆即服务的云计算平台构建方法 | |
CN111124830B (zh) | 一种微服务的监控方法及装置 | |
CN109408286A (zh) | 数据处理方法、装置、系统、计算机可读存储介质 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN112579288A (zh) | 一种基于云计算智能安全用数据管理系统 | |
CN112667362A (zh) | Kubernetes上部署Kubernetes虚拟机集群的方法与系统 | |
CN112698952A (zh) | 计算资源统一管理方法、装置、计算机设备及存储介质 | |
CN102819478A (zh) | 一种无代理的数据处理系统监控与管理方法 | |
CN114153580A (zh) | 一种跨多集群的工作调度方法及装置 | |
CN113204353A (zh) | 一种大数据平台组件部署方法及装置 | |
CN117608825A (zh) | 基于多云管理平台的资源管理方法和相关设备 | |
CN106293911A (zh) | 分布式调度系统、方法 | |
CN115080436A (zh) | 测试指标确定方法、装置、电子设备及存储介质 | |
CN112084004A (zh) | 一种面向容器应用的容器探测与维护方法及系统 | |
CN104484228A (zh) | 基于Intelli-DSC的分布式并行任务处理系统 | |
CN112039985B (zh) | 一种异构云管理方法及系统 | |
EP3633508A1 (en) | Load distribution for integration scenarios | |
CN115225538B (zh) | 基于自托管集群的监控方法和装置、电子设备及存储介质 | |
CN103326880B (zh) | Genesys呼叫系统高可用性云计算监控系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |