1.版本信息

skywalking-oap-server:9.3.0

skywalking-ui:9.3.0

apache-skywalking-java-agent-8.14.0.tgz

2.docker拉取镜像

2.1.(注意括号内的信息,还有这句话  -v /dev-ops:/skywalking/ext-libs \

/dev-ops这个是存放mysql驱动的,不然会报错,去这里下载数据库驱动jar包)

docker run --name oap --restart=always  \
-e JAVA_OPTS="-Xms1G" \
-e SW_STORAGE=mysql \
-e SW_JDBC_URL=jdbc:mysql://(你的ip):3306/swtest \
-e SW_DATA_SOURCE_USER=(你的数据库账号) \
-e SW_DATA_SOURCE_PASSWORD=(你的数据库密码) \
-v /dev-ops:/skywalking/ext-libs \
-dp 11800:11800 \
-dp 12800:12800 \
apache/skywalking-oap-server:9.3.0

docker run --name oap-ui --restart=always \
-dp 8686:8080 \
-e SW_OAP_ADDRESS=http://(你的ip):12800 \
-e TZ=Asia/Shanghai \
apache/skywalking-ui:9.3.0

 3.创建一个dockerfile文件,拉取解压探针

wget https://dlcdn.apache.org/skywalking/java-agent/8.14.0/apache-skywalking-java-agent-8.14.0.tgz

tar -zxvf apache-skywalking-java-agent-8.14.0.tgz

4.在dockerfile文件夹根目录中创建

4.1.vi dockerfile

4.2.这里是文件内容

注意,我是通过openjdk:8来打的镜像,如果你们本地没有就要去拉取一下openjdk:8的镜像

FROM openjdk:8
EXPOSE 8089ENV HOME_PATH /homeWORKDIR $HOME_PATHADD demo1-0.0.1-SNAPSHOT.jar $HOME_PATH/app.jarENTRYPOINT ["java","-jar","app.jar"]

 5.打包镜像

docker build -t skywalking-agent:8.14.0 .

6.写springboot项目的dockerfile

6.1.这里ADD ./target/demo1-0.0.1-SNAPSHOT.jar是基于我的目录来做的

FROM skywalking-agent:8.14.0这就是第五步打成镜像的名称

如果是跟着我的目录做到这里的"-javaagent:/agent/skywalking-agent.jar"就不要改变

# 基础镜像
FROM skywalking-agent:8.14.0#申明一个环境变量
ENV HOME_PATH /home#指定容器启动时,执行命令会在该目录下执行
WORKDIR $HOME_PATH#应用构建成功后的jar复制到容器指定目录下
ADD ./target/demo1-0.0.1-SNAPSHOT.jar $HOME_PATH/app.jar#指定容器内部端口
EXPOSE 8089ENTRYPOINT ["java","-javaagent:/agent/skywalking-agent.jar","-DSW_AGENT_NAME=hello","-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=(你的ip):11800","-jar","app.jar"]

 7.写logbake.xml,我这里分成两个文件

7.1.logback-skywalking.xml

<?xml version="1.0" encoding="UTF-8"?>
<included><!--日志渲染--><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /><!-- skywalking日志样式 --><property name="SKY_WALKING_PATTERN" value="[%tid] ${SKY_WALKING_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39} %line){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><!-- skywalking控制台 --><appender name="SKY_WALKING_CONSOLE" 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.TraceIdPatternLogbackLayout"><pattern>${SKY_WALKING_PATTERN}</pattern></layout></encoder></appender><!--推送日志至管理后台--><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>%date [%file:%line]-%msg%n</pattern></layout></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter></appender><!-- skywalking控制台 -->
</included>

7.2.logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?><configuration><include resource="logback-skywalking.xml"/>  # 引入sky日志(也可以写在一个文件中)<property name="LOG_PATH" value="logs"/><property name="MAX_FILE_SIZE" value="10MB"/><property name="MAX_HISTORY" value="30"/><springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="demo" /><springProperty scope="context" name="loglevel" source="logging.level.root" defaultValue="info" /><springProperty scope="context" name="skyLogEnable" source="skywalking.log.enable" defaultValue="false"/> # 新增sky日志的开关,yml中配置<!-- 控制台日志样式 --><property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%d{[${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}]}-[${LOG_LEVEL_PATTERN:-%5p}]-[%-30.30logger{29}] : %m%n}"/><!-- 文件日志样式 --><property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{[${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}]}-[${LOG_LEVEL_PATTERN:-%5p}]-[%-30.30logger{29}] : %m%n}"/><!-- 控制台 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern></encoder></appender><!-- 日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${FILE_LOG_PATTERN}</pattern></encoder><!-- <file>${LOG_PATH}/ztproject.log</file> --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${applicationName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${MAX_FILE_SIZE}</maxFileSize><maxHistory>${MAX_HISTORY}</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy></appender><!-- 错误日志文件 我们在k8s环境下 没必要做错误日志文件 --><!-- <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><encoder><pattern>${FILE_LOG_PATTERN}</pattern></encoder><file>${LOG_PATH}/ztproject-error-error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/${applicationName}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><maxFileSize>${MAX_FILE_SIZE}</maxFileSize><maxHistory>${MAX_HISTORY}</maxHistory></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender> --><!-- 异步写日志 --><appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><appender-ref ref ="FILE"/></appender><!-- <appender name="ASYNC_ERROR_FILE" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><appender-ref ref ="ERROR_FILE"/></appender> --><root level="INFO"><appender-ref ref="ASYNC_FILE"/><if condition='${skyLogEnable}'> # js表达式<then><appender-ref ref="SKY_WALKING_CONSOLE"/><appender-ref ref="GRPC_LOG"/></then><else><appender-ref ref="CONSOLE"/></else></if></root>
</configuration>

8.添加依赖

<!--start skywalking8.5集成-->
<!--skywalking8.5日志集成-->
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.14.0</version>
</dependency><!-- 该引用用于代码获取tranceId -->
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.14.0</version>
</dependency>
<!--end skywalking8.5集成--><!--xml.value解析表达式-->
<dependency><groupId>org.codehaus.janino</groupId><artifactId>janino</artifactId><version>3.0.6</version>
</dependency>

9.开启日志跟踪

#application.yml开启日志追踪
skywalking:log:enable: true # false是关闭,不配默认关闭

 10.查看日志

10.1.我通过访问接口打印了一堆日志,如果在有报错,复制TID到skywalking中

10.2.直接复制你TID进行搜索

ok,完美下班!

大部分内容是照搬这个帖子的(90条消息) Linux搭建Skywalking9.3_linux 安装skywalking_猿仁的博客-CSDN博客

我是有配置了jenkins,提交代码就可以自动部署。

skywalking + docker + logback + mysql 实现全链路日志跟踪相关推荐

  1. SpringCloud之Sleuth全链路日志跟踪

    文章目录 1 Sleuth链路跟踪 1.1 分布式系统面临的问题 1.2 Sleuth是什么 1.3 Zipkin是什么 1.4 链路监控相关术语 1.5 实战练习 1.5.1 pom.xml 1.5 ...

  2. python轨迹追踪、全链路日志追踪trace_id实现

    python轨迹追踪.全链路日志追踪trace_id实现 非链路日志(普通日志) 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 ...

  3. 卫星系统——酒店后端全链路日志收集工具介绍

    背景 随着酒店业务的高速发展,我们为用户.商家提供的服务越来越精细,系统服务化程度.复杂度也逐渐上升.微服务化虽然能够很好地解决问题,但也有副作用,比如,问题定位. 每次问题定位都需要从源头开始找同事 ...

  4. 可视化全链路日志追踪

    可观测性作为系统高可用的重要保障,已经成为系统建设中不可或缺的一环.然而随着业务逻辑的日益复杂,传统的ELK方案在日志搜集.筛选和分析等方面愈加耗时耗力,而分布式会话跟踪方案虽然基于追踪能力完善了日志 ...

  5. 腾讯SNG全链路日志监控平台之构建挑战

    作者丨吴树生:腾讯高级工程师,负责SNG大数据监控平台建设.近十年监控系统开发经验,具有构建基于大数据平台的海量高可用分布式监控系统研发经验. 导语:当前SNG全链路日志监控平台每日数据存储量10TB ...

  6. 腾讯 SNG 全链路日志监控平台之构建挑战

    原文地址:https://www.v2ex.com/t/406689 作者丨吴树生:腾讯高级工程师,负责 SNG 大数据监控平台建设.近十年监控系统开发经验,具有构建基于大数据平台的海量高可用分布式监 ...

  7. 基于Spring Aop及log4j2的MDC实现全链路调用跟踪(traceid)

    环境: Springboot:2.2.3.RELEASE Spring-boot-starter-log4j2: 2.2.2.RELEASE jdk:1.8 目标: 实现Springboot框架下的全 ...

  8. 【Spring Cloud】Sleuth+Zipkin全链路日志追踪接入实战

    文章目录 一.背景 链路追踪介绍 为什么需要链路追踪? 那该如何解决呢? 二.常见的链路追踪技术有下面这些: 三.Sleuth 3.1.Sleuth(读作/sluːθ/)介绍 3.2.相关术语 3.3 ...

  9. 调用链路_全链路日志分析解决方案介绍

    为何需要链路分析? 您是否了解运维环境的网络架构和业务系统架构?当业务升级或变更时,是否对已有的架构图及时作出更新?当发生故障时,是否能够快速判断哪个业务系统模块或接口出现了问题,是否能够快速判断故障 ...

最新文章

  1. 操作系统结构-简单体系结构
  2. 大数据入门基础:SSH介绍
  3. 下一代Windows系统,Win11来了
  4. asp.net 日期转换
  5. 布斯乘法以及带符号数的运算
  6. C语言中几个容易踩的“坑”!
  7. JAVA日期和时间API
  8. 【C语言进阶深度学习记录】十九 #pragma使用与分析
  9. STL之accumulate
  10. SQL Server2008R无法登录的解决方案(系统文件损坏)1814 18456....不看别后悔,有用请点赞...
  11. Go语言学习之11 日志收集系统kafka库实战
  12. java编解码技术,netty nio
  13. android屏幕有残影,如何预防手机烧屏 防止手机屏幕出现残影教程分享
  14. MySQL数据库之字段约束
  15. 解决virtualbox导入虚拟机报错E_INVALIDARG (0x80070057)问题
  16. ORDER BY语句报错Out of sort memory, consider increasing server sort buffer size
  17. 成都市2016年11月出租车订单od数据
  18. negroni-gzip源代码分析
  19. 计算机课电脑如何提网速,教大家怎么调网速,让你的电脑像飞速运转。
  20. iframe不能显示内容的问题

热门文章

  1. 你自学3dmax一直没进步?只因没找到这几个突破口,萌新须知
  2. 智能时代如何打通商业市场?华为的内外兼修
  3. ERP主数据(2):主数据管理6大策略+5大步骤
  4. python解析excel内存溢出_phpExcel大数据量情况下导出内存溢出解决
  5. node express框架
  6. OBD-II接口引脚定义
  7. word添加特定字体操作
  8. Java 在Word中合并单元格时删除重复值
  9. 代入感太强了!我已经使用Docker来管理我的项目了
  10. 怎么打开红米手机的电池后盖