推荐一个轻量级的分布式日志标记追踪神器!

简介: 推荐一个轻量级的分布式日志标记追踪神器!

TLog能解决什么痛点

随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排错查日志的时候。因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上下游业务的日志会变得有些困难。

这时候很多童鞋会开始考虑上SkyWalking,Pinpoint等分布式追踪系统来解决,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。

但是搭建分布式追踪系统,熟悉以及推广到全公司的系统需要一定的时间周期,而且当中涉及到链路span节点的存储成本问题,全量采集还是部分采集?如果全量采集,就以SkyWalking的存储来举例,ES集群搭建至少需要5个节点。这就需要增加服务器成本。况且如果微服务节点多的话,一天下来产生几十G上百G的数据其实非常正常。如果想保存时间长点的话,也需要增加服务器磁盘的成本。

当然分布式追踪系统是一个最终的解决方案,如果您的公司已经上了分布式追踪系统,那TLog并不适用。

TLog提供了一种最简单的方式来解决日志追踪问题,它不收集日志,也不需要另外的存储空间,它只是自动的对你的日志进行打标签,自动生成TraceId贯穿你微服务的一整条链路。并且提供上下游节点信息。适合中小型企业以及想快速解决日志追踪问题的公司项目使用。

为此我为了TLog适配了三大日志框架,支持自动检测适配。支持dubbo,dubbox,spring cloud三大RPC框架,更重要的是,你的项目接入TLog,可能连十分钟就不需要 :)

项目特性

目前TLog的支持的特性如下:

  • 通过对日志打标签完成轻量级微服务日志追踪
  • 对业务代码无侵入式设计,使用简单,10分钟即可接入
  • 支持常见的log4j,log4j2,logback三大日志框架,并提供自动检测,完成适配
  • 支持dubbo,dubbox,springcloud三大RPC框架
  • 支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择
  • 提供spanId来表示本次调用在整个调用链路树中的位置
  • 支持方法级别的标签自定义埋入
  • 天然支持异步线程的追踪
  • 几乎无性能损耗

让我们开始吧!

快速开始

TLog支持了springboot的自动装配,在springboot环境下,只需要以下两步就可以接入!

依赖

<dependency>
  <groupId>com.yomahub</groupId>
  <artifactId>tlog-all-spring-boot-starter</artifactId>
  <version>1.1.0</version>
</dependency>

目前jar包已上传中央仓库,可以直接依赖到

日志框架适配

只需要在你的启动类中加入一行代码,即可以自动进行探测你项目所使用的Log框架,并进行增强。

@SpringBootApplication
public class Runner {
    static {AspectLogEnhance.enhance();}//进行日志增强,自动判断日志框架
    public static void main(String[] args) {
        SpringApplication.run(Runner.class, args);
    }
}

因为这里是用javassist实现,需要在jvm加载对应日志框架的类之前,进行字节码增强。所以这里用static块。并且Springboot/Spring的启动类中不能加入log定义,否则会不生效。

RPC框架的适配

在Springboot环境下,TLog会自动探测你用的RPC框架,自动进行适配。

最终效果

只需要以上这2步,就可以把springboot项目快速接入了

这里以dubbo+log4j为例,Consumer端代码

image.png

日志打印:

2020-09-16 18:12:56,748 [WARN] [TLOG]重新生成traceId[7161457983341056]  >> com.yomahub.tlog.web.TLogWebInterceptor:39
2020-09-16 18:12:56,763 [INFO] <7161457983341056> logback-dubbox-consumer:invoke method sayHello,name=jack  >> com.yomahub.tlog.example.dubbox.controller.DemoController:22
2020-09-16 18:12:56,763 [INFO] <7161457983341056> 测试日志aaaa  >> com.yomahub.tlog.example.dubbox.controller.DemoController:23
2020-09-16 18:12:56,763 [INFO] <7161457983341056> 测试日志bbbb  >> com.yomahub.tlog.example.dubbox.controller.DemoController:24

Provider代码:

image.png

日志打印:

2020-09-16 18:12:56,854 [INFO] <7161457983341056> logback-dubbox-provider:invoke method sayHello,name=jack  >> com.yomahub.tlog.example.dubbo.service.impl.DemoServiceImpl:15
2020-09-16 18:12:56,854 [INFO] <7161457983341056> 测试日志cccc  >> com.yomahub.tlog.example.dubbo.service.impl.DemoServiceImpl:16
2020-09-16 18:12:56,854 [INFO] <7161457983341056> 测试日志dddd  >> com.yomahub.tlog.example.dubbo.service.impl.DemoServiceImpl:17

可以看到,经过简单接入后,各个微服务之间每个请求有一个全局唯一的traceId贯穿其中,对所有的日志输出都能生效,这下定位某个请求的日志链就变得轻松了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
存储 数据采集 监控
SkyWalking全景解析:从原理到实现的分布式追踪之旅
SkyWalking全景解析:从原理到实现的分布式追踪之旅
349 1
|
2天前
|
监控 JavaScript Java
|
23天前
|
API 开发工具 C语言
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
|
24天前
|
运维 监控 安全
linux日志分析与追踪
在Linux中,日志分析涉及检查 `/var/log` 下的不同文件,如`messages`、`auth.log`、`kern.log`等,以及Web服务器和数据库日志。使用`tail`、`grep`、`awk`等工具实时查看和搜索日志,`logrotate`管理日志大小,`journalctl`处理Systemd日志,而`Splunk`等工具则用于集中式分析。分析技巧包括异常检测、时间关联和阈值监控。安全事件追踪结合登录失败日志、网络嗅探和IDS/IPS。日志链路追踪在分布式系统中尤为重要,帮助定位服务调用问题。有效的日志管理和分析能增强系统安全和故障排除能力。
22 7
|
5月前
|
消息中间件 Kafka 网络安全
淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)
淘东电商项目(49) -ELK+Kafka分布式日志收集(docker下搭建kafka)
61 0
|
5月前
|
存储 数据可视化 搜索推荐
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
57 0
EMQ
|
2月前
|
存储 NoSQL API
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
EMQ
1116 2
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
|
3月前
|
监控 NoSQL Redis
ELK7.x日志系统搭建 3. 采用轻量级日志收集Filebeat
ELK7.x日志系统搭建 3. 采用轻量级日志收集Filebeat
104 0
|
5月前
|
缓存 Java API
微服务轮子项目(38) -分布式日志链路跟踪
微服务轮子项目(38) -分布式日志链路跟踪
72 0
|
5月前
|
消息中间件 搜索推荐 关系型数据库
淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)
淘东电商项目(50) -ELK+Kafka分布式日志收集(实现篇)
51 0

热门文章

最新文章