1

嗨,我已将 Zuul (spring-cloud-netflix) 配置为使用功能区。

在将功能区添加到它之前,我能够看到哪个请求正在发送到 zuul,以及哪些请求正在发送到日志中的相关端点。

在某些时候,我添加了功能区和负载平衡功能。

现在我在日志中看不到传出请求(从 zuul 到真实端点)请求。一切正常。没有错误。但我需要在 Zuul 代理中了解/记录incomingReq->outgoingReq 信息。我的意思是我需要路由路径信息(尤其是 ip 信息)。

有没有办法查看/获取这些信息?如果可能,我想将其记录在过滤器中吗?

4

1 回答 1

2

我找到了一种方法来做类似的事情..希望它也可以帮助其他人。

import com.netflix.client.IResponse;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.net.URI;

@Component
public class PostFilter extends ZuulFilter {

    Logger auditLogger = LoggerFactory.getLogger("auditLogger");

    @Override
    public String filterType() {
        return "post";
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        URI ribbonResponseURI = ((IResponse) ctx.get("ribbonResponse")).getRequestedURI();
        AuditBean auditBean = (AuditBean) RequestContext.getCurrentContext().get("auditBean");
        auditBean.setIncomingURI(ctx.getRequest().getRequestURL().toString());
        auditBean.setOutgoingURI(ribbonResponseURI.toString());
        auditLogger.info("{}", auditBean.toJson());
        return null;
    }
}
于 2016-05-02T15:59:33.163 回答