5.8. 监控问题的故障排除

查找用户定义的项目中常见监控问题的故障排除步骤。

5.8.1. 确定为什么用户定义的项目指标不可用

如果监控用户定义的项目时没有显示指标,请按照以下步骤排除此问题。

流程

  1. 查询指标名称,并验证项目是否正确:

    1. 在 OpenShift Container Platform web 控制台中的 Developer 视角中,选择 ObserveMetrics
    2. Project: 列表中选择您要查看指标的项目。
    3. Select Query 列表中选择查询,或者通过选择 Show PromQL 运行自定义 PromQL 查询。

      Select Query 窗格显示指标名称。

      查询必须基于每个项目进行。显示的指标与您选择的项目相关。

  2. 验证您希望指标数据的 pod 是否正在主动提供指标。对 pod 运行以下 oc exec 命令,将 podIP端口、和 /metrics 为目标。

    $ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
    注意

    您必须在安装了 curl 的 pod 上运行该命令。

    以下示例显示了具有有效 version 指标的结果。

    输出示例

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    # HELP version Version information about this binary-- --:--:-- --:--:--     0
    # TYPE version gauge
    version{version="v0.1.0"} 1
    100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:-- 51000

    无效的输出表示相应应用存在问题。

  3. 如果使用 PodMonitor CRD,请验证 PodMonitor CRD 是否已配置为使用与标签匹配的标签指向正确的 pod。如需更多信息,请参阅 Prometheus Operator 文档。
  4. 如果您使用 ServiceMonitor CRD,如果 pod 的 /metrics 端点显示指标数据,请按照以下步骤验证配置:

    1. 验证该服务是否指向正确的 /metrics 端点。此输出 中的服务标签 必须与服务监控 标签 以及后续步骤中服务定义的 /metrics 端点匹配。

      $ oc get service

      输出示例

      apiVersion: v1
      kind: Service 1
      metadata:
        labels: 2
          app: prometheus-example-app
        name: prometheus-example-app
        namespace: ns1
      spec:
        ports:
        - port: 8080
          protocol: TCP
          targetPort: 8080
          name: web
        selector:
          app: prometheus-example-app
        type: ClusterIP

      1
      指定这是服务 API。
      2
      指定用于此服务的标签。
    2. 查询 serviceIP端口/metrics 端点,查看您之前在 pod 上运行的 curl 命令中的相同指标:

      1. 运行以下命令以查找服务 IP:

        $ oc get service -n <target_namespace>
      2. 查询 /metrics 端点:

        $ oc exec <sample_pod> -n <sample_namespace> -- curl <service_IP>:<port>/metrics

        以下示例中返回有效的指标。

        输出示例

        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
        100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:--   99k
        # HELP version Version information about this binary
        # TYPE version gauge
        version{version="v0.1.0"} 1

    3. 使用与匹配的标签匹配,验证 ServiceMonitor 对象是否已配置为指向所需服务。为此,请将 oc get service 输出中的 Service 对象与 oc get servicemonitor 输出中的 ServiceMonitor 对象进行比较。标签必须与才能显示的指标匹配。

      例如,在前面的步骤中,注意 Service 对象如何具有 app: prometheus-example-app 标签,并且 ServiceMonitor 对象具有相同的 app: prometheus-example-app match 标签。

  5. 如果一切看起来有效并且指标仍不可用,请联系支持团队以获得进一步的帮助。