微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Opentelemetry 中,无法获得父级跨度

如何解决在 Opentelemetry 中,无法获得父级跨度

我是 OpenTelemetry 这个词的新手。我已经分别为我的服务创建了跨度,但是当我尝试使用上下文传播来组合两个不同服务的跨度时,我无法成功。 我使用了以下代码

 // at client side:
  public static void sendContext(String resource) {

TextMapSetter<HttpURLConnection> setter =
    new TextMapSetter<HttpURLConnection>() {
      @Override
      public void set(HttpURLConnection carrier,String key,String value) {
        carrier.setRequestProperty(key,value);
      }
    };
HttpURLConnection transportLayer = null;
String urlString = "http://127.0.0.1:8080" + resource;
try {
  URL url = new URL(urlString);
  transportLayer = (HttpURLConnection) url.openConnection();
} catch (MalformedURLException ex) {
  System.out.println(ex.getMessage());
} catch (IOException e) {
  System.out.println(e.getMessage());
}
GlobalOpenTelemetry.getPropagators()
    .getTextMapPropagator()
    .inject(Context.current(),transportLayer,setter);
}



// at server side:
public static Context getContext(HttpServletRequest request) {

TextMapGetter<HttpServletRequest> getter =
    new TextMapGetter<HttpServletRequest>() {
      @Override
      public String get(HttpServletRequest carrier,String key) {
        Enumeration<String> headerNames = carrier.getHeaderNames();
        if (headerNames != null) {
          while (headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            System.out.println("headerNames.nextElement(): " + headerName);
            if (headerName.equals(key)) {
              String headerValue = request.getHeader(headerName);
              System.out.println("headerValue): " + headerValue);
              return headerValue;
            }
          }
        }

        return null;
      }

      @Override
      public Iterable<String> keys(HttpServletRequest carrier) {
        Set<String> set = new HashSet<String>();
        Enumeration<String> headerNames = carrier.getHeaderNames();
        if (headerNames != null) {
          while (headerNames.hasMoreElements()) {
            set.add(headerNames.nextElement());
          }
        }
        return set;
      }
    };
Context extractedContext =
    GlobalOpenTelemetry.getPropagators()
        .getTextMapPropagator()
        .extract(Context.current(),request,getter);

在服务器上,我无法获得父级跨度。 请对此提供帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。