Zipkin

通过本任务,您将了解如何使应用程序可被 Zipkin 追踪, 而无需考虑应用程序使用何种开发语言、框架或平台。

本任务使用 Bookinfo 作为示例应用程序。

要了解 Istio 如何处理追踪,请访问此任务的概述

开始之前

  1. 参考 Zipkin 安装文档将 Zipkin 安装到您的集群中。

  2. 部署 Bookinfo 示例应用程序。

配置 Istio 进行分布式链路追踪

配置扩展提供程序

使用引用 Zipkin 服务的扩展提供程序安装 Istio:

$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing: {} # 禁用旧版 MeshConfig 链路追踪选项
    extensionProviders:
    - name: zipkin
      zipkin:
        service: zipkin.istio-system.svc.cluster.local
        port: 9411
EOF
$ istioctl install -f ./tracing.yaml --skip-confirmation

启用链路追踪

通过应用以下配置启用链路追踪:

$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-default
  namespace: istio-system
spec:
  tracing:
  - providers:
    - name: zipkin
EOF

访问仪表盘

远程访问遥测插件任务详细介绍了如何通过网关配置对 Istio 插件的访问。

对于测试(或临时访问),您也可以使用端口转发。假设已将 Zipkin 部署到 istio-system 命名空间,请使用以下内容:

$ istioctl dashboard zipkin

使用 Bookinfo 示例产生追踪

  1. 当 Bookinfo 应用程序启动并运行时,访问 http://$GATEWAY_URL/productpage 一次或多次以生成追踪信息。

    要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向 productpage 服务发送 100 个请求:

    $ for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done
  2. 在搜索面板中,点击 + 号,从第一个下拉列表中选择 serviceName, 从第二个下拉列表中选择 productpage.default,再点击搜索图标:

    Tracing Dashboard
    Tracing Dashboard
  3. 点击 ISTIO-INGRESSGATEWAY 的搜索结果,查看与之对应的最新的 /productpage 请求的详细信息:

    Detailed Trace View
    Detailed Trace View
  4. 追踪由一组 Span 组成,其中每个 Span 对应一个 Bookinfo Service,这些服务在执行 /productpage 请求或 Istio 内部组件时被调用,例如:istio-ingressgateway

清理

  1. 使用 Control-C 或删除任何可能仍在运行的 istioctl 进程:

    $ killall istioctl
  2. 如果您不打算继续深入探索任何后续任务,请参考 Bookinfo 清理说明,关闭应用程序。

这些信息有用吗?
您是否有更多建议和改进意见?

感谢您的反馈!