第 8 章 使用 Jaeger 追踪请求

和 OpenShift Serverless 一起使用 Jaeger,您可以在 OpenShift Container Platform 上为无服务器应用程序启用 分布式追踪

分布式追踪记录了一个请求在组成一个应用程序的多个微服务间的路径。

它被用来将不同工作单元的信息串联在一起,理解分布式事务中整个事件链。工作单元可能会在不同进程或主机中执行。

开发人员可以使用分布式追踪,在大型架构中视觉化调用流。这对理解序列化、平行和延迟来源非常有用。

如需有关 Jaeger 的更多信息,请参阅 Jaeger 架构安装 Jaeger

8.1. 配置 Jaeger 用于 OpenShift Serverless

先决条件

要配置 Jaeger 以用于 OpenShift Serverless,您需要:

  • OpenShift Container Platform 集群的集群管理员权限。
  • OpenShift Serverless Operator 和 Knative Serving 的当前安装。
  • Jaeger Operator 的当前安装。

流程

  1. 创建并应用包含以下 YAML 示例的 Jaeger 自定义资源 YAML 文件:

    apiVersion: jaegertracing.io/v1
    kind: Jaeger
    metadata:
      name: jaeger
      namespace: default
  2. 通过编辑 KnativeServing 资源并添加用于追踪的 YAML 配置来启用 Knative Serving 的追踪。

    apiVersion: operator.knative.dev/v1alpha1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      config:
        tracing:
          sample-rate: "0.1" 1
          backend: zipkin 2
          zipkin-endpoint: http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans 3
          debug: "false" 4
    1
    sample-rate 定义抽样概率。sample-rate: "0.1" 表示在 10 个 trace 中有 1 个被抽样。
    2
    后端 必须设为 zipkin
    3
    zipkin-endpoint 必须指向您的 jaeger-collector 服务端点。要获取此端点,请替换应用 Jaeger 自定义资源的命名空间。
    4
    调试(debugging)应设为 false。通过设置 debug: "true" 启用调试模式,可绕过抽样将所有 span 发送到服务器。

验证步骤

访问 Jaeger web 控制台查看追踪数据。您可以使用 jaeger 路由来访问 Jaeger web 控制台。

  1. 输入以下命令来获取 jaeger 路由的主机名:

    $ oc get route jaeger
    NAME     HOST/PORT                         PATH   SERVICES       PORT    TERMINATION   WILDCARD
    jaeger   jaeger-default.apps.example.com          jaeger-query   <all>   reencrypt     None
  2. 在浏览器中使用端点地址来查看控制台。