安装

概述

监控组件为可观测性模块中的监控、告警、巡检和健康检查功能提供基础设施。本文档介绍如何在集群中安装 ACP Monitoring with Prometheus 或 ACP Monitoring with VictoriaMetrics。

要确定安装哪个插件,请先查阅 监控组件选型指南,并选择最符合集群规模、存储方案和运维需求的方案。

开始之前

INFO

部分监控组件较为消耗资源。建议通过插件配置将其调度到 infra 节点上。Prometheus 和 VictoriaMetrics 均支持插件级别的 nodeSelectortolerations 设置。如果您正在评估产品且尚未规划 infra 节点,可将这些设置留空,使组件运行在普通节点上。

有关规划 infra 节点的指导,请参见 集群节点规划

在安装监控组件之前,请确保满足以下条件:

  • 已参考 监控组件选型指南 选择合适的监控组件。
  • 在业务集群中安装时,请确保 global 集群能够访问该业务集群的 11780 端口。
  • 如需使用 StorageClass 或持久卷存储监控数据,请提前在 存储 中创建相应资源。
  • 安装前请确定由哪个集群存储监控数据。global 集群会安装自身的完整组件集,且仅监控自身。在多集群平台上,请将用于聚合业务集群指标的 VictoriaMetrics Center 安装在专用业务集群中,而非 global 集群;同时将各业务集群以仅 Agent 模式安装并指向该集群,从而使管理集群可用性与应用监控负载相互独立。
  • 如果 global 集群部署了容灾,业务集群的监控不得指向主 global 集群或备 global 集群。容灾仅同步 global 集群的 etcd 数据,并排除 cpaas-system 等命名空间,因此监控数据不会被复制,故障切换后将不可用。每个 global 集群仅监控自身。同步范围请参见 global 集群容灾

ACP Monitoring with Prometheus

从控制台安装

  1. 进入 应用商店管理 > 集群插件,并选择目标集群。

  2. 找到 ACP Monitoring with Prometheus 插件,点击 安装

  3. 配置以下参数:

    控制台会突出显示最常用的安装选项。有关详细的可配置字段,请参见本节中的 YAML 参考。

    参数说明
    规模配置支持三种配置:小规模中规模大规模
    - 默认值基于平台推荐的负载测试值设置
    - 可根据实际集群规模选择或自定义配额
    - 默认值会随平台版本更新;如需固定配置,建议使用自定义设置
    存储类型- LocalVolume:本地存储,数据存储在指定节点上
    - StorageClass:使用存储类自动生成持久卷
    - PV:使用已有的持久卷
    注意:存储配置在安装后无法修改
    副本数设置监控组件 Pod 的数量
    注意:Prometheus 仅支持单节点安装
    高级配置用于配置插件级调度参数的可折叠区域。
    节点选择器显示在 高级配置 中。为 Prometheus 插件工作负载配置插件级节点选择器规则。
    节点容忍显示在 高级配置 中。为 Prometheus 插件工作负载配置插件级容忍规则。
    参数配置可根据需要调整监控组件的数据参数
  4. 点击 安装 完成安装。

使用 YAML 安装

检查可用版本

通过检查 global 集群中的 ModulePlugin 和 ModuleConfig 资源,确认插件已发布:


# kubectl get moduleplugin | grep prometheus
prometheus                       30h
# kubectl get moduleconfig | grep prometheus
prometheus-v4.1.0                30h

这表明集群中存在 ModulePlugin prometheus,且已发布版本 v4.1.0

创建 ModuleInfo

创建一个不包含任何配置参数的 ModuleInfo 资源以安装插件:

kind: ModuleInfo
apiVersion: cluster.alauda.io/v1alpha1
metadata:
  name: global-prometheus
  labels:
    cpaas.io/cluster-name: global
    cpaas.io/module-name: prometheus
    cpaas.io/module-type: plugin
spec:
  version: v4.1.0
  config:
    storage:
      type: LocalVolume
      capacity: 40
      nodes:
        - xxx.xxx.xxx.xx
      path: /cpaas/monitoring
      storageClass: ""
      pvSelectorK: ""
      pvSelectorV: ""
    replicas: 1
    components:
      nodeSelector:
        - key: kubernetes.io/os
          value: linux
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/infra
          operator: Exists
      prometheus:
        retention: 7
        scrapeInterval: 60
        scrapeTimeout: 45
        resources: null
      nodeExporter:
        port: 9100
        resources: null
      alertmanager:
        resources: null
      kubeStateExporter:
        resources: null
      prometheusAdapter:
        resources: null
      thanosQuery:
        resources: null
    size: Small

资源配置示例(Prometheus):

spec:
  config:
    components:
      prometheus:
        resources:
          limits:
            cpu: 2000m
            memory: 2000Mi
          requests:
            cpu: 1000m
            memory: 1000Mi

更多详情,请参见 监控组件容量规划

YAML 字段参考(Prometheus):

字段路径说明
metadata.labels.cpaas.io/cluster-name安装插件的目标集群名称。
metadata.labels.cpaas.io/module-name必须为 prometheus
metadata.labels.cpaas.io/module-type必须为 plugin
metadata.nameModuleInfo 名称(例如 <cluster>-prometheus)。
spec.version要安装的插件版本。
spec.config.storage.type存储类型:LocalVolumeStorageClassPV
spec.config.storage.capacityPrometheus 的存储大小(Gi)。建议至少 30 Gi。
spec.config.storage.nodesstorage.type=LocalVolume 时的节点列表。最多支持 1 个节点。
spec.config.storage.pathstorage.type=LocalVolume 时的 LocalVolume 基础路径。默认值:/cpaas/monitoring
spec.config.storage.storageClassstorage.type=StorageClass 时的 StorageClass 名称。
spec.config.storage.pvSelectorKstorage.type=PV 时的 PV 选择器键。
spec.config.storage.pvSelectorVstorage.type=PV 时的 PV 选择器值。
spec.config.replicas副本数;仅适用于 StorageClass/PV 类型。
spec.config.components.nodeSelector可选。Prometheus 插件工作负载的插件级节点选择器规则。
spec.config.components.tolerations可选。Prometheus 插件工作负载的插件级容忍规则。
spec.config.components.prometheus.retention数据保留天数。
spec.config.components.prometheus.scrapeInterval抓取间隔(秒);适用于未设置 interval 的 ServiceMonitor。
spec.config.components.prometheus.scrapeTimeout抓取超时(秒);必须小于 scrapeInterval
spec.config.components.prometheus.resourcesPrometheus 的资源配置。
spec.config.components.nodeExporter.portNode Exporter 端口(默认 9100)。
spec.config.components.nodeExporter.resourcesNode Exporter 的资源配置。
spec.config.components.alertmanager.resourcesAlertmanager 的资源配置。
spec.config.components.kubeStateExporter.resourcesKube State Exporter 的资源配置。
spec.config.components.prometheusAdapter.resourcesPrometheus Adapter 的资源配置。
spec.config.components.thanosQuery.resourcesThanos Query 的资源配置。
spec.config.size监控规模:SmallMediumLarge

验证安装

由于 ModuleInfo 名称在创建后会发生变化,请通过标签定位资源以检查插件状态和版本:

kubectl get moduleinfo -l cpaas.io/module-name=prometheus
NAME                                             CLUSTER         MODULE        DISPLAY_NAME   STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
global-e671599464a5b1717732c5ba36079795          global          prometheus    prometheus     Running   v4.1.0           v4.1.0            v4.1.0

字段说明:

  • NAME:ModuleInfo 资源名称
  • CLUSTER:插件所安装的集群
  • MODULE:插件名称
  • DISPLAY_NAME:插件的显示名称
  • STATUS:安装状态;Running 表示已成功安装并正在运行
  • TARGET_VERSION:目标安装版本
  • CURRENT_VERSION:安装前的版本
  • NEW_VERSION:可用于安装的最新版本

将 Prometheus 工作负载调度到 Infra 节点

如果希望 Prometheus 插件工作负载运行在专用 infra 节点上,请在安装或升级时配置插件级调度规则,而不是在安装后对已生成的工作负载进行修改。

  • 在控制台中,使用 高级配置 设置 节点选择器节点容忍
  • 在 YAML 中,设置 spec.config.components.nodeSelectorspec.config.components.tolerations

示例:

config:
  components:
    nodeSelector:
      - key: kubernetes.io/os
        value: linux
    tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        operator: Exists

在应用这些调度规则之前,请确保 infra 节点规划和存储位置相互兼容。有关规划注意事项,请参见 操作指南 中的监控指南,包括 为监控规划 Infra 节点

访问已安装的组件

安装完成后,可通过以下地址访问各组件(将 <> 替换为实际值):

组件访问地址
Thanos<platform_access_address>/clusters/<cluster>/prometheus
Prometheus<platform_access_address>/clusters/<cluster>/prometheus-0
Alertmanager<platform_access_address>/clusters/<cluster>/alertmanager

ACP Monitoring with VictoriaMetrics

前提条件

  • 如果仅安装 VictoriaMetrics Agent,请确保已在其他集群中安装 VictoriaMetrics Center。

从控制台安装

  1. 进入 应用商店管理 > 集群插件,并选择目标集群。

  2. 找到 ACP Monitoring with VictoriaMetrics 插件,点击 安装

  3. 配置以下参数:

    控制台会突出显示最常用的安装选项。有关详细的可配置字段,请参见本节中的 YAML 参考。

    参数说明
    规模配置支持三种配置:小规模中规模大规模
    - 默认值基于平台推荐的负载测试值设置
    - 可根据实际集群规模选择或自定义配额
    - 默认值会随平台版本更新;如需固定配置,建议使用自定义设置
    仅安装 Agent- 关闭:安装完整的 VictoriaMetrics 组件套件
    - 开启:仅安装 VMAgent 采集组件,该组件依赖于 VictoriaMetrics Center
    VictoriaMetrics Center选择已安装完整 VictoriaMetrics 组件的集群
    存储类型- LocalVolume:本地存储,数据存储在指定节点上
    - StorageClass:使用存储类自动生成持久卷
    - PV:使用已有的持久卷
    存储路径存储类型LocalVolume 时显示。指定监控数据的基础存储路径。默认值:/cpaas/monitoring
    副本数存储类型StorageClassPV 时显示。设置监控组件 Pod 的数量。当 存储类型LocalVolume 时,所选节点的数量决定 VMStorage 的副本数。
    高级配置用于配置插件级调度参数的可折叠区域。
    节点选择器显示在 高级配置 中。为 VictoriaMetrics 插件工作负载配置插件级节点选择器规则。
    节点容忍显示在 高级配置 中。为 VictoriaMetrics 插件工作负载配置插件级容忍规则。
    参数配置可调整监控组件的数据参数
    注意:数据在被删除前可能会暂时超出保留期限
  4. 点击 安装 完成安装。

使用 YAML 安装

检查可用版本

通过检查 global 集群中的 ModulePlugin 和 ModuleConfig 资源,确认插件已发布:


# kubectl get moduleplugin | grep victoriametrics
victoriametrics                       30h
# kubectl get moduleconfig | grep victoriametrics
victoriametrics-v4.1.0                30h

这表明集群中存在 ModulePlugin victoriametrics,且已发布版本 v4.1.0

创建 ModuleInfo

创建一个不包含任何配置参数的 ModuleInfo 资源以安装插件:

kind: ModuleInfo
apiVersion: cluster.alauda.io/v1alpha1
metadata:
  name: business-1-victoriametrics
  labels:
    cpaas.io/cluster-name: business-1
    cpaas.io/module-name: victoriametrics
    cpaas.io/module-type: plugin
spec:
  version: v4.1.0
  config:
    storage:
      type: LocalVolume
      capacity: 40
      nodes:
        - xxx.xxx.xxx.xx
      path: /cpaas/monitoring
      storageClass: ""
      pvSelectorK: ""
      pvSelectorV: ""
    replicas: 1
    agentOnly: false
    agentReplicas: 1
    crossClusterDependency:
      victoriametrics: ""
    components:
      nodeSelector:
        - key: kubernetes.io/os
          value: linux
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/infra
          operator: Exists
      nodeExporter:
        port: 9100
        resources: null
      vmstorage:
        retention: 7
        resources: null
      kubeStateExporter:
        resources: null
      vmalert:
        resources: null
      prometheusAdapter:
        resources: null
      vmagent:
        scrapeInterval: 60
        scrapeTimeout: 45
        resources: null
      vminsert:
        resources: null
      alertmanager:
        resources: null
      vmselect:
        resources: null
    size: Small

资源配置示例(vmagent):

spec:
  config:
    components:
      vmagent:
        resources:
          limits:
            cpu: 2000m
            memory: 2000Mi
          requests:
            cpu: 1000m
            memory: 1000Mi

更多详情,请参见 监控组件容量规划

YAML 字段参考(VictoriaMetrics):

字段路径说明
metadata.labels.cpaas.io/cluster-name安装插件的目标集群名称。
metadata.labels.cpaas.io/module-name必须为 victoriametrics
metadata.labels.cpaas.io/module-type必须为 plugin
metadata.nameModuleInfo 名称(例如 <cluster>-victoriametrics)。
spec.version要安装的插件版本。
spec.config.storage.type存储类型:LocalVolumeStorageClassPV
spec.config.storage.capacityVictoriaMetrics 的存储大小(Gi)。建议至少 30 Gi。
spec.config.storage.nodesstorage.type=LocalVolume 时的节点列表。可以选择一个或多个节点。
spec.config.storage.pathstorage.type=LocalVolume 时的 LocalVolume 基础路径。默认值:/cpaas/monitoring
spec.config.storage.storageClassstorage.type=StorageClass 时的 StorageClass 名称。
spec.config.storage.pvSelectorKstorage.type=PV 时的 PV 选择器键。
spec.config.storage.pvSelectorVstorage.type=PV 时的 PV 选择器值。
spec.config.replicas副本数;适用于 StorageClassPV 类型。
spec.config.agentOnly是否仅安装 vmagent 而不安装完整的 VictoriaMetrics 组件集。
spec.config.agentReplicas启用仅 Agent 模式时 vmagent 的副本数。
spec.config.crossClusterDependency.victoriametrics启用仅 Agent 模式时提供 VictoriaMetrics Center 的目标集群。
spec.config.components.nodeSelector可选。VictoriaMetrics 插件工作负载的插件级节点选择器规则。
spec.config.components.tolerations可选。VictoriaMetrics 插件工作负载的插件级容忍规则。
spec.config.components.vmstorage.retentionvmstorage 的数据保留天数。
spec.config.components.vmagent.scrapeInterval抓取间隔(秒);适用于未设置 interval 的 ServiceMonitor。
spec.config.components.vmagent.scrapeTimeout抓取超时(秒);必须小于 scrapeInterval
spec.config.components.vmstorage.resourcesvmstorage 的资源配置。
spec.config.components.vmalert.resourcesvmalert 的资源配置。
spec.config.components.nodeExporter.portNode Exporter 端口(默认 9100)。
spec.config.components.nodeExporter.resourcesNode Exporter 的资源配置。
spec.config.components.alertmanager.resourcesAlertmanager 的资源配置。
spec.config.components.kubeStateExporter.resourcesKube State Exporter 的资源配置。
spec.config.components.prometheusAdapter.resourcesPrometheus Adapter 的资源配置(用于 HPA/自定义指标)。
spec.config.components.vmagent.resourcesvmagent 的资源配置。
spec.config.components.vminsert.resourcesvminsert 的资源配置。
spec.config.components.vmselect.resourcesvmselect 的资源配置。
spec.config.size监控规模:SmallMediumLarge

验证安装

由于 ModuleInfo 名称在创建后会发生变化,请通过标签定位资源以检查插件状态和版本:

kubectl get moduleinfo -l cpaas.io/module-name=victoriametrics
NAME                                             CLUSTER         MODULE            DISPLAY_NAME     STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
global-e671599464a5b1717732c5ba36079795          global          victoriametrics   victoriametrics  Running   v4.1.0           v4.1.0            v4.1.0

字段说明:

  • NAME:ModuleInfo 资源名称
  • CLUSTER:插件所安装的集群
  • MODULE:插件名称
  • DISPLAY_NAME:插件的显示名称
  • STATUS:安装状态;Running 表示已成功安装并正在运行
  • TARGET_VERSION:目标安装版本
  • CURRENT_VERSION:安装前的版本
  • NEW_VERSION:可用于安装的最新版本

将 VictoriaMetrics 工作负载调度到 Infra 节点

如果希望 VictoriaMetrics 插件工作负载运行在专用 infra 节点上,请在安装或升级时配置插件级调度规则,而不是在安装后对已生成的工作负载进行修改。

  • 在控制台中,使用 高级配置 设置 节点选择器节点容忍
  • 在 YAML 中,设置 spec.config.components.nodeSelectorspec.config.components.tolerations

示例:

config:
  components:
    nodeSelector:
      - key: kubernetes.io/os
        value: linux
    tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/infra
        operator: Exists

在应用这些调度规则之前,请确保 infra 节点规划和存储位置相互兼容。有关规划注意事项,请参见 操作指南 中的监控指南,包括 为监控规划 Infra 节点

访问已安装的组件

安装完成后,可通过以下地址访问组件(将 <> 替换为实际值):

组件访问地址
VictoriaMetrics UI<platform_access_address>/clusters/<cluster>/vmselect-ui/vmui/?#/metrics
INFO

如果启用了 仅安装 Agent,该集群不会在本地部署 vmselect 组件,因此该集群中无法使用 VictoriaMetrics UI 地址。