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)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. 将组件的 PVC 配置添加到 data/config.yaml 下:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          volumeClaimTemplate:
            spec:
              storageClassName: <storage_class> 
    2
    
              resources:
                requests:
                  storage: <amount_of_storage> 
    3
    Copy to Clipboard Toggle word wrap
    1
    指定要配置 PVC 的监控组件。
    2
    指定现有存储类。如果没有指定存储类,则使用默认存储类。
    3
    指定所需的存储量。

    以下示例配置了一个 PVC 来声明 Prometheus 的持久性存储:

    PVC 配置示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          volumeClaimTemplate:
            spec:
              storageClassName: my-storage-class
              resources:
                requests:
                  storage: 40Gi
    Copy to Clipboard Toggle word wrap

  3. 保存文件以使改变生效。受新配置影响的 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)。

流程

  1. 使用更新的存储请求手动扩展 PVC。如需更多信息,请参阅 扩展持久性卷 中的"使用文件系统扩展持久性卷声明 (PVC) "。
  2. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  3. data/config.yaml 下为组件添加新存储大小:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          volumeClaimTemplate:
            spec:
              resources:
                requests:
                  storage: <amount_of_storage> 
    2
    Copy to Clipboard Toggle word wrap
    1
    要更改存储大小的组件。
    2
    指定存储卷的新大小。它必须大于上一个值。

    以下示例将 Prometheus 实例的新 PVC 请求设置为 100GB:

    prometheusK8s 的存储配置示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          volumeClaimTemplate:
            spec:
              resources:
                requests:
                  storage: 100Gi
    Copy to Clipboard Toggle word wrap

  4. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。

    警告

    当您使用新存储大小更新配置映射时,受影响的 StatefulSet 对象会被重新创建,从而导致临时服务中断。

默认情况下,Prometheus 为核心平台监控保留 15 天指标数据。您可以修改 Prometheus 实例的保留时间,以便在删除数据时更改。您还可以设置保留指标数据使用的最大磁盘空间量。

注意

数据压缩每两小时进行一次。因此,持久性卷 (PV) 可能会在压缩前已被填满,可能会超过 retentionSize 限制。在这种情况下,KubePersistentVolumeFillingUp 警报会触发,直到 PV 上的空间低于 retentionSize 限制。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 您已创建 cluster-monitoring-config ConfigMap 对象。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. data/config.yaml 下添加保留时间和大小配置:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          retention: <time_specification> 
    1
    
          retentionSize: <size_specification> 
    2
    Copy to Clipboard Toggle word wrap
    1
    保留时间:数字直接加上 ms (毫秒)、s (秒)、m (分钟)、h (小时)、d (天)、w (周)或 y (年)。您还可以组合指定时间值,如 1h30m15s
    2
    保留大小:数字直接加上 B (bytes), KB (kilobytes), MB (megabytes), GB (gigabytes), TB (terabytes), PB (petabytes), 和 EB (exabytes).。

    以下示例将 Prometheus 实例的保留时间设置为 24 小时,保留大小设为 10GB:

    为 Prometheus 设置保留时间示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          retention: 24h
          retentionSize: 10GB
    Copy to Clipboard Toggle word wrap

  3. 保存文件以使改变生效。受新配置影响的 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 对象。

流程

  1. 编辑 openshift-monitoring 命名空间中的 cluster-monitoring-config ConfigMap 对象:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. 如以下示例所示,添加一个 enabled: true 键-值对:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        k8sPrometheusAdapter:
          dedicatedServiceMonitors:
            enabled: true 
    1
    Copy to Clipboard Toggle word wrap
    1
    enabled 字段的值设置为 true 以部署一个专用服务监控器,该监控器公开 kubelet /metrics/resource 端点。
  3. 保存文件以自动应用更改。

    警告

    当您保存对 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 设置审计日志级别:

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config ConfigMap 对象:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. data/config.yaml 下的 k8sPrometheusAdapter/audit 部分中添加 profile:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        k8sPrometheusAdapter:
          audit:
            profile: <audit_log_level> 
    1
    Copy to Clipboard Toggle word wrap
    1
    应用到 Prometheus Adapter 的审计日志级别。
  3. 使用 profile: 参数的以下值之一设置审计日志级别:

    • None :不记录事件。
    • Metadata :仅记录请求的元数据,如用户、时间戳等。不要记录请求文本和响应文本。metadata 是默认的审计日志级别。
    • Request :仅记录元数据和请求文本,而不记录响应文本。这个选项不适用于非资源请求。
    • RequestResponse :日志事件元数据、请求文本和响应文本。这个选项不适用于非资源请求。
  4. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。

验证

  1. 在配置映射的 k8sPrometheusAdapter/audit/profile 下,将日志级别设置为 Request 并保存文件。
  2. 确认 Prometheus Adapter 的 pod 正在运行。以下示例列出了 openshift-monitoring 项目中的 pod 状态:

    $ oc -n openshift-monitoring get pods
    Copy to Clipboard Toggle word wrap
  3. 确认正确配置了审计日志级别和审计日志文件路径:

    $ oc -n openshift-monitoring get deploy prometheus-adapter -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    ...
      - --audit-policy-file=/etc/audit/request-profile.yaml
      - --audit-log-path=/var/log/adapter/audit.log
    Copy to Clipboard Toggle word wrap

  4. 确认 openshift-monitoring 项目中的 prometheus-adapter 部署中应用了正确的日志级别:

    $ oc -n openshift-monitoring exec deploy/prometheus-adapter -c prometheus-adapter -- cat /etc/audit/request-profile.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    "apiVersion": "audit.k8s.io/v1"
    "kind": "Policy"
    "metadata":
      "name": "Request"
    "omitStages":
    - "RequestReceived"
    "rules":
    - "level": "Request"
    Copy to Clipboard Toggle word wrap

    注意

    如果您为 ConfigMap 对象中的 Prometheus Adapter 输入了一个未识别的 profile 值,则不会对 Prometheus Adapter 进行任何更改,Cluster Monitoring Operator 会记录错误。

  5. 查看 Prometheus Adapter 的审计日志:

    $ oc -n openshift-monitoring exec -c <prometheus_adapter_pod_name> -- cat /var/log/adapter/audit.log
    Copy to Clipboard Toggle word wrap

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)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. data/config.yaml 下为组件添加 logLevel: <log_level>

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        <component>: 
    1
    
          logLevel: <log_level> 
    2
    Copy to Clipboard Toggle word wrap
    1
    您要为其设置日志级别的监控堆栈组件。可用的组件值包括 prometheusK8salertmanagerMainprometheusOperatorthanosQuerier
    2
    为组件设置的日志级别。可用值为 errorwarninfodebug。默认值为 info
  3. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
  4. 通过查看相关项目中的部署或 Pod 配置来确认已应用了日志级别。以下示例检查 prometheus-operator 部署的日志级别:

    $ oc -n openshift-monitoring get deploy prometheus-operator -o yaml | grep "log-level"
    Copy to Clipboard Toggle word wrap

    输出示例

            - --log-level=debug
    Copy to Clipboard Toggle word wrap

  5. 检查组件的 Pod 是否正在运行。以下示例列出了 pod 的状态:

    $ oc -n openshift-monitoring get pods
    Copy to Clipboard Toggle word wrap
    注意

    如果 ConfigMap 中包含了一个未识别的 loglevel 值,则组件的 Pod 可能无法成功重启。

3.3.6. 为 Prometheus 启用查询日志文件

您可以将 Prometheus 配置为将引擎运行的所有查询写入到日志文件。

重要

由于不支持日志轮转,因此仅在需要对问题进行故障排除时才临时启用此功能。完成故障排除后,通过恢复您对 ConfigMap 对象所做的更改来禁用查询日志记录,以启用该功能。

先决条件

  • 您可以使用具有 cluster-admin 集群角色的用户身份访问集群。
  • 您已创建 cluster-monitoring-config ConfigMap 对象。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config 配置映射:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. 将 Prometheus 的 queryLogFile 参数添加到 data/config.yaml 下:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          queryLogFile: <path> 
    1
    Copy to Clipboard Toggle word wrap
    1
    添加要记录查询的文件的完整路径。
  3. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。
  4. 验证组件的 pod 是否正在运行。以下示例命令列出了 pod 的状态:

    $ oc -n openshift-monitoring get pods
    Copy to Clipboard Toggle word wrap

    输出示例

    ...
    prometheus-operator-567c9bc75c-96wkj   2/2     Running   0          62m
    prometheus-k8s-0                       6/6     Running   1          57m
    prometheus-k8s-1                       6/6     Running   1          57m
    thanos-querier-56c76d7df4-2xkpc        6/6     Running   0          57m
    thanos-querier-56c76d7df4-j5p29        6/6     Running   0          57m
    ...
    Copy to Clipboard Toggle word wrap

  5. 读取查询日志:

    $ oc -n openshift-monitoring exec prometheus-k8s-0 -- cat <path>
    Copy to Clipboard Toggle word wrap
    重要

    在检查了记录的查询信息后,恢复配置映射的设置。

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 启用查询日志记录:

  1. 编辑 openshift-monitoring 项目中的 cluster-monitoring-config ConfigMap 对象:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    Copy to Clipboard Toggle word wrap
  2. data/config.yaml 中添加 thanosQuerier 部分并添加值,如下例所示:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        thanosQuerier:
          enableRequestLogging: <value> 
    1
    
          logLevel: <value> 
    2
    Copy to Clipboard Toggle word wrap
    1
    将值设为 true 以启用日志记录,并将 false 设置为 disable logging。默认值为 false
    2
    将值设为 debuginfowarnerror。如果 logLevel 没有值,则日志级别默认为 error
  3. 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。

验证

  1. 验证 Thanos Querier pod 是否正在运行。以下示例命令列出了 openshift-monitoring 项目中的 pod 状态:

    $ oc -n openshift-monitoring get pods
    Copy to Clipboard Toggle word wrap
  2. 使用以下示例命令作为模型运行测试查询:

    $ 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 Toggle word wrap
  3. 运行以下命令来读取查询日志:

    $ oc -n openshift-monitoring logs <thanos_querier_pod_name> -c thanos-query
    Copy to Clipboard Toggle word wrap
    注意

    因为 thanos-querier pod 是高度可用的(HA)pod,所以您可能只能看到一个 pod 的日志。

  4. 检查日志记录的查询信息后,通过将配置映射中的 enableRequestLogging 值更改为 false 来禁用查询日志记录。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat