部署监控组件
当集群内未部署监控组件时,可通过在集群内部署 Prometheus、VictoriaMetrics、OCP 监控注册组件、Windows 监控插件 插件,为集群提供监控数据采集、存储、查询、展示、转发等能力。
部署前须知
-
OCP 监控注册组件 仅适用于接入平台的 OpenShift 集群;Windows 监控插件 仅适用于自建的 Windows 支持的集群;其他类型的集群可参考 如何选择监控组件? 选择合适的插件。
-
监控组件部署成功后,后续出现新的可升级版本时,可通过 升级功能组件 进行升级。
-
如果是因为 Prometheus 和 VictoriaMetrics 互相替换而需为集群部署新的目标插件(Prometheus 或 VictoriaMetrics),新插件部署后,为确保集群上已有的告警规则可用,需要 更新告警规则 。
Prometheus
前提条件
如果您希望使用 存储类 或 持久卷 存储监控数据,请提前在 存储 功能下为集群创建好相应的存储资源。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署监控组件的 集群名称。
-
在 插件 页签下,单击 Prometheus 插件右侧的
> 部署。
-
参考以下说明,配置相关参数。
参数 说明 规模配置 平台支持三种规模配置:小规模、中规模 和 大规模。三种规模的组件参数默认值来自于平台压力测试后的推荐值,可参考 实验室数据 - Prometheus 获取更多信息,或根据实际业务需求自定义配额。
注意:默认值将以平台实际压测数据为基础动态进行数据调优,平台版本升级时,将自动更新默认值,若无需跟随平台升级而更新默认值,建议自定义配置。存储类型 - LocalVolume:即本地卷,监控数据将存储在集群中指定的节点上,支持自定义 存储大小。
提示:存储大小会受监控数据保留时长(retention)、监控数据采样周期 (scrape_interval)、Pod 数量、和业务等因素影响,请根据实际情况进行调整。您可参考 官方文档 或根据 实验室测试结果 和真实运行环境的实际用量调整存储大小。
- StorageClass:即 存储类 ,监控数据将存储在根据存储类的定义自动生成的持久卷中,请填写已创建存储类的 名称。
- PV:即 持久卷 ,监控数据将存储在已创建好的持久卷中,平台将通过持久卷的 键、值 标签来匹配持久卷。
注意:监控组件部署完成后存储配置无法修改,若仍需修改存储类型,请联系技术人员获取支持。副本数 副本数为集群内部署的监控组件容器组数量,它根据存储类型不同推荐数量略有差异,请参考界面提示配置。
提示:当存储类型为 LocalVolume 时,无法配置多副本。参数配置 参数配置为监控组件的数据参数,可根据需求参考界面提示调整。 -
单击 部署。
提示:Prometheus 部署成功后,通过以下地址(
<>
为变量,需修改为实际值)可直接访问相应的组件。例如:https://new.example.cn/clusters/global/prometheus
。组件名称 访问地址 Thanos <平台访问地址>/clusters/<cluster>/prometheus
Prometheus <平台访问地址>/clusters/<cluster>/prometheus-0
Grafana <平台访问地址>/clusters/<cluster>/grafana
Alertmanager <平台访问地址>/clusters/<cluster>/alertmanager
VictoriaMetrics
前提条件
-
如果 仅部署 VictoriaMetrics 代理,请确保已在其他集群上部署了 VictoriaMetrics Center。
-
如果您希望使用 存储类 或 持久卷 存储监控数据,请提前在 存储 功能下为集群创建好相应的存储资源。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署监控组件的 集群名称。
-
在 插件 页签下,单击 VictoriaMetrics 插件右侧的
> 部署。
-
参考以下说明,配置相关参数。
参数 说明 规模配置 平台支持三种规模配置:小规模、中规模 和 大规模。三种规模的组件参数默认值来自于平台压力测试后的推荐值,可参考 实验室数据 - VictoriaMetrics 获取更多信息,或根据实际业务需求自定义配额。
注意:默认值将以平台实际压测数据为基础动态进行数据调优,平台版本升级时,将自动更新默认值,若无需跟随平台升级而更新默认值,建议自定义配置。仅部署 VictoriaMetrics 代理 是否仅部署日志采集组件 VMAgent,VMAgent 负责采集当前集群上的监控数据。
关闭开关,将在当前集群上部署 VictoriaMetrics 全套组件,包括 VMAgent、VMStorage(存储监控数据)、VMAlert(告警规则评估、传递告警消息) 等。
打开开关,当前集群需要依赖平台中的 VictoriaMetrics Center 才能提供完整的监控能力。VictoriaMetrics Center 平台上部署了 VictoriaMetrics 全套组件的集群,可为平台上仅部署了 VictoriaMetrics 代理的集群提供长期存储、监控告警等能力。 存储类型 - LocalVolume:即本地卷,监控数据将存储在集群中指定的节点上,支持自定义 存储大小。
提示:存储大小会受监控数据保留时长(retention)、监控数据采样周期 (scrape_interval)、Pod 数量、和业务等因素影响,请根据实际情况进行调整。您可参考 官方文档 或根据 实验室测试结果 和真实运行环境的实际用量调整存储大小。
- StorageClass:即 存储类 ,监控数据将存储在根据存储类的定义自动生成的持久卷中,请填写已创建存储类的 名称。
- PV:即 持久卷 ,监控数据将存储在已创建好的持久卷中,平台将通过持久卷的 键、值 标签来匹配持久卷。副本数 副本数为集群内部署的监控组件容器组数量,它根据存储类型不同推荐数量略有差异,请参考界面提示配置。
提示:当存储类型为 LocalVolume 时,无法配置多副本。参数配置 参数配置为监控组件的数据参数,可根据需求参考界面提示调整。 -
单击 部署。
OCP 监控注册组件/Windows 监控插件
前提条件
-
OCP 监控注册组件:接入平台的 OpenShift 集群,已部署监控组件且组件运行正常。
-
Windows 监控插件:自建的 Windows 支持的集群下至少已添加了 1 个 Windows 节点。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署插件的 集群名称。
-
在 插件 页签下,单击 OCP 监控注册组件/Windows 监控插件 右侧的
> 部署。
如何备份 Prometheus 的监控数据?
Prometheus 的监控数据以 TSDB 格式,存储在 Prometheus 容器的指定路径下,路径由 Prometheus 容器的配置 storage.tsdb.path
指定,默认为 /prometheus
,下文统称 storage.tsdb.path 目录 。
到存储不是实时的,会有一部分数据在缓存中。
template:
spec:
containers:
- args:
- '--storage.tsdb.path=/prometheus' # Prometheus 容器存储监控数据的目录
说明:Prometheus 计算组件名称为 prometheus-kube-prometheus-0
,类型为 StatefulSet
。
TSDB 格式数据示例如下:
├── 01FXP317QBANGAX1XQAXCJK9DB
│ ├── chunks
│ │ └── 000001
│ ├── index
│ ├── meta.json
│ └── tombstones
├── chunks_head
│ ├── 000022
│ └── 000023
├── queries.active
└── wal
├── 00000020
├── 00000021
├── 00000022
├── 00000023
└── checkpoint.00000019
└── 00000000
注意事项
Prometheus 存储监控数据时,会将采集到的监控数据先放入缓存,然后定期将缓存中的数据写入存储目录。以下备份方式均是以存储目录作为数据源进行备份,因此,备份数据中不包括备份时存放在缓存中的数据。
方式 1 - 备份存储目录
可通过以下两种方式备份 Prometheus 的监控数据。
-
(推荐)登录集群的任一控制节点(或打开集群的 Kubectl 工具),执行以下命令行,从 Prometheus 容器的 storage.tsdb.path 目录 拷贝监控数据至当前目录下。
# 目标存储路径为命令行执行时用户所在路径下的自定义存储路径,例如:prometheus-backup/ kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus -c prometheus <目标存储路径>
-
从存储后端拷贝监控数据:请根据插件部署时选择的 存储类型,选择相应的方式。
-
LocalVolume:从部署监控插件的节点的
/cpaas/monitoring/prometheus
目录下拷贝监控数据。 -
PV:卸载插件前,可直接从 storage.tsdb.path 目录 中拷贝监控数据;插件卸载后,PV 被释放,则需要重新挂载使用 PV,从 PV 的挂载目录拷贝监控数据。
提示:建议将 PV 的 persistentVolumeReclaimPolicy 属性设置为
Retain
,防止 PV 释放后数据被清除。 -
StorageClass:卸载插件前,可直接从 storage.tsdb.path 目录 中拷贝监控数据;插件卸载后,PV 被释放,则需要重新挂载使用 PV,从 PV 的挂载目录拷贝监控数据。
提示:建议将 StorageClass 的 reclaimPolicy 属性设置为
Retain
,防止动态创建的 PV 释放后数据被清除。
-
方式 2 - 快照备份
操作步骤
-
登录集群的任一控制节点(或打开集群的 Kubectl 工具)。
-
执行以下命令行更新 kube-prometheus-0 资源,在 spec 路径下,添加
enableAdminAPI=true
配置,启用 Prometheus 的 Admin API。kubectl edit -n cpaas-system prometheus kube-prometheus-0
在 spec 路径下,添加
enableAdminAPI=true
配置并保存。spec: enableAdminAPI: true
说明:更新并保存配置后,Prometheus 的 Pod(Pod 名称:prometheus-kube-prometheus-0-0)会重启,等待 Pod 都处于 Running 状态后执行后续操作。
通过以下命令行可查看 Prometheus Pod 状态:
kubectl get pods -n cpaas-system prometheus-kube-prometheus-0-0 -owide
-
执行以下命令行,调用 API(`POST /api/v1/admin/tsdb/snapshot`)创建快照。
curl -XPOST <Prometheus Pod IP>:9090/api/v1/admin/tsdb/snapshot
示例:
# 调用创建快照 API 命令 curl -XPOST 10.5.0.55:9090/api/v1/admin/tsdb/snapshot # 快照创建成功后返回信息,name 为快照名称 {"status":"success","data":{"name":"20220428T094253Z-159a8b76700b57cc"}
说明:快照存储在 Prometheus 容器的指定路径(
<storage.tsdb.path 目录>/snapshots/
)下。 执行以下命令行可将快照拷贝至当前目录下:kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:<storage.tsdb.path 目录>/snapshots/<快照名称> -c prometheus ./<目标存储路径> # 命令行示例 kubectl cp -n cpaas-system prometheus-kube-prometheus-0-0:/prometheus/snapshots/20220428T094253Z-159a8b76700b57cc -c prometheus ./prometheus-snapshots/
加载备份数据
将备份文件(包含快照)存放在 Prometheus 容器的 storage.tsdb.path 目录 下,Prometheus 会自动加载备份数据。
命令行示例:
# 将备份数据或快照拷贝至容器的 "/prometheus" 目录下,示例中备份数据或快照所在目录为 "/prometheus-backup"
kubectl cp ./prometheus-backup cpaas-system/prometheus-kube-prometheus-0-0:/prometheus/
# 进入 Prometheus 容器
kubectl exec -it -n cpaas-system prometheus-kube-prometheus-0-0 -c prometheus sh
# 将容器内的备份数据移动至 `storage.tsdb.path` 指定的目录 "/prometheus" 下
mv /prometheus/prometheus-backup/* /prometheus/
快捷方式:当插件部署时的存储类型为 LocalVolume 时,直接将备份数据拷贝至部署插件的节点的 /cpaas/monitoring/prometheus/prometheus-db/
目录下即可。
如何备份 VictoriaMetrics 的监控数据?
VictoriaMetrics 的监控数据存储在 VictoriaMetrics 容器的指定路径下,路径由 VictoriaMetrics 容器的配置 -storageDataPath
指定,默认为 /vm-data
,下文统称 -storageDataPath 目录 。
-storageDataPath 目录 配置示例如下:
spec:
template:
spec:
containers:
- args:
- '-storageDataPath=/vm-data'
说明:VictoriaMetrics 计算组件名称为 vmstorage-cluster
,类型为 StatefulSet
。
备份
请参考 vmbackup 备份 VictoriaMetrics 监控数据。
加载备份数据
请参考 vmrestore 加载 VictoriaMetrics 的备份数据。
如何选择监控组件?
集群部署监控组件时,平台支持 VictoriaMetrics 和 Prometheus 两种类型的监控组件,本章将为您展示监控组件的相关信息,为您选择监控组件做参考。
注意事项
目前集群中在部署监控组件时,仅支持从 VictoriaMetrics 和 Prometheus 中选择其一,单独部署 VictoriaMetrics 时将使用 VMAgent 采集监控指标,在平台中非大规模使用监控时,可选用 Prometheus 部署方式,由于平台 VictoriaMetrics 监控功能仍处于 Alpha 阶段,推荐您使用 Prometheus 部署方式。
名词解释
名词 | 说明 |
---|---|
Prometheus Server | Prometheus Server 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 |
Exporters | Exporter 将监控数据采集的端点通过 HTTP 服务的形式暴露给监控组件,获取到需要采集的监控数据。 |
AlertManager | 告警处理中心,支持基于 PromQL 创建告警规则。 |
PushGateway | 由于 Prometheus 数据采集基于 Pull 模型进行设计,因此在网络环境的配置上必须让 Prometheus Server 能够直接与 Exporter 进行通信。当这种网络需求无法直接满足时,就可以利用 PushGateway 来进行中转。可以通过 PushGateway 将内部网络的监控数据主动 Push 到 Gateway 当中。而 Prometheus Server 则可以采用同样 Pull 的方式从 PushGateway 中获取到监控数据。 |
VMStorage | VictoriaMetrics 中监控数据存储的组件。 |
VMInsert | VMInsert 可以通过 remote write API 接收来自监控服务的数据,并将其分布在可用的 VMStorage 节点上。 |
VMSelect | 监控查询组件。 |
VMAlert | 负责告警规则的评估以及将对应的告警消息传递给 Alertmanager。 |
VMAgent | 负责采集监控指标。 |
Apollo | 平台组件,用于支持运营统计数据、日志数据的查询和导出。 |
组件介绍
-
Prometheus
Prometheus 是一个开源的系统监控和报警系统,现在已经加入到 CNCF 基金会,成为继 Kubernetes 之后第二个在 CNCF 托管的项目,在 Kubernetes 容器编排系统中,通常会搭配 Prometheus 进行监控,同时也支持多种 Exporter 采集数据,支持 pushgateway 进行数据上报,Prometheus 性能足够支撑上万台规模的集群。架构图如下:
-
VictoriaMetrics
VictoriaMetrics 是一个快速、低资源消耗、可扩展的监控解决方案和时序列数据库,它通常用于 Prometheus、InfluxDB、Graphite、OpenTSDB 等其他监控系统数据的长期存储。集群版 VictoriaMetrics 可以实现大规模 Prometheus 集群的高可用,并提供了全局视图和可靠的历史数据存储,与 Thanos 的功能类似,但比 Thanos 的架构更加简单易用。架构图如下:
特性对比
以下仅举例两种监控组件的部分特性,更多请参考监控组件官方文档:
Prometheus | VictoriaMetrics | 说明 | |
---|---|---|---|
高可用部署 | 不支持 | 支持 | Prometheus 在告警、查询时无法保证数据的一致性,多个实例采集多份监控数据的表现较好。VictoriaMetrics 支持多集群的高可用部署,并且可以在告警、查询时保证数据的一致性。 |
单节点部署 | 支持 | 支持 | |
监控数据长期存储 | 不适合 | 适合 | Prometheus 的长期监控数据存储方案官方建议使用远程存储,VictoriaMetrics 可以使用本地存储保存长期监控数据。 |
本地存储 | 支持 | 支持 | Prometheus 不支持 NFS 类型的本地存储,并且不适合长期存储数据。 |
远程存储 | 支持 | 支持 | VictoriaMetric 支持的远程存储组件少于 Prometheus 支持的存储组件。 |
部署方式
以下为平台监控功能流程图,可帮助您梳理监控组件架构并选择合适的部署方式,在平台中非大规模使用监控时,可选用 Prometheus 部署方式,由于平台 VictoriaMetrics 监控功能仍处于 Alpha 阶段,推荐您使用 Prometheus 部署方式。

以下两种监控部署方式需任选其一:
注意:需要替换监控组件时,请确保另一个监控组件已卸载,且当前监控数据不会迁移至新监控组件中。
-
Prometheus 部署方式:该方式为上图中 cluster4 的情况。使用 Prometheus 组件处理从 Expoter 采集到的数据,通过 Grafana 组件查询监控数据并展示。
-
VictoriaMetrics 部署方式:该方式有两种部署模式,使用单集群或使用多集群的架构部署。
-
单集群部署模式:为上图中 cluster2 的情况。所有 VictoriaMetrics 相关组件部署在一个集群中,使用 VMAgent 处理从 Expoter 采集到的数据并写入到 VictoriaMetrics 中。通过使用 VMAlert 查询监控数据并发送告警信息给 Alertmanager。使用 Grafana 组件查询监控数据并展示。
提示:官方建议每秒 100W 数据的规模以下的倾向于使用单集群部署模式,否则可使用多集群模式部署。
-
多集群部署模式:为上图中 cluster1/cluster2/cluster3 的情况,在业务集群中部署 VictoriaMetrics 代理(也就是 VMAgent),使用业务集群中的 VMAgent 处理从 Expoter 采集到的数据并写入到监控集群的 VictoriaMetrics 中。
提示:在平台中部署 VictoriaMetrics 代理时,需确保在其他集群中使用单集群的方式部署了 VictoriaMetrics 服务。
-
实验室数据 - Prometheus
小规模(<=500 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
prometheus | 1 | 架构:X86 容量:8c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:16g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 10 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
中规模(<=2000 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:8c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:16g 类型:DDR4_64_RDIMM_2933MHZ |
prometheus | 1 | 架构:X86 容量:12c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:36g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 20 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
大规模(<=5000 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:12c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:24g 类型:DDR4_64_RDIMM_2933MHZ |
prometheus | 1 | 架构:X86 容量:32c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:128g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 100 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
测试结果
组件资源用量推荐可以直接在平台界面查看,在此不再赘述。
-
小规模磁盘使用量:0.73G/天。
-
中规模磁盘使用量:2.50G/天。
-
大规模磁盘使用量:11.88G/天。
实验室数据 - VictoriaMetrics
小规模(<=500 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
VictoriaMetrics | 1 | 架构:X86 容量:8c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:16g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 10 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
中规模(<=2000 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:8c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:16g 类型:DDR4_64_RDIMM_2933MHZ |
VictoriaMetrics | 1 | 架构:X86 容量:12c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:36g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 20 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
大规模(<=5000 pod)
角色 | 服务器数量 | 服务器CPU架构及型号 | 内存容量及类型 |
---|---|---|---|
master | 3 | 架构:X86 容量:12c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:24g 类型:DDR4_64_RDIMM_2933MHZ |
VictoriaMetrics | 1 | 架构:X86 容量:32c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:128g 类型:DDR4_64_RDIMM_2933MHZ |
slave | 100 | 架构:X86 容量:4c 型号:Intel(R) Xeon(R) Gold 6248R CPU @ 3.00GHz |
容量:8g 类型:DDR4_64_RDIMM_2933MHZ |
测试结果
组件资源用量推荐可以直接在平台界面查看,在此不再赘述。
-
小规模磁盘使用量:0.26G/天。
-
中规模磁盘使用量:0.93G/天。
-
大规模磁盘使用量:6G/天。