链路追踪 Tracing Analysis 为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具。本文介绍了如何在 Knative 上实现 Tracing 分布式追踪,以帮助开发者快速分析和诊断 Knative 中部署的应用服务。

前提条件

操作步骤

  1. 部署Istio。参考部署Istio
    部署时需要关注以下几点:
    • Pilot 设置跟踪采样百分比,推荐设置大一些(例如,100),便于数据采样。

    • 启用阿里云链路追踪服务,查看 token 选择为on , 客户端采集工具选择zipkin (目前仅支持使用 zipkin 的 /api/v1/spans 接口访问), 选择集群所在 Region 的接入点(推荐使用内网接入地址),以华南1 Region 为例如下:

    • 选择启用链路追踪,设置链路追踪服务地址。

  2. 执行如下命令,选择命名空间设置如下标签启用 Sidecar 自动注入istio-injection=enabled
    通过这种方式就注入了 Istio 的 envoy 代理(proxy)容器, Istio 的 envoy 代理拦截流量后会主动上报 trace 系统。以设置 default 命名空间为例:
    kubectl label namespace default istio-injection=enabled
  3. 部署 Knative Service 服务。参考部署 Serving Hello World 应用示例
    完成后,您可以通过如下命令,访问Hello World 示例服务。
    $ curl -H "Host: helloworld-go.default.example.com" http://112.124.XX.XX
    Hello Knative!
  4. 登录链路追踪服务控制台,选择应用列表,可以查看对应应用的 tracing 信息。

  5. 选择应用,单击查看应用详情,可以看到服务调用的平均响应时间。

总结

在 Knative 中,推荐开启阿里云链路追踪服务。通过 Tracing 不仅有助于复杂应用服务之间的问题排查及效率优化,同时也是 Knative 的最佳实践方式。