Commit 765b15e0 authored by ascrutae's avatar ascrutae
Browse files

fix tomcat span without peer host and peer port issue

parent 21696f13
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -55,10 +55,10 @@ public class DubboInterceptor implements InstanceMethodsAroundInterceptor {
        Tags.URL.set(span, generateRequestURL(requestURL, invocation));
        Tags.COMPONENT.set(span, DUBBO_COMPONENT);
        Tags.SPAN_LAYER.asRPCFramework(span);

        if (isConsumer) {
        Tags.PEER_HOST.set(span, requestURL.getHost());
        Tags.PEER_PORT.set(span, requestURL.getPort());

        if (isConsumer) {
            Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_CLIENT);
            ContextCarrier contextCarrier = new ContextCarrier();
            ContextManager.INSTANCE.inject(contextCarrier);
+27 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ public class TomcatInterceptor implements InstanceMethodsAroundInterceptor {

        Span span = ContextManager.INSTANCE.createSpan(request.getRequestURI());
        Tags.COMPONENT.set(span, TOMCAT_COMPONENT);
        Tags.PEER_HOST.set(span, fetchRequestPeerHost(request));
        Tags.PEER_PORT.set(span, request.getRemotePort());
        Tags.SPAN_KIND.set(span, Tags.SPAN_KIND_SERVER);
        Tags.URL.set(span, request.getRequestURL().toString());
        Tags.SPAN_LAYER.asHttp(span);
@@ -76,4 +78,29 @@ public class TomcatInterceptor implements InstanceMethodsAroundInterceptor {
        Tags.ERROR.set(span, true);
    }

    /**
     *
     * @param request
     * @return
     */
    public String fetchRequestPeerHost(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }

}