当前位置: 首页 > news >正文

SpringBoot日常:链路追踪skyworking的接入

前言

开发中遇到这样的一个常见,服务之间调用需要链路追踪,并且日志报错时能够及时预警,最重要的一点是不要写太多的侵入式代码,那么我们来捋捋常用的链路追踪组件,有Google的Dapper,阿里的鹰眼,大众点评的CAT,Twitter的Zipkin,LINE的pinpoint,国产的skywalking。从这些组件分析得出,skyworking是最符合我们的需求。本文也是介绍如何在自己的springboot项目中引入skyworking

探针jar包下载

开始服务接入时,我们首先需要去把探针jar包下载下来(本章内容测试用的是9.2),下载地址如下
https://archive.apache.org/dist/skywalking/java-agent/
在这里插入图片描述

pom文件

引入依赖,这里用的skyworking版本是9.2.0

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>9.2.0</version>
</dependency>
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>9.2.0</version>
</dependency>
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-opentracing</artifactId><version>9.2.0</version>
</dependency><!-- logback的版本信息-->
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version>
</dependency>
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.5</version>
</dependency>

logback.xml文件

接着我们需要对自己服务的logback文件进行内容添加,其中包括日志的格式、控制台的输出、上传的方式以及skyworking日志上报的等等,完整内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><springProperty scope="context" name="applicationName" source="spring.application.name"/>
<!-- 日志存放路径 --><property name="log.path" value="/tmp/logDemo" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ,[%X{tid}]  [%thread] %-5level %logger{50} - [%method:%line] %msg%n" /><!-- 控制台输出 --><appender name="consol" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout></encoder></appender><!-- 设置异步方式上报 --><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><neverBlock>true</neverBlock><appender-ref ref="consol"/></appender><!--skywalking日志上报--><appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout></encoder></appender><!--日志文件--><appender name="file_info" class="ch.qos.logback.core.FileAppender"><file>${log.path}/info.log</file><!-- 循环政策:基于时间创建日志文件 --><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout></encoder><!-- 输出INFO级别以上的日志 --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter></appender><appender name="file_error" class="ch.qos.logback.core.FileAppender"><file>${log.path}/error.log</file><!-- 循环政策:基于时间创建日志文件 --><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>${log.pattern}</Pattern></layout></encoder><!-- 输出ERROR级别日志 --><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter></appender><root level="trace"><appender-ref ref="grpc-log" /><appender-ref ref="ASYNC"/></root></configuration>

服务启动变量

在启动服务时需要加上一些启动变量,如

-javaagent:D:\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=easy-code::biz-api
-Dskywalking.collector.backend_service=192.168.111.111:11800
  • 需要指定skyworking的服务地址(192.168.111.111:11800
  • skywalking-agent.jar时skyworking提供的代码jar包,记得需要把整个文件夹一起,不能单独一个jar,否则会出现tid不显示的情况
  • service_name表示该服务的服务名(log-test),如果有多个服务想归纳到一个组,可以这样设置(local::log-test)
    在这里插入图片描述

启动项目

本次测试的是两个服务之间进行调用,具体是是biz-api服务调用user服务,调用方式为feign
启动项目后,我们可以看到控制台有定时任务打印的日志,其中有我们执行格式的tid
在这里插入图片描述
在这里插入图片描述

从skyworking控制台【服务】=》【Trace】可以查看到链路调用的信息
在这里插入图片描述

同样我们也可以查看到服务上报的具体日志
在这里插入图片描述

相关文章:

  • MYSQL求月份同比数据和环比数据
  • 【步联科技身份证】 身份证读取与解析———未来之窗行业应用跨平台架构
  • 深度学习应用详解
  • 叶国富“推翻”马云新零售,零售新王此刻登基?
  • 线性基学习DAY2
  • 【libp2p——NAT】
  • ansible学习之 Facts
  • 平安养老险肇庆中心支公司开展“2024年金融教育宣传月”活动
  • matlab-批处理图像质量变化并形成折线图 (PSNR)
  • HarmonyOs 查看官方文档使用弹窗
  • 【C/C++】错题记录(二)
  • 0代码、自动化,让AI视觉算法赋能千行百业(含源代码)
  • 敢不敢动手?AI绘画+表情包制作,7步搞定超萌表情!
  • Linux Mint急救模式
  • (undone) MIT6.824 Lab1
  • [笔记] php常见简单功能及函数
  • [译]前端离线指南(上)
  • 2017届校招提前批面试回顾
  • 230. Kth Smallest Element in a BST
  • Angular 响应式表单 基础例子
  • avalon2.2的VM生成过程
  • chrome扩展demo1-小时钟
  • ES6 ...操作符
  • JavaScript-Array类型
  • Js基础知识(四) - js运行原理与机制
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MySQL数据库运维之数据恢复
  • node和express搭建代理服务器(源码)
  • vue:响应原理
  • 订阅Forge Viewer所有的事件
  • 对象引论
  • 浮现式设计
  • 聊一聊前端的监控
  • 微信开源mars源码分析1—上层samples分析
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 带你开发类似Pokemon Go的AR游戏
  • ​【已解决】npm install​卡主不动的情况
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​人工智能书单(数学基础篇)
  • #HarmonyOS:Web组件的使用
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (14)Hive调优——合并小文件
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (libusb) usb口自动刷新
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (篇九)MySQL常用内置函数
  • (七)Knockout 创建自定义绑定
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载