当前位置: 首页 > 知识库问答 >
问题:

即使在Bluemix中作为报头传递给服务请求,也会重新生成Sleuth报头X-B3-TraceId值

施同
2023-03-14

我希望我的服务使用者将TraceId作为标题参数传递,名为X-B3-TraceId和有效的128位十六进制字符串,这些字符串将在行下的进一步路径中传播,实际上服务将返回相同的Sleuth跟踪Id给调用者。我使用了Spring Cloud Sleuth,添加了自定义过滤器和Span提取器,以便在服务响应中投入。

当应用程序部署在嵌入式tomcat中时,整个设置在my local中运行良好,然而,当相同的应用程序部署在Bluemix中时,响应不具有请求中传递的相同的Sleuth跟踪Id。

Please Run the Micro Service locally.    
URL: localhost:9090/hello?name=Ram
Header:
    X-B3-TraceId:d61436368bae3c12ce5f844337f3ee52

Service will return:
    HELLORam
    Header:
    Content-Length →8
    Content-Type →text/plain;charset=UTF-8
    Date →Thu, 11 Jan 2018 01:38:48 GMT
    X-Application-Context →application:9090
    X-B3-TraceId →d61436368bae3c12ce5f844337f3ee52

    Note Trace Id is same in RQ and RS.

Deploy Same Service in IBM Bluemix:
    URL: https://sleuth-header-demo.mybluemix.net/hello?name=Ram .
    Header
    X-B3-TraceId:d61436368bae3c12ce5f844337f3ee52

    Response:
       HELLORam
       Header:
       Connection →Keep-Alive
       Content-Type →text/plain;charset=UTF-8
       Date →Thu, 11 Jan 2018 01:38:30 GMT
       Transfer-Encoding →chunked
       X-Application-Context →sleuth-header-demo:bluemix:0
       X-B3-Traceid →b896d05d9f0ae105
       X-Backside-Transport →OK OK
       X-Global-Transaction-ID →2714561407

 See the Trace Id(X-B3-Traceid) got ignore what was present in 
 Request and got Regenerated as b896d05d9f0ae105

共有1个答案

劳鹏云
2023-03-14

您总是需要传递跟踪标头。必须传播所有的X-B3头,以使分布式跟踪正常工作。

 类似资料:
  • 我在Node中编写的服务很少使用“X-Request-Id”作为标头来识别请求。我现在使用spring boot在Java中编写服务,我可以使用spring cloud sleuth跟踪traceId和spanId。 然而,我希望在我的所有服务中继续使用“X-Request-Id”作为请求标识符。有没有办法在spring sleuth中重命名“X-B3-TraceId”标头,以便它在HTTP请求中

  • 编辑:这可能是CORS的问题,我在本地主机上。。。 在Javascript中,我可以设置请求头,获取并返回如下响应: 问题: 我想学习VueJs,并想用VueJs Axios复制这个,但是我很困惑如何设置请求标题,因为我在上面的JS中。 以下是我失败的尝试: 如何像在上面的JS中那样专门设置请求头。我想学习如何在Vue/Axios中实现以下功能。 谢谢。

  • 我正在构建一个VueJS应用程序,并使用JSON web令牌作为身份验证系统。当我登录用户时,我使用localStorage存储令牌,并且工作正常。我检查了标题,它在“授权”参数中。 我通过 我看到了标题,没关系。但是,当我对API中的受保护路由执行get请求时,返回“unauthorized”。但是,当我在请求中手动传递带有令牌的标头时,效果很好。 有人知道如何在执行某个请求时自动传递头吗?

  • 我写客户端REST GET调用使用Spring RestTem板。我需要将超文本传输协议头传递给GET调用。 请查找代码段: 在这个REST get调用中,我需要传递上面的头,比如Accept和username。为了在RestTemplate中传递头,需要对相同的代码进行哪些更改。

  • 我试图在spring boot应用程序中配置的过滤器中获取请求中的Traceid以进行审计。 我们如何从过滤器中的请求中获取Traceid