spring-cloud 集成 plumelog traceID获取问题

日常摸的时候,码云上发现一个轻量级的分布式日志系统 PlumeLog ,就尝试使用了一下。发现 spring-cloud架构的traceID获取有问题。

1、 使用了 plumelog之后就不要使用 spring-cloud-starter-zipkin 了 两个只能用一个,否则plumelog生成的traceID会被 zipkin覆盖。(所以使用链路功能时,要根据自己的需求 采用那种模式)

2、关于fegin 请求链路追踪的问题。

实现 新建 UserInterceptor类 实现 HandlerInterceptor 接口

重写 preHandle 方法 将traceId 生成

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       
        String traceId = request.getHeader(TRACEID);
        if (com.plumelog.core.util.StringUtils.isEmpty(traceId)){
            TraceId.set();
        }else{
            TraceId.logTraceID.set(traceId);
        }
        return true;
    }

3、 TraceIdBean

public class TraceIdBean {
    @Bean
    public RequestInterceptor traceIdInterceptor() {
        return new TraceIdInterceptor();
    }
}

4、TraceIdInterceptor 实现 apply 方法

public class TraceIdInterceptor implements RequestInterceptor {

    private static final  String TRACEID= "traceId";

    @Override
    public void apply(RequestTemplate template) {
        String traceId = TraceId.logTraceID.get();
        if (StringUtils.isNotEmpty(traceId)){
            template.header(TRACEID,traceId);
        }
    }
}

5、被追踪的接口加上@Trace

6、fegin 调用 配置 configuration

@FeignClient(name = "test-demo", configuration = TraceIdBean.class)
public interface TestLogProvider {
    @GetMapping(value = "/test")
    String test();

}

7、 config 注入

@Configuration
public class WebServerMvcConfigurerAdapter implements WebMvcConfigurer {

    @Bean
    public HandlerInterceptor userInterceptor() {
        return new UserInterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(userInterceptor());
    }
}

8、 这样就可以获取追踪链路了

效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Plumelog一个简单易用的java分布式日志组件。支持百亿级别,日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,在分布式系统中也可以查询关联日志,能够帮助快速定位问题,简单易用,没有代码入侵,查询界面友好,高效,方便,只要你是java系统,不要做任何项目改造,接入直接使用,日志不落本地磁盘,无需关心日志占用应用服务器磁盘问题,觉得项目好用帮忙点个星星,您的star是我们前进的动力。 Plumelog功能介绍: 1、无入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志 2、基于elasticsearch作为查询引擎 3、高吞吐,查询效率高 4、全程不占应用程序本地磁盘空间,免维护;对于项目透明,不影响项目本身运行 5、无需修改老项目,引入直接使用,支持dubbo,支持springcloud Plumelog架构: plumelog-core:核心组件包含日志搜集端,负责搜集日志并推送到kafka,redis等队列 plumelog-server:负责把队列中的日志日志异步写入到elasticsearch plumelog-ui:前端展示,日志查询界面 plumelog-demo:基于springboot的使用案例 Plumelog使用方法: 自己编译安装如下 前提:kafka或者redis 和 elasticsearch(版本6.8以上最好) 自行安装完毕,版本兼容已经做了,理论不用考虑ES版本 打包 maven deploy -DskipTests 上传包到自己的私服 私服地址到plumelog/pom.xml改      UTF-8      http://172.16.249.94:4000

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值