skywalking本地启动和安装(MAC)
介绍
skyWalking是一个OAP(可观测分析平台)和APM系统(应用管理系统),它可以帮助我们理解系统行为,通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路和指标,SkyWalkingAPM会感知应用间关系和服务间关系,并进行相应的指标统计。 以便发生故障的时候,能够快速定位和解决问题。
本文使用的是skywalking8.8.1版本 , skywalking-agent使用的是
apache-skywalking-java-agent-8.8.0
开工
资源准备
- 下载skywalking
- 下载skywalking-agent
启动apo
修改配置
启动
启动skywalking-UI
修改配置
启动
编写skywalking-dubbo-provider项目
只提供关于skywalking上关的核心配置
- 引入依赖
1
2
3
4
5
6
7
8
9
10
11
12<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.7.0</version>
</dependency>
<!--skyWalking中的traceId记录到logback日志,我的skyWalking版本为8.5.0所以此处也选用了相同的版本-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.7.0</version>
</dependency> - 编写核心代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/**
* @author BK
* @description: traceId test service
* @date 2022/11/2 14:54
*/
public class TraceTestServiceImpl implements TraceTestService {
private static final Logger LOGGER = LoggerFactory.getLogger(TraceTestServiceImpl.class);
public String invokeMethod(String name) {
LOGGER.info("invokeMethod.receive.request:{}", name);
return "result:" + TraceContext.traceId();
}
} - 配置logback
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<!-- 控制台直播取tid变量即可-->
<property name="CONSOLE_LOG_PATTERN" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%tid] [%thread] [%c{10}:%line] %msg%n%rEx"/>
<!-- 文件中通过MDC获取变量-->
<property name="MDC_LOG_PATTERN" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%X{tid}] [%thread] [%c{10}:%line] %msg%n%rEx"/>
<appender name="stdoutAppender" 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>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</encoder>
</appender>
<appender name="log_file" class="com.yili.marmot.log.ext.core.TraceIdSupportFileRollAppender">
<File>${LOG_HOME}/warn.log</File>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd_HH}.%i.log.gz</FileNamePattern>
<MaxHistory>72</MaxHistory>
<maxFileSize>1GB</maxFileSize>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>${MDC_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender> - 配置启动参数
- 启动项目
编写my-webapp
- 引入依赖
1
2
3
4
5
6
7
8
9
10
11
12<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.7.0</version>
</dependency>
<!--skyWalking中的traceId记录到logback日志,我的skyWalking版本为8.5.0所以此处也选用了相同的版本-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.7.0</version>
</dependency> - 配置logback
- 配置启动参数
- 启动项目
验证结果
- 访问url
查看日志
my-webapp
skywalking-dubbo-provider
两个项目日志打印的traceId相同, 说明成功了
在本地搭建环境出现的问题
dubbo应用接入skywalking后追踪链路会断
最后统一了版本,就可以了应该是有些版本不兼容, 严格按照上述的版本琰搭建,会避免该问题
本文使用到的代码
git:
延伸阅读
https://skywalking.apache.org/zh/2022-08-30-pingan-jiankang/