3.7. 配置持久性存储
使用持久性存储运行集群监控以获取以下优点:
- 通过将指标和警报数据存储在持久性卷(PV)中来保护您的指标和警报数据。因此,它们可以在 pod 重启或重新创建后保留。
- 避免获取重复的通知,并在 Alertmanager pod 重启时丢失警报静默。
在生产环境中,强烈建议配置持久性存储。
在多节点集群中,您必须为 Prometheus、Alertmanager 和 Thanos Ruler 配置持久性存储,以确保高可用性。
3.7.1. 持久性存储的先决条件
- 使用块存储类型。
3.7.2. 配置持久性卷声明
要将持久性卷(PV)用于监控组件,您必须配置持久性卷声明(PVC)。
前提条件
-
您可以使用具有
dedicated-admin
角色的用户访问集群。 -
user-workload-monitoring-config
ConfigMap
对象存在。在集群创建时默认创建此对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
ConfigMap
对象:在
openshift-user-workload-monitoring
项目中编辑user-workload-monitoring-config
ConfigMap
对象:$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
将组件的 PVC 配置添加到
data/config.yaml
下:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: 1 volumeClaimTemplate: spec: storageClassName: <storage_class> 2 resources: requests: storage: <amount_of_storage> 3
如需有关如何指定
volumeClaimTemplate
的信息,请参阅 Kubernetes 文档中与 PersistentVolumeClaim 相关的内容。以下示例配置了一个 PVC 来声明用于 Thanos Ruler 的持久性存储:
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: volumeClaimTemplate: spec: storageClassName: my-storage-class resources: requests: storage: 10Gi
注意thanosRuler
组件的存储要求取决于要评估的规则数量以及每个规则生成的样本数量。
保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署并应用新的存储配置。
警告当您使用 PVC 配置更新配置映射时,受影响的
StatefulSet
对象会被重新创建,从而导致临时服务中断。
3.7.3. 修改 Prometheus 指标数据的保留时间和大小
默认情况下,Prometheus 会在以下持续时间内保留指标数据:
- 核心平台监控 :15 天
- 监控用户定义的项目: 24 小时
您可以修改监控用户定义的项目的 Prometheus 实例的保留时间,以更改在多久后删除数据。您还可以设置保留指标数据使用的最大磁盘空间量。如果数据达到这个大小限制,Prometheus 会首先删除最旧的数据,直到使用的磁盘空间重新低于限制。
请注意这些数据保留设置的行为:
-
基于大小的保留策略适用于
/prometheus
目录中的所有数据块目录,包括持久性块、写入级日志(WAL)数据和 mmapped 块。 -
/wal
和/head_chunks
目录中的数据计入保留大小限制,但 Prometheus 永远不会根据基于大小或基于时间的保留策略从这些目录中清除数据。因此,如果您设置了保留大小限制,它小于为/wal
和/head_chunks
目录设置的最大容量,则表示您将系统配置为不保留/prometheus
数据目录中的任何数据块。 - 只有在 Prometheus 切断新的数据块时,才会应用基于大小的保留策略,即在 WAL 最多包含三小时数据后每两小时进行。
-
如果没有为
retention
或retentionSize
明确定义值,则保留时间默认为 15 天,用于核心平台监控,为用户定义的项目监控 24 小时。不设置保留大小。 -
如果
retention
和retentionSize
都定义了值,则会应用这两个值。如果任何数据块超过定义的保留时间或定义的大小限制,Prometheus 会清除这些数据块。 -
如果您为
retentionSize
定义了值,且没有定义retention
,则只应用retentionSize
值。 -
如果您没有为
retentionSize
定义值,且只为retention
定义了值,则只应用retention
值。 -
如果将
retentionSize
或retention
值设置为0
,则应用默认的设置。默认设置将核心平台监控的保留时间设置为 15 天,用户定义的项目监控为 24 小时。默认情况下,不会设置保留大小。
数据压缩每两小时进行一次。因此,持久性卷 (PV) 可能会在压缩前已被填满,可能会超过 retentionSize
限制。在这种情况下,KubePersistentVolumeFillingUp
警报会触发,直到 PV 上的空间低于 retentionSize
限制。
先决条件
-
您可以使用具有
dedicated-admin
角色的用户访问集群。 -
user-workload-monitoring-config
ConfigMap
对象存在。在集群创建时默认创建此对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
ConfigMap
对象:在
openshift-user-workload-monitoring
项目中编辑user-workload-monitoring-config
ConfigMap
对象:$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
在
data/config.yaml
下添加保留时间和大小配置:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: retention: <time_specification> 1 retentionSize: <size_specification> 2
以下示例为监控用户定义的项目的 Prometheus 实例将保留时间设置为 24 小时,保留大小设为 10GB:
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheus: retention: 24h retentionSize: 10GB
- 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
3.7.4. 修改 Thanos Ruler 指标数据的保留时间
默认情况下,对于用户定义的项目,Thanos Ruler 会在 24 小时内自动保留指标数据。您可以通过在 openshift-user-workload-monitoring
命名空间中指定 user-workload-monitoring-config
配置映射中的 time 值来修改这些数据的保留时间。
先决条件
-
您可以使用具有
dedicated-admin
角色的用户访问集群。 -
user-workload-monitoring-config
ConfigMap
对象存在。在集群创建时默认创建此对象。 -
已安装 OpenShift CLI(
oc
)。
流程
在
openshift-user-workload-monitoring
项目中编辑user-workload-monitoring-config
ConfigMap
对象:$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
将保留时间配置添加到
data/config.yaml
下:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: retention: <time_specification> 1
- 1
- 以以下格式指定保留时间:数字直接后跟
ms
(毫秒)、s
(秒)、m
(分钟)、h
(小时)、d
(天)、w
(周)或y
(年)。您还可以组合指定时间值,如1h30m15s
。默认值为24h
。
以下示例将 Thanos Ruler 数据的保留时间设置为 10 天:
apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: retention: 10d
- 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
其他资源