FrankChen021 / bithon

An observability platform mainly for Java
Apache License 2.0
15 stars 4 forks source link

Error when transforming httpclient spans #607

Closed FrankChen021 closed 1 year ago

FrankChen021 commented 1 year ago

image

At TraceSpanTransformer.java

        if (StringUtils.hasText(uri)
            && SpanKind.CLIENT.name().equals(span.getKind())
            && "httpclient".equals(span.getName())) {
            try {
                URL url = new URL(uri);
                String path = url.getPath();
                String query = url.getQuery();

                tags.remove(Tags.Http.URL);
                tags.put(Tags.Http.TARGET, query == null ? path : (path + "?" + query));
                tags.put(Tags.Net.PEER, url.getHost() + ":" + url.getPort());
FrankChen021 commented 1 year ago

TraceTopoBuilder should be also adjusted to use correct Tag name

            if (childSpan.children.size() == 0) {
                String uriText = null;
                if (SpanKind.CLIENT.name().equals(childSpan.getKind())) {
                    uriText = childSpan.getTag(Tags.Http.URL);
                } else if (SpanKind.PRODUCER.name().equals(childSpan.getKind())) {
                    uriText = childSpan.getTag("uri");
                }

                if (uriText != null) {
                    try {
                        URI uri = new URI(uriText);
                        TraceSpan next = new TraceSpan();
                        next.setAppName(uri.getScheme());
                        next.setInstanceName(uri.getHost() + ":" + uri.getPort());
                        this.addLink(childSpan, next).incrCount();
                    } catch (URISyntaxException ignored) {
                    }
                }
            }
FrankChen021 commented 1 year ago

Fixed by #608