Apache SkyWalking 学习笔记目录
开整 SkyWalking 单机环境
- 第一步,搭建一个 Elasticsearch 服务。
- 第二步,下载 SkyWalking 软件包。
- 第三步,搭建一个 SkyWalking OAP 服务。
- 第四步,搭建一个 SkyWalking UI 服务。
- 第五步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。
1. 本地启动 Elasticsearch
使用版本 : elasticsearch-7.6.2
参考
Elastic 官方文档
1
2
3
4
5
6
| # 启动
cd elasticsearch-<version>
./bin/elasticsearch
# 检查是否成功
curl 'http://localhost:9200/?pretty'
|
2. 下载 SkyWalking
SkyWalking 版本需要和 Elasticsearch 版本匹配
使用版本 : SkyWalking APM
v8.7.0 for H2/MySQL/TiDB/InfluxDB/ElasticSearch 7
3. SkyWalking OAP 搭建
vim config/application.yml
- 重点修改 storage 配置项,通过 storage.selector 配置项来设置具体使用的存储器。
1
2
| storage:
selector: ${SW_STORAGE:elasticsearch7}
|
启动 SkyWalking OAP 服务
1
2
3
| $ bin/oapService.sh
SkyWalking OAP started successfully!
|
是否真正启动成功,打开 logs/skywalking-oap-server.log 日志文件,查看是否有错误日志。首次启动时,因为 SkyWalking OAP 会创建 Elasticsearch 的索引,所以会“疯狂”的打印日志。
4. SkyWalking UI 搭建
是否真正启动成功,打开 logs/webapp-console.log 日志文件,查看是否有错误日志。
访问 UI 界面 : http://127.0.0.1:8080
5. SkyWalking Agent
需要将 apache-skywalking-apm-bin/agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agen。我们来看看 Agent 目录下有哪些:
1
2
3
4
5
6
7
8
9
10
| $ ls -ls
total 35176
0 drwxr-xr-x@ 7 yunai staff 224 Dec 24 14:20 activations
0 drwxr-xr-x@ 4 yunai staff 128 Dec 24 14:21 bootstrap-plugins
0 drwxr-xr-x@ 3 yunai staff 96 Dec 24 14:12 config # SkyWalking Agent 配置
0 drwxr-xr-x@ 3 yunai staff 96 Jan 2 19:29 logs # SkyWalking Agent 日志
0 drwxr-xr-x@ 13 yunai staff 416 Dec 24 14:22 optional-plugins # 可选插件
0 drwxr-xr-x@ 68 yunai staff 2176 Dec 24 14:20 plugins # 插件
35176 -rw-r--r--@ 1 yunai staff 18006420 Dec 24 14:12 skywalking-agent.jar # SkyWalking Agent
|
Java 启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #!/bin/bash
# SkyWalking Agent 配置
# 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
export SW_AGENT_NAME=demo-application
# 配置 Collector 地址。
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
# 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。
# 主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
export SW_AGENT_SPAN_LIMIT=2000
# SkyWalking Agent jar 地址
export JAVA_AGENT=-javaagent:/Users/aoe/tools/apache-skywalking-apm-es7-8.7.0/agent/skywalking-agent.jar
# Jar 启动
java -jar $JAVA_AGENT -jar lab-39-demo-2.2.2.RELEASE.jar
|
上报日志
官方文档-log4j2
Print trace ID in your logs
支持:log4j、log4j2、logback
log4j2.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <appenders>
<GRPCLogClientAppender name="grpc-log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</GRPCLogClientAppender>
</appenders>
<loggers>
<logger name="com.a.eye.skywalking.ui" level="debug" additivity="false">
<AppenderRef ref="grpc-log"/>
</logger>
<logger name="org.apache.skywalking.apm.dependencies" level="INFO"></logger>
<root level="info">
<AppenderRef ref="grpc-log"/>
</root>
</loggers>
|
阿里云 RocketMQ ONS 需要插件支持
Idea 启动配置
VM options:
1
| -javaagent:/Users/aoe/tools/apache-skywalking-apm-es7-8.7.0/agent/skywalking-agent.jar
|
Environment variables:
1
| SW_AGENT_NAME=web-api;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800;SW_AGENT_SPAN_LIMIT=2000;
|
测试依赖服务
RocketMQ
1
2
3
4
5
6
7
8
| # 启动
$ ./bin/mqnamesrv
# 自动创建Topic
$ ./bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true
# 创建一个名为"TPC_NORMAL" 的主题
$ ./mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t TPC_NORMAL
|
源码
结构说明
- common 公共包
- web-api Restful API 服务
- service-user 用户服务
- 使用 Redis
- 使用 MySQL
- 发送 RocketMQ 消息(阿里云的 ONS)
- service-statistics 统计服务
API
- http://localhost:9900/user/1
- http://localhost:9900/user/cache/1
- web-api、service-user、service-statistics 全链路
- 包含 Redis、MySQL、RocketMQ 的链路
相关视频
备注
RocketMQ 启动
1
2
3
4
| $ ./bin/mqnamesrv
# 自动创建 Topic
$ ./bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true
|