3.3. 为核心平台监控存储和记录数据
存储和记录您的指标和警报数据,配置日志以指定记录哪些活动,控制 Prometheus 保留数据的时长,并为数据设置最大磁盘空间量。这些操作可帮助您保护数据并将其用于故障排除。
3.3.1. 配置持久性存储 复制链接链接已复制到粘贴板!
使用持久性存储运行集群监控以获取以下优点:
- 通过将指标和警报数据存储在持久性卷(PV)中来保护您的指标和警报数据。因此,它们可以在 pod 重启或重新创建后保留。
- 避免获取重复的通知,并在 Alertmanager pod 重启时丢失警报静默。
在生产环境中,强烈建议配置持久性存储。
在多节点集群中,您必须为 Prometheus、Alertmanager 和 Thanos Ruler 配置持久性存储,以确保高可用性。
3.3.1.1. 持久性存储的先决条件 复制链接链接已复制到粘贴板!
- 分配充足的专用持久性存储,以确保磁盘不会被填满。
在配置持久性卷时,使用
Filesystem
作为volumeMode
参数的存储类型值。重要-
不要使用原始块卷,它由
PersistentVolume
资源中的volumeMode: Block
描述。Prometheus 无法使用原始块卷。 - Prometheus 不支持兼容 POSIX 的文件系统。例如,一些 NFS 文件系统实现不兼容 POSIX。如果要使用 NFS 文件系统进行存储,请验证与其 NFS 实现完全兼容 POSIX 的供应商。
-
不要使用原始块卷,它由
3.3.1.2. 配置持久性卷声明 复制链接链接已复制到粘贴板!
要将持久性卷 (PV) 用于监控组件,您必须配置持久性卷声明 (PVC)。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-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 来声明 Prometheus 的持久性存储:
PVC 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署并应用新的存储配置。
警告当您使用 PVC 配置更新配置映射时,受影响的
StatefulSet
对象会被重新创建,从而导致临时服务中断。
3.3.1.3. 重新定义持久性卷大小 复制链接链接已复制到粘贴板!
您可以为监控组件(如 Prometheus 或 Alertmanager)重新定义持久性卷(PV)大小。您需要手动扩展持久性卷声明 (PVC),然后更新配置组件的配置映射。
您只能扩展 PVC 的大小。无法缩小存储大小。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 - 至少有一个 PVC 用于 OpenShift Container Platform 核心监控组件。
-
已安装 OpenShift CLI(
oc
)。
流程
- 使用更新的存储请求手动扩展 PVC。如需更多信息,请参阅 扩展持久性卷 中的"使用文件系统扩展持久性卷声明 (PVC) "。
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下为组件添加新存储大小:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例将 Prometheus 实例的新 PVC 请求设置为 100GB:
prometheusK8s
的存储配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
警告当您使用新存储大小更新配置映射时,受影响的
StatefulSet
对象会被重新创建,从而导致临时服务中断。
3.3.2. 修改 Prometheus 指标数据的保留时间和大小 复制链接链接已复制到粘贴板!
默认情况下,Prometheus 为核心平台监控保留 15 天指标数据。您可以修改 Prometheus 实例的保留时间,以便在删除数据时更改。您还可以设置保留指标数据使用的最大磁盘空间量。
数据压缩每两小时进行一次。因此,持久性卷 (PV) 可能会在压缩前已被填满,可能会超过 retentionSize
限制。在这种情况下,KubePersistentVolumeFillingUp
警报会触发,直到 PV 上的空间低于 retentionSize
限制。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-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 会自动重新部署。
3.3.3. 配置专用服务监控器 复制链接链接已复制到粘贴板!
您可以配置 OpenShift Container Platform 核心平台监控,以使用专用服务监控器来收集资源指标管道的指标。
启用后,专用服务监控器会从 kubelet 端点公开两个额外的指标,并将 honorTimestamps
字段的值设置为 true。
通过启用专用服务监控器,您可以提高由 oc adm top pod
命令或 Horizontal Pod Autoscaler 使用的基于 Prometheus Adapter 的 CPU 用量测量的一致性。
3.3.3.1. 启用专用服务监控器 复制链接链接已复制到粘贴板!
您可以通过在 openshift-monitoring
命名空间中的 cluster-monitoring-config
ConfigMap
对象中配置 dedicatedServiceMonitors
键,将核心平台监控配置为使用专用服务监控器。
前提条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。
流程
编辑
openshift-monitoring
命名空间中的cluster-monitoring-config
ConfigMap
对象:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如以下示例所示,添加一个
enabled: true
键-值对:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
enabled
字段的值设置为true
以部署一个专用服务监控器,该监控器公开 kubelet/metrics/resource
端点。
保存文件以自动应用更改。
警告当您保存对
cluster-monitoring-config
配置映射的更改时,可能会重新部署openshift-monitoring
项目中的 Pod 和其他资源。该项目中正在运行的监控进程可能会重启。
3.3.4. 为 Prometheus Adapter 设置审计日志级别 复制链接链接已复制到粘贴板!
在默认平台监控中,您可以为 Prometheus Adapter 配置审计日志级别。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。
流程
您可以在默认 openshift-monitoring
项目中为 Prometheus Adapter 设置审计日志级别:
编辑
openshift-monitoring
项目中的cluster-monitoring-config
ConfigMap
对象:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
下的k8sPrometheusAdapter/audit
部分中添加profile:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 应用到 Prometheus Adapter 的审计日志级别。
使用
profile:
参数的以下值之一设置审计日志级别:-
None
:不记录事件。 -
Metadata
:仅记录请求的元数据,如用户、时间戳等。不要记录请求文本和响应文本。metadata
是默认的审计日志级别。 -
Request
:仅记录元数据和请求文本,而不记录响应文本。这个选项不适用于非资源请求。 -
RequestResponse
:日志事件元数据、请求文本和响应文本。这个选项不适用于非资源请求。
-
- 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
验证
-
在配置映射的
k8sPrometheusAdapter/audit/profile
下,将日志级别设置为Request
并保存文件。 确认 Prometheus Adapter 的 pod 正在运行。以下示例列出了
openshift-monitoring
项目中的 pod 状态:oc -n openshift-monitoring get pods
$ oc -n openshift-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认正确配置了审计日志级别和审计日志文件路径:
oc -n openshift-monitoring get deploy prometheus-adapter -o yaml
$ oc -n openshift-monitoring get deploy prometheus-adapter -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
... - --audit-policy-file=/etc/audit/request-profile.yaml - --audit-log-path=/var/log/adapter/audit.log
... - --audit-policy-file=/etc/audit/request-profile.yaml - --audit-log-path=/var/log/adapter/audit.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
openshift-monitoring
项目中的prometheus-adapter
部署中应用了正确的日志级别:oc -n openshift-monitoring exec deploy/prometheus-adapter -c prometheus-adapter -- cat /etc/audit/request-profile.yaml
$ oc -n openshift-monitoring exec deploy/prometheus-adapter -c prometheus-adapter -- cat /etc/audit/request-profile.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您为
ConfigMap
对象中的 Prometheus Adapter 输入了一个未识别的profile
值,则不会对 Prometheus Adapter 进行任何更改,Cluster Monitoring Operator 会记录错误。查看 Prometheus Adapter 的审计日志:
oc -n openshift-monitoring exec -c <prometheus_adapter_pod_name> -- cat /var/log/adapter/audit.log
$ oc -n openshift-monitoring exec -c <prometheus_adapter_pod_name> -- cat /var/log/adapter/audit.log
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.5. 为监控组件设置日志级别 复制链接链接已复制到粘贴板!
您可以为 Alertmanager、Prometheus Operator、Prometheus 和 Thanos Querier 配置日志级别。
以下日志级别可应用到 cluster-monitoring-config
ConfigMap
对象中的相关组件:
-
debug
。记录调试、信息、警告和错误消息。 -
info
。记录信息、警告和错误消息。 -
warn
。仅记录警告和错误消息。 -
error
。仅记录错误消息。
默认日志级别为 info
。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-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-monitoring get deploy prometheus-operator -o yaml | grep "log-level"
$ oc -n openshift-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-monitoring get pods
$ oc -n openshift-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
ConfigMap
中包含了一个未识别的loglevel
值,则组件的 Pod 可能无法成功重启。
3.3.6. 为 Prometheus 启用查询日志文件 复制链接链接已复制到粘贴板!
您可以将 Prometheus 配置为将引擎运行的所有查询写入到日志文件。
由于不支持日志轮转,因此仅在需要对问题进行故障排除时才临时启用此功能。完成故障排除后,通过恢复您对 ConfigMap
对象所做的更改来禁用查询日志记录,以启用该功能。
先决条件
-
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
openshift-monitoring
项目中的cluster-monitoring-config
配置映射:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-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-monitoring get pods
$ oc -n openshift-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 读取查询日志:
oc -n openshift-monitoring exec prometheus-k8s-0 -- cat <path>
$ oc -n openshift-monitoring exec prometheus-k8s-0 -- cat <path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在检查了记录的查询信息后,恢复配置映射的设置。
3.3.7. 为 Thanos Querier 启用查询日志记录 复制链接链接已复制到粘贴板!
对于 openshift-monitoring
项目中的默认平台监控,您可以启用 Cluster Monitoring Operator 来记录 Thanos Querier 运行的所有查询。
由于不支持日志轮转,因此仅在需要对问题进行故障排除时才临时启用此功能。完成故障排除后,通过恢复您对 ConfigMap
对象所做的更改来禁用查询日志记录,以启用该功能。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
集群角色的用户身份访问集群。 -
您已创建
cluster-monitoring-config
ConfigMap
对象。
流程
您可以在 openshift-monitoring
项目中为 Thanos Querier 启用查询日志记录:
编辑
openshift-monitoring
项目中的cluster-monitoring-config
ConfigMap
对象:oc -n openshift-monitoring edit configmap cluster-monitoring-config
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
data/config.yaml
中添加thanosQuerier
部分并添加值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
验证
验证 Thanos Querier pod 是否正在运行。以下示例命令列出了
openshift-monitoring
项目中的 pod 状态:oc -n openshift-monitoring get pods
$ oc -n openshift-monitoring get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例命令作为模型运行测试查询:
token=`oc create token prometheus-k8s -n openshift-monitoring` oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -k -H "Authorization: Bearer $token" 'https://thanos-querier.openshift-monitoring.svc:9091/api/v1/query?query=cluster_version'
$ token=`oc create token prometheus-k8s -n openshift-monitoring` $ oc -n openshift-monitoring exec -c prometheus prometheus-k8s-0 -- curl -k -H "Authorization: Bearer $token" 'https://thanos-querier.openshift-monitoring.svc:9091/api/v1/query?query=cluster_version'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来读取查询日志:
oc -n openshift-monitoring logs <thanos_querier_pod_name> -c thanos-query
$ oc -n openshift-monitoring logs <thanos_querier_pod_name> -c thanos-query
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意因为
thanos-querier
pod 是高度可用的(HA)pod,所以您可能只能看到一个 pod 的日志。-
检查日志记录的查询信息后,通过将配置映射中的
enableRequestLogging
值更改为false
来禁用查询日志记录。