Java分布式日志标记追踪

实现方式:

  1. 自己生成 traceId 并 put 到 MDC 里面;
  1. 使用 SkyWalking traceid 进行链路追踪;
  1. Tlog实现;
  1. 使用 Elastic APM 的 trace.id 进行链路追踪;
    1. 分布式追踪系统从诞生之际到有实质性的突破,很大程度受到Google Dapper的影响,目前常见的分布式追踪系统有Twitter的Zipkin、SkyWalking、阿里的EagleEye、PinPoint和美团的MTrace等,这些大多都是基于Google Dapper的设计思想
      多语言的就自行实现吧,通过head传递过去,解析出来,打印到日志中

手动实现

MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。 OncePerRequestFilter请求进入的时候增加traceId、trackId、requestId、tid(其中选一个变量名称),设置到MDC 中,日志打印的时候加上,response的时候也加上
注意:
  1. 子线程需要加上
  1. http调用的时候加上
    1. 拦截器HandlerInterceptor 处理进入
    2. Interceptor 处理restTemplate或者okHttp等,加入到head中
  1. spanId(每个服务的ID,服务名称)

skywalking

TLog

更加轻的日志打标
notion image
TLog通过对日志打标签完成企业级微服务的日志追踪。它不收集日志,使用简单, 产生全局唯一追踪码。除了追踪码,TLog还支持SpanId和上下游服务信息 标签的追加。你还可以自定义方法级别的标签,让日志的定位轻而易举。
$preApp:上游微服务节点名称
$preHost: 上游微服务的Host Name
$preIp:上游微服务的IP地址
$spanId:链路spanId,具体规则可以参照八.SpanId生成规则
$traceId:全局唯一跟踪ID

ELK的日志收集

notion image
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP