0
点赞
收藏
分享

微信扫一扫

分布式日志方案

我司项目是分布式系统,但没有分布式日志系统。每次排错查看日志极其痛苦,打开N个终端,shell敲的起飞,效率极低,果断引入ELK。

项目用的日志组件是logback(slf4j的实现),引入logstash-logback-encoder实现输出JSON格式的日志

<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.10</version>
</dependency>

把logback的配置里的encoder替换为

<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeCallerData>true</includeCallerData>
</encoder>

成功的输出JSON格式的日志文件

运维同学搭好ELK环境,把日志导入到elasticsearch中,可以愉快的使用Kibana来查看日志了。

这时问题又来了,如何查看一次请求的日志,这样可以很好分析一次请求上下文。一直在跟踪Spring的项目,Spring Cloud 中分布式跟踪Spring Cloud Sleuth项目,仔细研究了下发现可以把zipkin系统引进来,引进zipkin.brave

        <dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-spring-beans</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-context-slf4j</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-spring-webmvc</artifactId>
<version>4.4.0</version>
</dependency>

我司是基于Dubbo构架分布式系统,brave没有对应的实现,需要基于Dubbo的Filter来实现传递TraceId

通过过滤traceId,就很方便的实现了查看一个请求的上下文的日志,启用zipkin服务的话还可以很清晰的一个请求每次跨服务调用的耗时,还可查看调用MySQL的耗时

举报

相关推荐

0 条评论