-------------------ELK(工作中的示例-原理分析-重写dubbo的SPI解决traceId的传递)--dubbo链路追踪----------
一、切面拦截器引入-适用于普通方法调用
拦截器写业务日志,拿logstash-bus举例
1、切面拦截器引入
1.1切面引入
2.2 线程唯一ID使用拓展
原理:
使用方式:
String traceId = ServiceContext.getContext().getRequestFlowNo();
log.info("[ThirdResMonitorAspect#toAround] toAround end Throwable,traceId={}", traceId);
2、切面逻辑:打印指定文件名的日志(两个,pcs-core_es.log 和 pcs-core.log)
3、就是Logstash通过配置规则来收集pcs-core_es.log 和 pcs-core.log日志out保存到指定索引名称的es数据库里
4、kibana来查询索引下的日志数据
二、重写spi-dubbo调用
dubbo调用,线程变了,只依赖于Loacalhost是拿不到原来那个traceId了,需要用dubbo调用者和提借者之间通信会话里的invocation.getAttachments()来传递traceId.这样服务提供者就能把调用者的线程traceId放入服务提供者自已的线程Context里。