SpringCloud、Springboot接入skywalking
javaagent:D:\newwork\skywalking\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar# SkyWalking Agent jar 地址。https://archive.apache.org/dist/skywalking/java-agent/8.9.0/(其他版本:http
一.什么是skywalking?
skywalking 是分布式系统的应用程序性能监视工具,专门为微服务,云原生架构何基于容器架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
二.有哪些功能
a.多种监控手段。可以通过语言探针和service mesh获取监控数据。
b.多个语言自动探针
c.轻量高效
d.支持告警
e.优秀的可视化解决方案
三、Skywalking与JDK版本的对应关系
下载APM 地址
https://archive.apache.org/dist/skywalking/
下载Agent地址
https://archive.apache.org/dist/skywalking/java-agent/
四、目前使用的jdk版本是8
SkyWalking APM 是什么?
全称:Application Performance Management,应用性能管理。1.
功能:
• 分布式链路追踪(Trace)
• 服务拓扑图 & 依赖分析
• 指标监控(QPS、延迟、错误率)
• 告警与通知2.
核心组件:
• OAP Server(Observability Analysis Platform):负责接收 Agent 数据、分析、存储、查询。
• UI(SkyWalking Rocketbot):前端可视化界面,默认端口 8080。
• 存储:支持 Elasticsearch、MySQL、TiDB、H2 等,生产环境一般用 ES。
下载APM
https://archive.apache.org/dist/skywalking/8.9.1/(其他版本:https://archive.apache.org/dist/skywalking)
SkyWalking AGENT 是什么?
本质:一个 Java 探针(jar 包),在应用启动时通过 -javaagent 挂载到 JVM。
作用:
• 自动埋点:拦截 HTTP、RPC、DB、MQ 等调用,生成 Trace、Metrics。
• 上报数据:把采集到的数据通过 gRPC 发送给 OAP Server(默认端口 11800)。
目录结构(解压后的 agent/ 目录示例):
agent/
├─ skywalking-agent.jar # 入口 jar
├─ config/agent.config # 主配置文件
├─ plugins/ # 已激活的插件(*.jar)
├─ optional-plugins/ # 可选插件,需要时手动拷到 plugins/
└─ logs/ # 探针自身日志
下载Agent
https://archive.apache.org/dist/skywalking/java-agent/8.9.0/(其他版本:https://archive.apache.org/dist/skywalking/java-agent)
五.skywalking的数据存储方式
默认h2,可根据实际需求选择
六.启动skywalking
windows下双击startup.sh(用管理员模式启动)
linux下用进入bin目录下执行./startup.sh 如果./startup.sh 没有执行权限可以通过chmod设置可执行权限 或者sh startup.sh
七.配置修改
Skywalking-Collector:追踪信息收集器,通过 gRPC/Http收集客户端的采集信息,gRPC默认端口11800/Http默认端口12800。
通过修改apache-skywalking-apm-8.9.1\apache-skywalking-apm-bin\config\application.yml
Skywalking-webapp :页面展示,修改端口通过修改apache-skywalking-apm-8.9.1\apache-skywalking-apm-bin\webapp\webapp.yml
八、springboot项目探针接入
启动加入参数
-javaagent:D:\newwork\skywalking\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar # SkyWalking Agent jar 地址。
-Dskywalking.agent.service_name=springboot-kafka # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
-Dskywalking.collector.backend_service=127.0.0.1:11800 # 配置 Collector 地址。
//这个可以不加
-Dskywalking.agent.span_limit_per_segment=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
后台脚本启动
nohup java -javaagent:D:\newwork\skywalking\apache-skywalking-java-agent-8.9.0\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=springboot-kafka
-Dskywalking.collector.backend_service=127.0.0.1:11800
-Dskywalking.agent.span_limit_per_segment=2000 jar springboot-kafka.jar &
九、springboot启动调用接口
使用apifox调用接口查看skywalking接入情况。
仪表盘:
拓扑图:
追踪:
十.日志接入skywalking
项目添加依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.12.0</version>
</dependency>
日志工具包对应的skywalking的版本
| apm-toolkit-logback-1.x 版本 | 对应 SkyWalking Java Agent 版本 |
| -------------------------- | --------------------------- |
| 8.1.0 | 8.1.x |
| 8.3.0 | 8.3.x |
| 8.4.0 | 8.4.x |
| 8.5.0 | 8.5.x |
| 8.8.0 | 8.8.x |
| 8.11.0 | 8.11.x |
| 8.12.0 | 8.12.x |
| 8.14.0 | 8.14.x |
| 8.16.0 | 8.16.x |
| 9.0.0 | 9.0.x |
| 9.4.0 | 9.4.x |
springboot项目添加默认的日志配置logback-spring.yml放入项目的resource下面
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<contextName>springboot-kafka</contextName>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="D:/logs"></property>
<!-- 彩色日志 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<!--控制台日志, 控制台输出 -->
<appender name="STDOUT" 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">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%X{tid}] %clr([%-10.10thread]){faint} %clr(%-5level) %clr(%-50.50logger{50}:%-3L){cyan} %clr(-){faint} %msg%n</pattern>
</layout>
</encoder>
</appender>
<!--文件日志, 按照每天生成日志文件 (由 Logger或者 LoggerFactory 记录的日志消息)-->
<!--以下关于 日志文件的pattern 需要去掉颜色,防止出现 ANSI转义序列-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}/pro.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%-10.10thread] %-5level %-50.50logger{50}:%-3L - %msg%n</pattern>
</layout>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!--skywalking grpc 日志收集-->
<appender name="grpc" 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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"><!-- 控制台输出 --></appender-ref>
<appender-ref ref="FILE"><!-- 文件输出 --></appender-ref>
<appender-ref ref="grpc"><!-- Skywalking GRPC 输出 --></appender-ref>
</root>
</configuration>
启动项目调用接口可以看到
更多推荐
所有评论(0)