【问题标题】:Zuul proxy with ribbon + listOfServers and logging requirement具有功能区 + listOfServers 和日志记录要求的 Zuul 代理
【发布时间】:2016-05-02 11:38:19
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: spring-cloud netflix-zuul spring-cloud-netflix


    【解决方案1】:

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

    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;
        }
    }
    

    【讨论】:

    • 这个 AuditBean 类是什么?从哪里导入?
    猜你喜欢
    • 2018-10-25
    • 2016-04-15
    • 1970-01-01
    • 2021-11-10
    • 2017-11-16
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多