LightStep

此任务介绍如何配置 Istio 才能收集追踪 span , 并且把收集到的 span 发送到 LightStep TracingLightStep [𝑥]PM。LightStep 可以分析来自大规模生产级软件的 100% 未采样的事务数据,并做出容易理解的的分布式追踪和指标信息,这有助于解释性能行为和并加速根因分析。在此任务的结尾,Istio 将追踪 span 从代理发送到 LightStep Satellite 池,以让它们在 web UI 上展示。

此任务使用 Bookinfo 的样例代码作为示例。

开始之前

  • 确保你有一个 LightStep 账户。这里可以免费注册试用 LightStep Tracing,或者联系 LightStep 创建企业级的 LightStep [𝑥]PM 账户。

  • 对于 [𝑥]PM 用户,确保你已有 satellite 池并且配置了 TLS 证书和一个暴露出来的安全 GRPC 端口。这里配置 LightStep Satellite 有配置 satellite 的详细说明。

对于 LightStep Tracing 的用户,你的 satellites 是已经配置好的。

  • 确保你有 LightStep 的访问令牌

  • 需要使用你的 satellite 地址来部署 Istio。对于 [𝑥]PM 用户,确保你可以使用 <Host>:<Port> 格式的地址访问 satellite 池,例如 lightstep-satellite.lightstep:9292

对于 LightStep Tracing 的用户,使用这个地址 collector-grpc.lightstep.com:443

  • 使用以下指定的配置参数部署 Istio:

    • pilot.traceSampling=100
    • global.proxy.tracer="lightstep"
    • global.tracer.lightstep.address="<satellite-address>"
    • global.tracer.lightstep.accessToken="<access-token>"
    • global.tracer.lightstep.secure=true
    • global.tracer.lightstep.cacertPath="/etc/lightstep/cacert.pem"当执行安装命令时,可以使用 —set key=value 语法来配置这些参数,例如:
  1. $ istioctl manifest apply \
  2. --set values.pilot.traceSampling=100 \
  3. --set values.global.proxy.tracer="lightstep" \
  4. --set values.global.tracer.lightstep.address="<satellite-address>" \
  5. --set values.global.tracer.lightstep.accessToken="<access-token>" \
  6. --set values.global.tracer.lightstep.secure=true \
  7. --set values.global.tracer.lightstep.cacertPath="/etc/lightstep/cacert.pem"
  • 把 satellite 池证书颁发机构发的证书作为一个密钥存储在默认的命名空间下。对于 LightStep Tracing 用户,要在这里下载并使用这个证书。如果你把 Bookinfo 应用程序部署在了其它的命名空间下,就要在对的应命名空间下创建相应的密钥证书。
  1. $ CACERT=$(cat Cert_Auth.crt | base64) # Cert_Auth.crt contains the necessary CACert
  2. $ NAMESPACE=default
  1. $ cat <<EOF | kubectl apply -f -
  2. apiVersion: v1
  3. kind: Secret
  4. metadata:
  5. name: lightstep.cacert
  6. namespace: $NAMESPACE
  7. labels:
  8. app: lightstep
  9. type: Opaque
  10. data:
  11. cacert.pem: $CACERT
  12. EOF

可视化追踪数据

  1. $ curl http://$GATEWAY_URL/productpage
  • 打开 LightStep web UI

  • 导航到 Explorer 。

  • 在顶部找到查询栏,在这里你可以用 ServiceOperationTag 的值进行过滤查询。

  • Service 下拉列表中选择 productpage.default

  • 点击 Run 。可以看到如下类似的内容:

Explorer

Explorer

  • 在延迟直方图下面点击示例追踪表格的第一行,就可以查看 /productpage 刷新后的详细信息。该页面类似下面:

Detailed Trace View

Detailed Trace View

这个截图显示了该追踪是由一组 span 组成。每一个 span 对应着在执行 /productpage 请求期间调用的一个 Bookinfo 服务。

追踪中的两个 spans 表示一个 RPC请求。例如,从 productpagereviews 的请求调用,以操作标签 reviews.default.svc.cluster.local:9080/ 和服务标签 productpage.default: proxy client 的 span 开始。该服务表示是这个调用的客户端 span。截图显示此次调用耗时 15.30 毫秒。第二个 span 标记有操作标签 reviews.default.svc.cluster.local:9080/ 操作和服务标签 reviews.default: proxy server 。第二个 span 是第一个 span 的下一级,表示调用的服务端 span。截图显示此次调用耗时 14.60 毫秒。

集成后的 LightStep 当前无法捕获由 Istio 的内部操作组件(如 Mixer)生成的 span。

追踪采样

Istio 通过配置追踪采样百分比来捕获追踪信息。想了解如何修改追踪采样百分比,请访问分布式追踪追踪采样部分。使用 LightStep 时,我们不建议将追踪采样的百分比降低到 100% 以下。要处理高流量的网格,请考虑扩大您的 satellite 池的大小。

清除

如果你不想继续执测试操作任务,可以从集群中删除 Bookinfo 示例应用程序和所有的 LightStep 密钥。

  • 删除 Bookinfo 应用程序,请参阅清除 Bookinfo说明。

  • 删除给 LightStep 生成的密钥:

  1. $ kubectl delete secret lightstep.cacert

相关内容

Jaeger

了解如何配置代理以向 Jaeger 发送追踪请求。

Zipkin

了解如何通过配置代理以将追踪请求发送到 Zipkin。

概述

Istio 分布式追踪的概述。

远程访问遥测插件

此任务向您展示如何配置从外部访问 Istio 遥测插件。

Mixer 和 SPOF 神话

提高可用,降低延迟。

Mixer 适配器模型

概要说明 Mixer 的插件架构。