全链路追踪TLog

2024-08-22 07:18
文章标签 追踪 链路 tlog

本文主要是介绍全链路追踪TLog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分布式追踪系统

SkyWalking,Pinpoint,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。

TLog特性

  • 通过对日志打标签完成轻量级微服务日志追踪
  • 提供三种接入方式:javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的接入
  • 对业务代码无侵入式设计,使用简单,10分钟即可接入
  • 支持常见的log4j,log4j2,logback三大日志框架,并提供自动检测,完成适配
  • 支持dubbo,dubbox,springcloud三大RPC框架
  • 支持Spring Cloud Gateway和Soul网关
  • 适配HttpClient和Okhttp的http调用标签传递
  • 支持三种任务框架,JDK的TimerTask,Quartz,XXL-JOB
  • 支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择
  • 支持异步线程的追踪,包括线程池,多级异步线程等场景
  • 几乎无性能损耗,快速稳定,经过压测,损耗在0.01%
    在这里插入图片描述
  • 自启动
    由main函数作为项目的启动入口
  • 外置容器启动
    指项目部署在类似tomcat容器中的,tomcat作为外容器,项目部署在webapp目录下的
    javaagent本质也是字节码注入方式,只不过是完全无侵入项目的方式。
    TLog接入方式对于特性的支持:
    在这里插入图片描述

安装TLog

全量依赖
TLog对springboot和spring native提供了两种不同依赖,此种方式只需依赖一个包,必须的包会传递依赖进来
(1)springboot依赖

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

(2)spring native依赖

<dependency><groupId>com.yomahub</groupId><artifactId>tlog-all</artifactId><version>1.3.1</version>
</dependency>

按需依赖

<dependency><groupId>com.yomahub</groupId><artifactId>tlog-XXX-spring-boot-starter</artifactId><version>1.3.1</version>
</dependency>

在这里插入图片描述javaagent接入方式
(1)在Java启动参数中加入:

-javaagent:/your_path/tlog-agent.jar

(2)下载地址:

https://gitee.com/dromara/TLog/releases/v1.3.1

字节码注入方式
这种方式适合springboot项目,需要项目依赖tlog-all-spring-boot-starter包, tlog提供springboot的自动装配功能。
只需要在你的启动类中加入一行代码,即可以自动进行探测你项目所使用的Log框架,并进行增强。
以下方法适用于log4j,logback,原则上log4j2连这一行都不需要,因为log4j2会插件架构设计,会自动读取TLog项目中log4j2的适配插件:

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

因为这里是用javassist实现,需要在jvm加载对应日志框架的类之前,进行字节码增强。所以这里用static块。但是此方法要注意以下几点:

  • 对于Springboot应用而言,启动类中不能加入log定义,否则会不生效
  • 如果你的项目是非springboot,或者你是用tomcat/jboss/jetty等外置容器启动的(springboot的spring-boot-starter-web属于内置容器),则此方法无法使用,只能手动修改log配置文件
  • 对于使用log4j2日志框架的应用来说,此方法如果出现不生效的情况,请把log4j2配置文件的pattern中的m/msg/message改成tm/tmsg/tmessage

示例:

2021-06-21 13:57:10.310  INFO 8988 --- [nio-8101-exec-1] c.fofund.boot.redis.cache.RedisService   : <0><8734574520119040> 缓存key:[fofund-ipmc:login_token:null]
2021-06-21 13:57:10.367  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> login accountCode:[null],token:[null]
2021-06-21 13:57:10.367  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> ----------------request start----------------
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> URL:http://localhost:8101/ipmc/account/add
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> HTTP_METHOD :POST
2021-06-21 13:57:10.368  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> IP:0:0:0:0:0:0:0:1
2021-06-21 13:57:10.371  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> CLASS_METHOD:com.fofund.ipmc.controller.AccountController.addAccount
2021-06-21 13:57:10.372  INFO 8988 --- [nio-8101-exec-1] com.fofund.ipmc.aop.ControllerAspect     : <0><8734574520119040> ARGS:[AccountRequest(accountId=null, loginName=zhangwenlong99, password=LF8JQW1FywP+cuY+YEeMEBCOib7RcYYvMTLzbzCsVeSg4aj+pCSimmZSCeKX6bow5wOnsPOw64Phs30Pow38mIJsJmSc/J7Apv23htr3/JUiO6w9EpoLIGluU01NvplG/cpzIufxZNtMxkhBOzvCX1tV68NKg0LkYqa7Flh6nv0=, accountName=zhangwenlong05, employeeName=zhangwenlong05, phone=13003252799, email=zhangsan@fofund.com.cn, loginSwitch=1, oaFlag=null, roleList=[

这篇关于全链路追踪TLog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095604

相关文章

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

链路聚合配置

链路聚合配置前需要将物理接口进行清除,然后将接口加入到聚合内完成对接。 对接端口核心3口4口与财务核心的23口与24口进行对接。 拓扑如下:​​​​​​​ 配置如下: 核心路由器[CK]dhcp enable [CK]interface GigabitEthernet 0/0/0[CK-GigabitEthernet0/0/0]ip address dhcp-alloc[CK]a

华为eNSP:手工链路聚合和动态链路聚合

手工链路聚合(静态链路聚合) 一、拓扑图 二、交换机配置过程 [s1]int Eth-Trunk 1#创建进入链路聚合组1[s1-Eth-Trunk1]trunkport g0/0/1#将g0/0/1口加入聚合组1[s1-Eth-Trunk1]trunkport g0/0/2[s1-Eth-Trunk1]trunkport g0/0/3[s1-Eth-Trunk1]quit 配

SNAT的链路流程

A主机,有公网ip,比如1.1.1.1               有内网ip,比如192.168.1.1 B主机, 有内网ip,比如192.168.1.123 A主机和B主机在同一局域网,用交换机连接。或者在云平台,两个属于同一个vpc下的同一个subnet,也就是在同一个虚拟私人网络下的,同一个子网内。 如何实现B主机通过A主机的公网ip访问公网的服务? 这个就是snat解决的问题

实时数仓链路分享:kafka =SparkStreaming=kudu集成kerberos

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 本文档主要介绍在cdh集成kerberos情况下,sparkstreaming怎么消费kafka数据,并存储在kudu里面 假设kafka集成kerberos假设kudu集成kerberos假设用非root用户操作spark基

Flink全链路延迟的测量方式和实现原理

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 本文已经加入「大数据成神之路PDF版」中提供下载。你可以关注公众号,后台回复:「PDF」 即可获取。 一、背景 Flink Job端到端延迟是一个重要的指标,用来衡量Flink任务的整体性能和响应延迟(大部分流式应用,要求低延迟特性)。 通过流处理引擎竞品对比,我们发现大部分流计算引擎产品,都在告警监控页面,集成了全链路时延指标

SpringCloud之Sleuth(Micrometer)+ZipKin分布式链路追踪

(学习笔记) 1、分布式链路追踪概述 问题:在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。 在分布式与微服务场景下,我们需要解决如下问题:   在大规模分布式与微服务集群下,如何实时观测系统的整体调用链路情况。

钓鱼邮件真相追踪:XDR见招拆招!

钓鱼陷阱,财富“蒸发” 如果一家规模5000人、业务遍布全球的企业之中有一位员工不小心点进了一个钓鱼邮件,会发生什么……?终端失陷?数据泄露?失去客户信任? 最让人破碎的当然是……核心资产泄露,钱没了!! 人有失手,"鱼"有逃命 某大型零售企业财务部门小张收到一封看似来自公司财务部的邮件,由于内容与其实际工作情况相符,小张打开了邮件中的附件,并点击了附件里的下载链接

Java后端分布式系统的服务调用链路分析:Distributed Tracing

Java后端分布式系统的服务调用链路分析:Distributed Tracing 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在分布式系统中,服务之间的调用关系错综复杂,Distributed Tracing(分布式追踪)技术可以帮助我们清晰地追踪请求在系统中的流转路径,分析性能瓶颈和故障原因。 分布式追踪概述 分布式追踪通过为每个请求生成唯一的追踪

使用卫星仿真软件STK的一些应用和思考(星地链路、星间链路)

目录 任务描述利用STK建模星地协同系统3个GEO高轨卫星240/20/1 Walker-Star Constellation 低轨卫星星座地面站或者地面设备 链路建模与数据提取处理星地链路星间链路数据读取的几种方法最麻烦的方法使用Matlab与STK互联接口使用大规模使用Chain 总结 任务描述 在一个星地协同的空天地网络中,科研中可能需要建模星地链路以及星间链路,主要受