4.3. 为用户工作负载监控存储和记录数据
存储和记录您的指标和警报数据,配置日志以指定记录哪些活动,控制 Prometheus 保留数据的时长,并为数据设置最大磁盘空间量。这些操作可帮助您保护数据并将其用于故障排除。
4.3.1. 配置持久性存储 复制链接链接已复制到粘贴板!
使用持久性存储运行集群监控以获取以下优点:
- 通过将指标和警报数据存储在持久性卷(PV)中来保护您的指标和警报数据。因此,它们可以在 pod 重启或重新创建后保留。
- 避免获取重复的通知,并在 Alertmanager pod 重启时丢失警报静默。
在生产环境中,强烈建议配置持久性存储。
在多节点集群中,您必须为 Prometheus、Alertmanager 和 Thanos Ruler 配置持久性存储,以确保高可用性。
4.3.1.1. 持久性存储的先决条件 复制链接链接已复制到粘贴板!
- 分配充足的专用持久性存储,以确保磁盘不会被填满。
在配置持久性卷时,使用
Filesystem
作为volumeMode
参数的存储类型值。重要-
不要使用原始块卷,它由
PersistentVolume
资源中的volumeMode: Block
描述。Prometheus 无法使用原始块卷。 - Prometheus 不支持兼容 POSIX 的文件系统。例如,一些 NFS 文件系统实现不兼容 POSIX。如果要使用 NFS 文件系统进行存储,请验证与其 NFS 实现完全兼容 POSIX 的供应商。
-
不要使用原始块卷,它由
4.3.1.2. 配置持久性卷声明 复制链接链接已复制到粘贴板!
要将持久性卷 (PV) 用于监控组件,您必须配置持久性卷声明 (PVC)。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户访问集群,也可以使用在openshift-user-workload-monitoring
项目中具有user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
配置映射:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将组件的 PVC 配置添加到
data/config.yaml
下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例配置了一个 PVC 来声明用于 Thanos Ruler 的持久性存储:
PVC 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意thanosRuler
组件的存储要求取决于要评估的规则数量以及每个规则生成的样本数量。保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署并应用新的存储配置。
警告当您使用 PVC 配置更新配置映射时,受影响的
StatefulSet
对象会被重新创建,从而导致临时服务中断。
4.3.1.3. 重新定义持久性卷大小 复制链接链接已复制到粘贴板!
您可以为 Prometheus、Thanos Ruler 和 Alertmanager 实例重新定义持久性卷(PV)大小。您需要手动扩展持久性卷声明 (PVC),然后更新配置组件的配置映射。
您只能扩展 PVC 的大小。无法缩小存储大小。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户访问集群,也可以使用在openshift-user-workload-monitoring
项目中具有user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
- 至少有一个 PVC 用于监控用户定义的项目的组件。
-
已安装 OpenShift CLI(
oc
)。
流程
- 使用更新的存储请求手动扩展 PVC。如需更多信息,请参阅 扩展持久性卷 中的"使用文件系统扩展持久性卷声明 (PVC) "。
编辑
openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
配置映射:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下为组件添加新存储大小:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例将 Thanos Ruler 的新 PVC 请求设置为 20GB:
thanosRuler
的存储配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意thanosRuler
组件的存储要求取决于要评估的规则数量以及每个规则生成的样本数量。保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
警告当您使用新存储大小更新配置映射时,受影响的
StatefulSet
对象会被重新创建,从而导致临时服务中断。
4.3.2. 修改 Prometheus 指标数据的保留时间和大小 复制链接链接已复制到粘贴板!
默认情况下,Prometheus 会保留 24 小时的指标数据,供用户定义的项目监控。您可以修改 Prometheus 实例的保留时间,以便在删除数据时更改。您还可以设置保留指标数据使用的最大磁盘空间量。
数据压缩每两小时进行一次。因此,持久性卷 (PV) 可能会在压缩前已被填满,可能会超过 retentionSize
限制。在这种情况下,KubePersistentVolumeFillingUp
警报会触发,直到 PV 上的空间低于 retentionSize
限制。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户访问集群,也可以使用在openshift-user-workload-monitoring
项目中具有user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
配置映射:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下添加保留时间和大小配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例将 Prometheus 实例的保留时间设置为 24 小时,保留大小设为 10GB:
为 Prometheus 设置保留时间示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
4.3.2.1. 修改 Thanos Ruler 指标数据的保留时间 复制链接链接已复制到粘贴板!
默认情况下,对于用户定义的项目,Thanos Ruler 会在 24 小时内自动保留指标数据。您可以通过在 openshift-user-workload-monitoring
命名空间中指定 user-workload-monitoring-config
配置映射中的 time 值来修改这些数据的保留时间。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有openshift-user-workload-monitoring
项目中的user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc
)。
流程
在
openshift-user-workload-monitoring
项目中编辑user-workload-monitoring-config
ConfigMap
对象:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将保留时间配置添加到
data/config.yaml
下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 以以下格式指定保留时间:数字直接后跟
ms
(毫秒)、s
(秒)、m
(分钟)、h
(小时)、d
(天)、w
(周)或y
(年)。您还可以组合指定时间值,如1h30m15s
。默认值为24h
。
以下示例将 Thanos Ruler 数据的保留时间设置为 10 天:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
4.3.3. 为监控组件设置日志级别 复制链接链接已复制到粘贴板!
您可以为 Alertmanager、Prometheus Operator、Prometheus 和 Thanos Ruler 配置日志级别。
以下日志级别可应用到 user-workload-monitoring-config
ConfigMap
中的相关组件:
-
debug
。记录调试、信息、警告和错误消息。 -
info
。记录信息、警告和错误消息。 -
warn
。仅记录警告和错误消息。 -
error
。仅记录错误消息。
默认日志级别为 info
。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有openshift-user-workload-monitoring
项目中的user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
配置映射:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下为组件添加logLevel: <log_level>
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
通过查看相关项目中的部署或 Pod 配置来确认已应用了日志级别。以下示例检查
prometheus-operator
部署的日志级别:oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml | grep "log-level"
$ oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml | grep "log-level"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
- --log-level=debug
- --log-level=debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查组件的 Pod 是否正在运行。以下示例列出了 pod 的状态:
oc -n openshift-user-workload-monitoring get pods
$ oc -n openshift-user-workload-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ConfigMap
中包含了一个未识别的loglevel
值,则组件的 Pod 可能无法成功重启。
4.3.4. 为 Prometheus 启用查询日志文件 复制链接链接已复制到粘贴板!
您可以将 Prometheus 配置为将引擎运行的所有查询写入到日志文件。
由于不支持日志轮转,因此仅在需要对问题进行故障排除时才临时启用此功能。完成故障排除后,通过恢复您对 ConfigMap
对象所做的更改来禁用查询日志记录,以启用该功能。
先决条件
-
您可以使用具有
cluster-admin
集群角色或具有openshift-user-workload-monitoring
项目中的user-workload-monitoring-config-edit
角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-user-workload-monitoring
项目中的user-workload-monitoring-config
配置映射:oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Prometheus 的
queryLogFile
参数添加到data/config.yaml
下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加要记录查询的文件的完整路径。
- 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
验证组件的 pod 是否正在运行。以下示例命令列出了 pod 的状态:
oc -n openshift-user-workload-monitoring get pods
$ oc -n openshift-user-workload-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 读取查询日志:
oc -n openshift-user-workload-monitoring exec prometheus-user-workload-0 -- cat <path>
$ oc -n openshift-user-workload-monitoring exec prometheus-user-workload-0 -- cat <path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在检查了记录的查询信息后,恢复配置映射的设置。