名称 | 版本 |
skywalking-oap-server | 8.9.1 |
skywalking-ui | 8.9.1 |
elasticsearch | 7.14.2 |
java-agent | 8.8.0 |
注意:
不建议直接下载latest版本,因为latest版本号不明显,需要进一步查看,后面会导致奇奇怪怪的问题【亲身经历】。
version: '3.3'
services:
elasticsearch:
image: elasticsearch:7.14.2
container_name: elasticsearch
restart: always
ports:
- 9200:9200
environment:
- "TAKE_FILE_OWNERSHIP=true" #volumes 挂载权限 如果不想要挂载es文件改配置可以删除
- "discovery.type=single-node" #单机模式启动
- "TZ=Asia/Shanghai" # 设置时区
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置jvm内存大小
volumes:
- ./elasticsearch/logs:/usr/share/elasticsearch/logs
- ./elasticsearch/data:/usr/share/elasticsearch/data
- ./elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ulimits:
memlock:
soft: -1
hard: -1
skywalking-oap-server:
image: apache/skywalking-oap-server:8.9.1
container_name: skywalking-oap-server
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch # 指定ES版本
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
TZ: Asia/Shanghai
volumes:
- ./oap/conf/alarm-settings.yml:/skywalking/config/alarm-settings.yml
skywalking-ui:
image: apache/skywalking-ui:8.9.1
container_name: skywalking-ui
depends_on:
- skywalking-oap-server
links:
- skywalking-oap-server
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: http://skywalking-oap-server:12800
TZ: Asia/Shanghai
具体配置可以skywalking官方github
执行命令
docker-compose up -d
等待大约2~3min,在浏览器中输入一下地址进行访问:
http://192.168.28.130:8080/
注意:
1、端口为 skywalking-ui中配置的端口
2、skywalking首次启动后,在浏览器中访问,有可能会出现加载页面不完整的情况,此时只需要耐心等待2~3min后在刷新页面即可。
agent代理使用【下载地址】(agent的使用需要将其拷贝至目标服务器,多少项目在一台服务器可以共用一个agent)
agent目录简介
如果想要使用可选插件将其复制到plugins目录即可【需要重启应用程序生效】,不想用只需冲plugins目录中将插件删除【需要重启应用后生效(有的文章说可以不重启生效)】
在VM参数中增加如下配置
-javaagent:/Users/admin/software/skywalking-agent/skywalking-agent.jar=agent.service_name=${APPLICATION_NAME},collector.backend_service=192.168.28.130:11800
${APPLICATION_NAME} 应用程序名称
192.168.28.130:11800 skywalking服务器采集地址,端口是docker-compose.yml 中 skywalking-oap-server 配置的端口(默认为11800)
java -jar配置
java -javaagent:/Users/admin/software/skywalking-agent/skywalking-agent.jar=agent.service_name=${APPLICATION_NAME},collector.backend_service=192.168.28.130:11800 -jar SpringBoot-0.0.1-SNAPSHOT.jar
注意:javaagent 需配置在 -jar前面
详细使用请看官网介绍:java-agent使用教程
可以APM 处看见当前服务
注意:
访问项目中任意接口
点击服务本身可以展示各种指标
可以在此处看见刚刚访问的接口以及耗时情况(如果此时搜索不出来,需注意时间范围是否正确)
如果在追踪中发现了访问异常慢的接口可以通过性能剖析对其进行分析
操作步骤
出现如下页面(如果Sampled Traces未出现注意刷新时间【这是skywalking唯一一个不友好的地方,不管访问任务页面都要注意时间的影响】)
点击分析按钮出现堆栈信息
可以看见耗时最下最长的信息。
日志采集需要配合TraceId一起做,有一定的侵入性
在项目中引入jar包
注意此处由于我使用的日志框架是logback,如果使用其他日志框架需引入对应的jar包
目前支持的日志框架有:log4j、log4j2和 logback。
org.apache.skywalking
apm-toolkit-logback-1.x
${apm-toolkit.version}
org.apache.skywalking
apm-toolkit-trace
${apm-toolkit.version}
日志数据格式化
%d{yyyy-MM-dd HH:mm:ss.SSS} [%ip] [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - [%tid] - %msg%n
UTF-8
日志采集
%d{yyyy-MM-dd HH:mm:ss.SSS} [%ip] %thread %logger %level - [%tid] %msg %n
完整配置文件
logback-spring.xml
${CONSOLE_LOG_PATTERN}
UTF-8
%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - [%tid] - %msg%n
UTF-8
${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log
31
30MB
%d{yyyy-MM-dd HH:mm:ss.SSS} %thread %logger %level - [%tid] %msg %n
待一切配置好后(重启项目)需要等待3~5min就可以看见日志信息了
注意时间范围
配置了一个全局异常处理器,如果发生异常则返回TraceId,然后用该TraceId去查找相应的日志与链路信息
@ExceptionHandler(value = Exception.class)
@Trace
public ResponseModel handleException(Exception e) {
log.error("异常堆栈=>", e);
return ResponseModel.errorMsg(RepCodeEnum.BLANK_ERROR, TraceContext.traceId());
}
定位链路
点击相关日志进入日志详情
注意:日志的上传需要时间,不能立马获取到实时日志
Skywalking官方文档
Skywalking UI介绍
Skywalking GitHub