Istio中的分布式跟踪-应用程序不传播标头时的预期行为

时间:2019-01-29 21:50:37

标签: kubernetes istio envoyproxy distributed-tracing

我的应用程序(托管在安装了Istio的Kubernetes集群中)不传播分布式跟踪标头(如here所述)。我的期望是,istio-proxy仍应生成在Jaeger中可见的跟踪(由单个调用组成),尽管当然不会将整个调用链缝合在一起。但是,情况似乎并非如此,因为在Jaeger中看不到对应用程序的任何调用。

为排除故障,我尝试了以下操作:

  • 部署为我的应用程序容器的辅助工具的istio-proxy容器的日志看起来不错,我可以看到Envoy正在注册该应用程序的传入请求:
kubectl logs -f helloworld-69b7f5b6f8-chp9n -c istio-proxy
[2019-01-29T21:29:18.925Z] - 444 289 45 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:45930 10.244.0.54:80 10.244.0.1:33733
[2019-01-29T21:29:29.922Z] - 444 289 25065 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46014 10.244.0.54:80 10.240.0.5:56166
[2019-01-29T21:30:05.922Z] - 444 289 15051 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46240 10.244.0.54:80 10.240.0.6:48053
[2019-01-29T21:30:31.922Z] - 444 289 36 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46392 10.244.0.54:80 10.240.0.6:47009
  • 我已在Mixer的配置中启用了跟踪,现在我可以在Jaeger UI中看到Mixer的活动(但仍然没有对应用程序调用的痕迹)。

    我是Istio的新手,看来我已经用完了。

    首先,我的期望正确吗?当应用程序不传播分布式跟踪标头时,我应该在Jaeger UI中看到跟踪-每个跟踪都包含一个调用吗?

    如果我的期望是正确的,我该如何进一步排除故障?我可以以某种方式验证Envoy的配置并检查它是否确实在将数据跟踪到Mixer吗?

    如果我的期望不正确,可以否改写Istio的行为,以便获得所需的东西?

    谢谢。

0 个答案:

没有答案