部署监控组件
当集群内未部署监控组件时,可通过在集群内部署 Prometheus、VictoriaMetrics、OCP 监控注册组件 插件,为集群提供监控数据采集、存储、查询、展示、转发等能力。
部署前须知
-
OCP 监控注册组件 仅适用于接入平台的 OpenShift 集群;其他类型的集群可参考 如何选择监控组件? 选择合适的插件。
-
监控组件部署成功后,后续出现新的可升级版本时,可通过 升级功能组件 进行升级。
Prometheus
前提条件
如果您希望使用 存储类 或 持久卷 存储监控数据,请提前在 存储 功能下为集群创建好相应的存储资源。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署监控组件的 集群名称。
-
在 插件 页签下,单击 Prometheus 插件右侧的
> 部署。 -
参考以下说明,配置相关参数。
参数 说明 规模配置 平台支持三种规模配置:小规模、中规模 和 大规模。三种规模的组件参数默认值来自于平台压力测试后的推荐值,可根据您实际的集群规模选择配置,或根据实际业务需求自定义配额。
注意:默认值将以平台实际压测数据为基础动态进行数据调优,平台版本升级时,将自动更新默认值,若无需跟随平台升级而更新默认值,建议自定义配置。存储类型 - LocalVolume:即本地卷,监控数据将存储在集群中指定的节点上,支持自定义 存储大小。
提示:存储大小会受监控数据保留时长(retention)、监控数据采样周期 (scrape_interval)、Pod 数量、和业务等因素影响,请根据实际情况进行调整。您可参考 官方文档 和真实运行环境的实际用量调整存储大小。
- StorageClass:即 存储类 ,监控数据将存储在根据存储类的定义自动生成的持久卷中,请填写已创建存储类的 名称。
- PV:即 持久卷 ,监控数据将存储在已创建好的持久卷中,平台将通过持久卷的 键、值 标签来匹配持久卷。
注意:监控组件部署完成后存储配置无法修改,若仍需修改存储类型,请联系技术人员获取支持。副本数 副本数为集群内部署的监控组件容器组数量。
注意:Prometheus仅支持部署单节点,如有高可用需求,请选择 VictoriaMetrics 。参数配置 参数配置为监控组件的数据参数,可根据需求参考界面提示调整。 -
单击 部署。
提示:Prometheus 部署成功后,通过以下地址(
<>为变量,需修改为实际值)可直接访问相应的组件。例如:https://new.example.cn/clusters/global/prometheus。组件名称 访问地址 Thanos <平台访问地址>/clusters/<cluster>/prometheusPrometheus <平台访问地址>/clusters/<cluster>/prometheus-0Alertmanager <平台访问地址>/clusters/<cluster>/alertmanager
VictoriaMetrics
前提条件
-
如果 仅部署 VictoriaMetrics 代理,请确保已在其他集群上部署了 VictoriaMetrics Center。
-
如果您希望使用 存储类 或 持久卷 存储监控数据,请提前在 存储 功能下为集群创建好相应的存储资源。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署监控组件的 集群名称。
-
在 插件 页签下,单击 VictoriaMetrics 插件右侧的
> 部署。 -
参考以下说明,配置相关参数。
参数 说明 规模配置 平台支持三种规模配置:小规模、中规模 和 大规模。三种规模的组件参数默认值来自于平台压力测试后的推荐值,可根据您实际的集群规模选择配置,或根据实际业务需求自定义配额。
注意:默认值将以平台实际压测数据为基础动态进行数据调优,平台版本升级时,将自动更新默认值,若无需跟随平台升级而更新默认值,建议自定义配置。仅部署 VictoriaMetrics 代理 是否仅部署日志采集组件 VMAgent,VMAgent 负责采集当前集群上的监控数据。
关闭开关,将在当前集群上部署 VictoriaMetrics 全套组件,包括 VMAgent、VMStorage(存储监控数据)、VMAlert(告警规则评估、传递告警消息) 等。
打开开关,当前集群需要依赖平台中的 VictoriaMetrics Center 才能提供完整的监控能力。VictoriaMetrics Center 平台上部署了 VictoriaMetrics 全套组件的集群,可为平台上仅部署了 VictoriaMetrics 代理的集群提供长期存储、监控告警等能力。 存储类型 - LocalVolume:即本地卷,监控数据将存储在集群中指定的节点上,支持自定义 存储大小。
提示:存储大小会受监控数据保留时长(retention)、监控数据采样周期 (scrape_interval)、Pod 数量、和业务等因素影响,请根据实际情况进行调整。您可参考 官方文档 和真实运行环境的实际用量调整存储大小。
- StorageClass:即 存储类 ,监控数据将存储在根据存储类的定义自动生成的持久卷中,请填写已创建存储类的 名称。
- PV:即 持久卷 ,监控数据将存储在已创建好的持久卷中,平台将通过持久卷的 键、值 标签来匹配持久卷。副本数 副本数为集群内部署的监控组件容器组数量,它根据存储类型不同推荐数量略有差异,请参考界面提示配置。
注意:当存储类型为 LocalVolume 时,无法配置多副本。
提示:当存储类型为 LocalVolume 时,无法配置多副本。参数配置 参数配置为监控组件的数据参数,可根据需求参考界面提示调整。
提示:在 保存时间 参数中,根据 VictoriaMetrics 的过期删除机制,它可能会暂时保留超过其保留期限的数据,该策略会导致部分数据冗余,请知晓。 -
单击 部署。
OCP 监控注册组件
前提条件
OCP 监控注册组件:接入平台的 OpenShift 集群,已部署监控组件且组件运行正常。
操作步骤
-
在左侧导航栏中,单击 集群管理 > 集群。
-
单击待部署插件的 集群名称。
-
在 插件 页签下,单击 OCP 监控注册组件 右侧的
> 部署。
如何备份 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 的监控数据。
-
(推荐)登录集群的任一控制节点(或打开集群的 CLI 工具),执行以下命令行,从 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 - 快照备份
操作步骤
-
登录集群的任一控制节点(或打开集群的 CLI 工具)。
-
执行以下命令行更新 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 采集监控指标。
-
有高可用、多集群监控需求建议选择 VictoriaMetrics 作为监控组件,从 3.18 版本开始,VictorMetrics 的成熟度已提升至 Beta,您可以放心使用。
-
无高可用需求、集群规模较小建议选择 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 支持的存储组件。 |
| 数据压缩比 | 低 | 高 | VictoriaMetrics 相对于 Prometheus 的主要优势之一是其数据压缩功能。它使用更有效的数据压缩算法;VictoriaMetrics 声称提供比 Prometheus 高出 10 倍的数据压缩,这是长期数据保留和成本优化的关键优势。 |
| 资源消耗 | 高 | 低 | VictoriaMetrics 的设计比 Prometheus 更节省资源。能够更有效地获取数据,对于相同的数据量,CPU 使用率、RAM 和磁盘空间更少。 |
| 社区认可度 | 高 | 中 | Prometheus 有非常活跃和庞大的社区,提供广泛的支持和丰富的插件生态,而VictoriaMetrics有一个不断增长的社区,提供持续的支持和开发 |
部署方式
以下为平台监控功能流程图,可帮助您梳理监控组件架构并选择合适的部署方式。
以下两种监控部署方式需任选其一:
注意:需要替换监控组件时,请确保另一个监控组件已卸载,且当前监控数据不会迁移至新监控组件中。
-
Prometheus 部署方式:该方式为上图中 cluster4 的情况。使用 Prometheus 组件处理从 Expoter 采集到的数据,通过监控面板查询监控数据并展示。
-
VictoriaMetrics 部署方式:该方式有两种部署模式,使用单集群或使用多集群的架构部署。
-
单集群部署模式:为上图中 cluster2 的情况。所有 VictoriaMetrics 相关组件部署在一个集群中,使用 VMAgent 处理从 Expoter 采集到的数据并写入到 VictoriaMetrics 中。通过使用 VMAlert 查询监控数据并发送告警信息给 Alertmanager。使用监控面板查询监控数据并展示。
提示:官方建议每秒 100W 数据的规模以下的倾向于使用单集群部署模式,否则可使用多集群模式部署。
-
多集群部署模式:为上图中 cluster1/cluster2/cluster3 的情况,在业务集群中部署 VictoriaMetrics 代理(也就是 VMAgent),使用业务集群中的 VMAgent 处理从 Expoter 采集到的数据并写入到监控集群的 VictoriaMetrics 中。
提示:在平台中部署 VictoriaMetrics 代理时,需确保在其他集群中使用单集群的方式部署了 VictoriaMetrics 服务。
-
选择建议
-
考虑使用VictoriaMetrics的场景
-
高性能和可扩展性需求:如果您的监控系统需要处理高吞吐量的数据和长期存储,VictoriaMetrics提供了高性能的监控解决方案,尤其是在大规模部署时。
-
成本效益:需要降低存储和计算资源成本的场景。VictoriaMetrics以其高效的数据压缩算法和较低的资源占用而闻名,有助于减少基础设施成本。
-
高可用要求:对于组件高可用有较高要求的场景,VictoriaMetrics支持高可用部署,可以选择使用。
-
数据压缩和存储优化:需要优化存储空间使用,尤其是在云环境中希望减少存储成本的情况。
-
-
考虑使用Prometheus的场景
-
现有Prometheus用户:如果已经在使用Prometheus,并且没有遇到性能瓶颈或者特定的存储需求,继续使用Prometheus可能更为合适,因为它拥有一个成熟的社区和广泛的集成支持。
-
简单的监控需求:对于小型或中型项目,且没有高可用需要时,Prometheus已足够使用,且其开源特性允许自由定制和扩展。
-
对新工具的采用持谨慎态度:如果对采用新技术持谨慎态度,或者现有的监控解决方案已经满足了业务需求,那么没有必要迁移到VictoriaMetrics。
-
特定的生态系统集成:如果监控生态系统深度集成了Prometheus,并且迁移成本较高,那么继续使用Prometheus可能更合理。
-