主要有部分内容
oap服务:接收和保存采集的数据,同时个UI展示
SkyWalking Website:展示oap服务的数据
SkyWalking agent:采集应用数据
下载安装包
下载地址:https://skywalking.apache.org/downloads/
备注:因为我数据是存储在elasticsearch7,需要下载对应的版本,否则启动报错。
我下的版本如下:wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz
解压
tar -xzvf apache-skywalking-apm-es7-8.7.0.tar.gz
修改配置
cd apache-skywalking-apm-bin-es7/config
vi application.yml
- 存储类型改为elasticsearch7
storage:
selector: ${SW_STORAGE:elasticsearch7}
- 修改elasticsearch7配置
elasticsearch7:
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} #es7机器地址
#略,其他配置不用动
user: ${SW_ES_USER:"es账号"} #如果es开启认证,需要填账号密码,否则不动即可
password: ${SW_ES_PASSWORD:"es密码"} #如果es开启认证,需要填账号密码,否则不动不动即可
备注:如果开启了认证,es账号需要给对应的权限。我给了用户集群权限monitor和manager权限,索引* all的权限
启动
cd apache-skywalking-apm-bin-es7/bin
./oapServiceInit.sh
备注:启动完成后可以进入log目录检查是否异常或者通过jps 查看是否存在 4567 OAPServerStartUp 进程
修改SkyWalking Website的配置
因为默认是8080端口,容易冲突,因此改个端口,我用了18082。
cd apache-skywalking-apm-bin-es7/webapp
vi webapp.yml
修改端口如下:
server:
port: 18082
启动 SkyWalking Website
cd apache-skywalking-apm-bin-es7/bin
./webappService.sh
这个时候可以打开:http://10.0.169.41:18082/
SkyWalking agent
安装包有agent
data/apache-skywalking-apm-bin-es7/agent
可以把他们复制到java程序所在的机器上,启动脚本增加如下配置
-javaagent:本地目录别配错了/skywalking-agent.jar -Dskywalking.agent.service_name=服务名 -Dskywalking.collector.backend_service=上边安装的服务器ip:11800
例如
java -javaagent:/data/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.namespace=dev -Dskywalking.agent.service_name=service-gateway -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dspring.profiles.active=dev -jar /demo.jar
备注:我安装的apache-skywalking-apm-bin-es7下的agent存在问题,单独下了一个。下面有详细说明。
agent碰到的问题:
- apm包中带的agent发现不能上报日志(看日志默认grpc连的是127.0.0.1:11800,不是我配置的ip和端口),单独下了最新版本agent(8.10.0)后解决
备注:我下的是 https://dlcdn.apache.org/skywalking/java-agent/8.10.0/apache-skywalking-java-agent-8.10.0.tgz - spring cloud gateway 不在调用链路里。把安装目录下optional-plugins中的apm-spring-cloud-gateway-2.1.x-plugin-8.10.0.jar和apm-spring-webflux-5.x-plugin-8.10.0.jar复制到plugin总解决
备注:optional-plugin是支持但是没激活的插件。plugin中是激活的,启动应用时会加载。 - 日志上报
我是logback的,添加依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.9.0</version>
</dependency>
logback-spring.xml 修改如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
........ 略.......
<!-- 彩色日志格式 [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n -->
<property name="CONSOLE_LOG_MDC_PATTERN" value="${CONSOLE_LOG_MDC_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%X{tid}] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!-- 控制台输出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_MDC_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
........ 略.......
<appender name="grpcLog" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>${FILE_LOG_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
........ 略.......
<appender-ref ref="infoFile" />
<appender-ref ref="grpcLog" />
</root>
</configuration>
- 调用链路中存在太多不想监控的url
通过optional-plugins中的插件apm-trace-ignore-plugin-8.10.0解决,同样复制到.plugins中。同时在aggent的config目录下添加配置文件apm-trace-ignore-plugin.config,内容如下
#多个逗号分隔
trace.ignore_path=/actuator/**,GET:/actuator/**,Lettuce/**,/Lettuce/**,/actuator,GET:/actuator