第 13 章 监控问题的故障排除


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

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

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

流程

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

    1. 从 web 控制台中的 Developer 视角,选择 Observe Metrics
    2. Project: 列表中选择您要查看指标的项目。
    3. Select query 列表中选择查询,或通过选择 Show PromQL 运行自定义 PromQL 查询。

      指标显示在图表中。

      查询需要基于每个项目。显示的指标与您选择的项目相关。

  2. 验证您要来自的 pod 是否活跃提供指标。在一个 pod 中运行以下 oc exec 命令,以 podIPport, and /metrics 为目标。

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

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

    以下示例输出显示了具有有效版本指标的结果。

    输出示例

      % 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. 查询 serviceIPport/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 匹配标签。

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.