更新时间:2024-12-18 GMT+08:00

云原生监控插件

插件简介

云原生监控插件(kube-prometheus-stack)通过使用Prometheus-operator和Prometheus,提供简单易用的端到端Kubernetes集群监控能力。

使用kube-prometheus-stack可将监控数据与监控中心对接,在监控中心控制台查看监控数据,配置告警等。

开源社区地址:https://github.com/prometheus/prometheus

安装插件

  1. 登录CCE控制台,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到云原生监控插件,单击“安装”
  2. “数据存储配置”开启“监控数据上报至AOM服务”,并选择“指标上报的AOM实例”

    监控数据上报至AOM服务:将普罗数据上报至 AOM 服务。开启后,可选择对应的AOM实例。采集的基础指标免费,自定义指标将由AOM服务进行收费,详情请参见价格详情。对接AOM需要用户具备一定权限,目前仅华为云/华为账号,或者在admin用户组下的用户支持此操作。

  3. 根据需求进行“规格配置”

    • 普罗高可用:高可用会在集群中将prometheus-lightweight、prometheus-operator、custom-metrics-apiserver、kube-state-metrics组件按多实例方式部署。
    • 配置清单:您可以根据需求为各组件配置CPU配额和内存配额

  4. 根据需求进行“参数配置”

    • 自定义指标HPA:以服务发现的形式自动采集应用的指标用于HPA。开启后需要在目标应用添加相关配置,详情请参见使用自定义指标创建HPA策略
    • 采集周期:采集时间间隔,输入值必须在10到60之间。

  5. 完成以上配置后,单击“安装”

    插件安装完成后,根据您的使用需求,可能还需进行以下操作。

    如需使用自定义指标创建弹性伸缩策略,请将Prometheus采集到的自定义指标聚合到API Server,可供HPA策略使用,详情请参见使用自定义指标创建HPA策略

组件说明

安装kube-prometheus-stack插件创建的Kubernetes资源,全部都创建在monitoring命名空间下。

表1 kube-prometheus-stack组件

容器组件

说明

资源类型

prometheusOperator

(负载名称:prometheus-operator)

根据自定义资源(Custom Resource Definition / CRDs)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。

Deployment

prometheus-lightweight

(负载名称:prometheus-lightweight)

Operator根据自定义资源Prometheus类型中定义的内容而部署Prometheus Server集群,这些自定义资源可以看作是用来管理Prometheus Server集群的StatefulSets资源。

StatefulSet

kubeStateMetrics

(负载名称:kube-state-metrics)

将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。

说明:

该组件如果存在多个Pod,只会有一个Pod暴露指标。

Deployment

adapter

(负载名称:custom-metrics-apiserver)

将自定义指标聚合到原生的Kubernetes API Server,与“自定义指标HPA”密切相关。仅当“自定义指标HPA”被启用时,需要安装adapter组件。

Deployment

通过Metrics API提供资源指标

容器和节点的资源指标,如CPU、内存使用量,可通过Kubernetes的Metrics API获得。这些指标可以直接被用户访问,比如用kubectl top命令,也可以被HPA或者CustomedHPA使用,根据资源使用率使负载弹性伸缩。

插件可为Kubernetes提供Metrics API,但默认未开启,若要将其开启,需要创建以下APIService对象:

apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    app: custom-metrics-apiserver
    release: cceaddon-prometheus
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: custom-metrics-apiserver
    namespace: monitoring
    port: 443
  version: v1beta1
  versionPriority: 100

可以将该对象保存为文件,命名为metrics-apiservice.yaml,然后执行以下命令:

kubectl create -f metrics-apiservice.yaml

执行kubectl top pod -n monitoring命令,若显示如下,则表示Metrics API能正常访问:

# kubectl top pod -n monitoring
NAME                                                      CPU(cores)   MEMORY(bytes)
......
custom-metrics-apiserver-d4f556ff9-l2j2m                  38m          44Mi
......

卸载插件时,需要执行以下kubectl命令,同时删除APIService对象,否则残留的APIService资源将导致metrics-server插件安装失败。

kubectl delete APIService v1beta1.metrics.k8s.io

使用自定义指标创建HPA策略

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 自定义采集规则,采集到的指标可以作为HPA策略的监控指标,用于控制工作负载弹性伸缩。

    • 如果需要创建一个新的配置项,用于自定义采集规则,可以按照以下步骤进行。

      在左侧导航栏中选择“配置与密钥”,单击“YAML创建”,自定义采集规则示例如下。

      如果您需要增加多个采集规则,可在rules字段下添加多个配置,关于采集规则配置详情请参见Metrics Discovery and Presentation Configuration

      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: user-adapter-config  # 配置项名称,不能修改
        namespace: monitoring  # 配置项所在的命名空间
      data:
        config.yaml: |-
          rules:  # 采集规则
          - seriesQuery: 'container_network_receive_bytes_total{namespace!="",pod!=""}' # 扩容需要的原始指标(指标来源kubelet)
            seriesFilters: []
            resources:
              overrides:  # 指定Pod和命名空间资源
                namespace:
                  resource: namespace
                pod:
                  resource: pod
            name:
              matches: container_(.*)_total  #匹配以container_开头并以_total结尾的指标。
              as: "pod_${1}_per_second"  # 采集指标的别名
            metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>) # 负载下所有容器的30s内指标变化率

      以上示例中,聚合时间为30s,如果该参数设置小于15s采集周期,可能会导致指标不准确。

    • 如果已有一个配置项,可以通过以下步骤对其采集规则进行修改。

      在左侧导航栏中选择“配置与密钥”,切换至“monitoring”命名空间,在“配置项”页签找到对应的配置项,并单击“更新”

      “更新配置项”页面,单击“配置数据 > 编辑”,进而修改采集规则。

      图1 更新配置项

  3. 在左侧导航栏中选择“插件中心”,在右侧找到云原生监控插件,单击“编辑”,并开启“自定义指标HPA”功能。

    完成后,单击“确定”

    您需要先创建2中的自定义采集规则,然后打开“自定义指标HPA”功能触发插件重新部署,自定义指标采集才可以生效。

  4. 在左侧导航栏中选择“工作负载”,找到需要创建HPA策略的工作负载单击“弹性伸缩”。您可在“自定义策略”中选择2中的采集指标创建弹性伸缩策略。

    当负载创建后,请您等待Pod ready并完成第一个采集周期的指标采集后,再创建HPA策略。

    图2 创建HPA策略