我开启了服务治理,流量治理有数据,目前有两个问题存在:
1.Tracing中无数据
2.流量治理中没有服务熔断的设置

jaeger-collector日志中报zipkin服务错误,我用的内部es默认安装,所有服务和容器都是正常运行的,不知道为什么会报zipkin错误

求大牛帮忙,非常感谢

zackzhang 你好,我按照这篇内容的步骤进行了排查。但结果有些不一样,不知道是不是kubesphere版本的原因,我用的是3.0的。排查结果如下:

1.检查pod是否正常

2.检查es是否正常

3.看panel相关的数据是否存在

4.查看jaeger-collector日志

好像能看到的错误就是日志中报的zipkin服务错误

    zackzhang 调整为allinone了,自定义的应用的所有服务都没有追踪链数据,只有几个系统的追踪链数据

    cyrpg520 这不是报错,这只是个info级别日志;再参考下文档,文档中讲了一种方法验证是不是能tracing(直接请求某个服务)

      先保证bookinfo正常,再去调试自己的服务。bookinfo不正常说明系统组件有些地方不对,默认安装完,bookinfo就是应先测试下;

        @cyrpg520 你这个看起服务都是TCP协议

        1. TCP是没有熔断的,熔断目前http才有,主要是针对http错误码的配置
        2. TCP是没有自动调用链的,sidecar在调用时,如果是TCP他也没办法帮你注入trace信息
        3. 即使切换为HTTP或GRPC,应用也需要透传,否则这个也串不起来

          haormj "即使切换为HTTP或GRPC,应用也需要透传,否则这个也串不起来“ 这个说的是应用在访问的时候,要把Header透传,保留原请求头,不要直接生成一个新的Request;即使生成一个新的Request,也需要把原Header append过来。

            zackzhang

            1. envoy调用时会帮你生成trace信息,而调用链中关键的就是trace_id和span,如果应用不传递的话,每次envoy都会生成新的trace_id,导致查看到的结果就是一个调用链中只有一个span
            2. http和grpc本质上都是通过http header,不过grpc接口层面有一个metadata

              haormj 果然是这个原因,服务改成http后可以追踪到数据了,感谢大牛的详细解答,受教了^^

              1 年 后

              haormj 你好,请问一下,怎么个透传法呢?我有服务1,服务2,服务3,请求先到服务1,服务1再请求服务2,服务2再请求3。这是我服务1收到的headers:

              {"accept-language":["zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"],"host":["bs-ms-user.bs-ms.svc.cluster.local"],"x-b3-spanid":["52f0b13bac8555be"],"accept-encoding":["gzip, deflate"],"x-forwarded-port":["80"],"x-b3-parentspanid":["d92945787423d2c7"],"x-forwarded-host":["bs-ms-user.bs-ms.192.168.18.189.nip.io:31100"],"x-envoy-attempt-count":["1"],"x-request-id":["38a53677-eaeb-4b5f-833b-604040d837fe"],"cookie":["_ga=GA1.2.1130589565.1653459620"],"user-agent":["Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0"],"x-forwarded-client-cert":["By=spiffe://cluster.local/ns/bs-ms/sa/default;Hash=09ba4b17054fe644dbc2a6b4c71692b43137d1db542bb78ac9f2c42ff90401af;Subject=\\\"\\\";URI=spiffe://cluster.local/ns/kubesphere-controls-system/sa/kubesphere-router-bs-ms"],"x-real-ip":["127.0.0.6"],"upgrade-insecure-requests":["1"],"x-b3-sampled":["0"],"accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"x-forwarded-proto":["http"],"x-forwarded-scheme":["http"],"x-scheme":["http"],"x-forwarded-for":["127.0.0.6"],"x-b3-traceid":["0187c44f7f025ae6d46521f45ec4c357"]}

              我应该在服务1中把服务1收到的请求的所有header都拷贝到对服务2的请求中去吗?还是只拷贝全部"x-"开头的header?还是只拷贝某些"x-"开头的header?

              然后,在服务2中也按同样的方式拷贝header,对吗?

              @zackzhang

                20 天 后