【问题标题】:How do I specify an external zipkin collector in istio?如何在 istio 中指定外部 zipkin 收集器?
【发布时间】:2020-02-14 01:56:57
【问题描述】:

我想在 istio 中使用 stackdriver trace 作为分布式跟踪的后端。我在 GCP 的虚拟机上安装了 Docker,并运行了 zipkin-gcp 的镜像。

docker run -d -p 9411:9411 -e STORAGE_TYPE=stackdriver -e STACKDRIVER_PROJECT_ID=my-project openzipkin/zipkin-gcp

然后,根据官方文档,我将 istio 配置为将 spans 发送到此 VM。

istioctl manifest apply --set values.tracing.enabled=true --set values.tracing.provider=zipkin --set values.global.tracer.zipkin.address=10.128.0.30:9411 --set values.pilot.traceSampling=100.0

但是,堆栈驱动程序跟踪中没有显示任何跟踪。

为了隔离问题,我停止了 zipkin-gcp 并检查了是否使用 tcpdump 发送数据包。

tcpdump -i eth0 dst port 9411

结果发现什么都没有发送。我已确认 Kubernetes 集群到 VM 的端口 9411 连接。

如何使用 istio 向外部 zipkin 服务器发送跟踪信息?

【问题讨论】:

  • 嗨,您是否将 9411 端口转发到 docker 网络?似乎您的虚拟机可能可以访问,但容器无法访问。
  • 好吧,我认为 9411 端口由于-p 9411:9411 而被转发。而且我已经确认了从 k8s 集群到 VM 的可达性。我从 k8s 集群向 9411 抛出了一个 HTTP 请求,并确认该数据包出现在 tcpdump 中。我认为这意味着有 TCP 连接。

标签: istio zipkin distributed-tracing


【解决方案1】:

我终于弄清楚了这个问题的原因:

安装选项:

--set values.tracing.provider=zipkin --set values.global.tracer.zipkin.address

根据istio 文档需要<zipkin-collector-service>.<zipkin-collector-namespace>:9411。虽然您只有外部服务器的 IP 地址和端口。

这很可能意味着安装选项需要 istio 服务网格注册表中的现有名称。

所以如果您的 zipkin 收集器在集群之外,我们需要添加 ServiceEntryVirtualService 和可能的 DestinationRule,这样外部服务才能在网格内使用。

您可以按照istio 文档查看如何为外部服务创建这些对象。 Here 是另一个指南。

之后,我们需要以VirtualService 为端点更新跟踪器地址值。

--set values.global.tracer.zipkin.address=zipkin-external-virtualservice.egress-zipkin-namespace:9411

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2019-09-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多