跳到主要内容

SpringCloud 集成 SkyWalking 链路追踪并收集日志

技术选型及版本

skywalking-apm:9.2.0

skywalking-java-agent:8.12.0

elasticsearch:7.8.0


一、下载地址

https://skywalking.apache.org/downloads/

 

 

二、SkyWalking 配置

1、下载解压

解压apache-skywalking-apm-9.2.0.tar.gz(小技巧:如果windows解压不了,可以在linux上面解压之后,再下载到windows上面)

 

解压apache-skywalking-java-agent-8.12.0.tgz(360压缩工具即可解压)

 

2、运行

运行/apache-skywalking-apm-bin/bin/startup.bat (或 startup.sh )
访问http://localhost:8080/
 
若需要修改8080端口,在/apache-skywalking-apm-bin/webapp下面的webapp.yml文件里面修改。

3、配置SkyWalking日志收集

3.1 pom 中依赖 SkyWalking 的 logback 插件包

<!-- skywalking链路追踪 -->
<!-- 如果想在项目代码中获取链路TraceId,则需要引入此依赖 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.12.0</version>
</dependency>
<!-- skywalking logback日志插件 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.12.0</version>
</dependency>

3.2 添加/修改 logback.xml,启用 SkyWalking 提供的 appender

<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.TraceIdPatternLogbackLayout">
			<Pattern>%d{
   
     yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{
   
     36} -%msg%n</Pattern>
		</layout>
	</encoder>
</appender>

<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 ref="grpc"/>
</root>

4、配置Java agent

4.1 IDEA开发环境下配置Java agent

每个服务应用的 Edit Run/Debug Configurations ,添加如下VM options

-javaagent:D:/Server/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=yourAppName -Dskywalking.collector.backend_service=localhost:11800

 

4.2 jar包启动时配置Java agent

nohup java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=yourAppName -Dskywalking.collector.backend_service=localhost:11800 -jar yourApp.jar &

4.3 注意事项

如果skywalking没有部署在本地,就需要作如下配置,打开agent/config/agent.config配置文件,搜索collector.backend_service,将127.0.0.1修改为skywalking所在的服务器ip
 

三、服务效果

1、启动服务

启动微服务的各个服务,并进行一些操作,以便产生一些日志

2、访问SkyWalking UI控制台

地址:http://localhost:8080/

2.1 性能监控

 
 

2.2 链路追踪

 

2.3 日志收集

SkyWalking默认使用H2数据库存储,不支持全文检索方式查日志内容,且重启后数据丢失,生产环境建议使用elasticsearch存储,如果skywalking使用的是elasticsearch作为存储,则可以进行全局模糊查询
 

四、修改数据存储方式

找到application.yml中的

storage:
  selector: ${
   
     SW_STORAGE:h2}

修改为:

storage:
  selector: ${
   
     SW_STORAGE:elasticsearch}

配置elasticsearch(以下需配置,其它可默认)

storage:
  selector: ${
   
     SW_STORAGE:elasticsearch}
  elasticsearch:
  	# es集群名称
    namespace: ${
   
     SW_NAMESPACE:"my-es"}
    es地址
    clusterNodes: ${
   
     SW_STORAGE_ES_CLUSTER_NODES:192.168.163.128:9200}
    es账号(没有则填空字符串)
    user: ${
   
     SW_ES_USER:""}
    es密码(没有则填空字符串)
    password: ${
   
     SW_ES_PASSWORD:""}