Skip to content

Commit 4000f66

Browse files
committed
2019-05-31
1 parent 8d6879d commit 4000f66

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
# SkyWalking 安装和配置
2+
3+
4+
## OpenAPM 相关
5+
6+
- 目前市场工具一览:<https://openapm.io/landscape>
7+
- 目前最活跃的标准:[OpenTracing](https://opentracing.io/)
8+
- 现在比较活跃的应该是:
9+
- [Jaeger](https://www.jaegertracing.io/)
10+
- [SkyWalking](https://skywalking.apache.org/)
11+
12+
13+
## 官网资料
14+
15+
- 当前时间:2019-05,最新版本:6.1
16+
- 官网:<https://skywalking.apache.org/>
17+
- 官网 Github:<https://github.com/apache/skywalking>
18+
- 官网文档:<https://github.com/apache/skywalking/blob/master/docs/README.md>
19+
- 官网下载:<http://skywalking.apache.org/downloads/>
20+
- 该网页显示:官网目前推荐的是通过源码构建出包,docker 镜像推荐
21+
- 源码构建方法:<https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md>
22+
- 这里简单抽取下核心内容:
23+
- 至少需要 jdk8 + maven3
24+
- 需要 Elasticsearch
25+
- Elasticsearch 和 SkyWalking 的所在服务器的时间必须一致
26+
- 看了下源码依赖的 Elasticsearch 依赖包,目前支持 5.x 和 6.x
27+
28+
## 基于 IntelliJ IDEA 直接运行、Debug
29+
30+
- 这里选择 IntelliJ IDEA 运行服务,方便我们 debug 了解 SkyWalking:<https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md#setup-your-intellij-idea>
31+
32+
```
33+
cd skywalking/
34+
35+
git submodule init
36+
37+
git submodule update
38+
39+
mvn clean package -DskipTests
40+
41+
因为需要设置 gRPC 的自动生成的代码目录,为源码目录,所以:
42+
手工将下面提到的目录下的 grpc-java 和 java 目录设置为 IntelliJ IDEA 的源码目录(Sources Root)
43+
/skywalking/apm-protocol/apm-network/target/generated-sources/protobuf
44+
/skywalking/oap-server/server-core/target/generated-sources/protobuf
45+
/skywalking/oap-server/server-receiver-plugin/receiver-proto/target/generated-sources/protobuf
46+
/skywalking/oap-server/exporter/target/generated-sources/protobuf
47+
48+
49+
手工将下面提到的目录下的 antlr4 目录设置为 IntelliJ IDEA 的源码目录(Sources Root)
50+
/skywalking/oap-server/generate-tool-grammar/target/generated-sources
51+
52+
手工将下面提到的目录下的 oal 目录设置为 IntelliJ IDEA 的源码目录(Sources Root)
53+
/skywalking/oap-server/generated-analysis/target/generated-sources
54+
55+
```
56+
57+
#### 启动 Server 项目
58+
59+
- 现在可以通过 IntelliJ IDEA 启动服务:
60+
- 编辑 server 配置:`/skywalking/oap-server/server-starter/src/main/resources/application.yml`
61+
- 里面有关 Elasticsearch 连接信息的配置,你可以根据自己的情况进行配置。
62+
- 启动类:`/skywalking/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/OAPServerStartUp.java`
63+
- 第一次启动会创建 540 个左右的 Elasticsearch 索引库,会花点时间。
64+
65+
66+
#### 启动 UI 项目
67+
68+
69+
- 现在启动 UI 项目,找到:`/skywalking/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/ApplicationStartUp.java`
70+
- 访问 UI 地址:<http://127.0.0.1:8080>
71+
- 用户名:admin
72+
- 密码:admin
73+
74+
75+
## Java Agent(探针)
76+
77+
78+
#### IntelliJ IDEA 项目调试
79+
80+
- 前面构建服务的时候记得构建出 jar 包出来,这里要用到
81+
- 自己的 Spring Boot 项目
82+
- 引包:
83+
84+
```
85+
<!--SkyWalking start-->
86+
<!-- https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace -->
87+
<dependency>
88+
<groupId>org.apache.skywalking</groupId>
89+
<artifactId>apm-toolkit-trace</artifactId>
90+
<version>6.1.0</version>
91+
</dependency>
92+
<!--SkyWalking end-->
93+
```
94+
95+
- 常用注解:
96+
97+
98+
```
99+
@Trace
100+
@ApiOperation(tags = {"用户系统管理->用户管理->用户列表"}, value = "查询所有用户列表", notes = "查询所有用户列表")
101+
@RequestMapping(value = "/list", method = RequestMethod.GET)
102+
@ResponseBody
103+
public List<SysUser> list() {
104+
List<SysUser> sysUserList = sysUserService.findAll();
105+
ActiveSpan.tag("一共有数据:", sysUserList.size() + "条");
106+
log.info("当前 traceId={}", TraceContext.traceId());
107+
return sysUserList;
108+
}
109+
110+
```
111+
112+
- 更多注解的使用:<https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Application-toolkit-trace.md>
113+
114+
- 你的 demo 项目在 IntelliJ IDEA 启动的时候加上 VM 参数上设置:
115+
116+
```
117+
-javaagent:/你自己的路径/skywalking-agent.jar -Dskywalking.agent.application_code=my_app_001 -Dskywalking.collector.backend_service=localhost:11800
118+
```
119+
120+
- 默认 11800 是 gRPC 的接收接口
121+
- 你自己构建出来的 jar 路径一般是:`/skywalking/apm-sniffer/apm-agent/target/skywalking-agent.jar`
122+
- 然后请求你带有 Trace 的 Controller,然后去 UI 界面看统计情况
123+
124+
#### jar 包方式
125+
126+
- 你的 Spring Boot jar 包 run 之前加上 VM 参数:
127+
128+
```
129+
java -javaagent:/你自己的路径/skywalking-agent.jar -Dskywalking.collector.backend_service=localhost:11800 -Dskywalking.agent.application_code=my_app_002 -jar my-project-1.0-SNAPSHOT.jar
130+
```
131+
132+
133+
#### Docker 方式
134+
135+
- Dockerfile
136+
137+
```
138+
FROM openjdk:8-jre-alpine
139+
140+
LABEL maintainer="tanjian20150101@gmail.com"
141+
142+
ENV SW_APPLICATION_CODE=java-agent-demo \
143+
SW_COLLECTOR_SERVERS=localhost:11800
144+
145+
COPY skywalking-agent /apache-skywalking-apm-incubating/agent
146+
147+
COPY target/sky-demo-1.0-SNAPSHOT.jar /demo.jar
148+
149+
ENTRYPOINT java -javaagent:/apache-skywalking-apm-incubating/agent/skywalking-agent.jar -Dskywalking.collector.backend_service=${SW_COLLECTOR_SERVERS} \
150+
-Dskywalking.agent.application_code=${SW_APPLICATION_CODE} -jar /demo.jar
151+
```
152+
153+
- 构建镜像:
154+
155+
```
156+
docker build -t hello-demo .
157+
docker run -p 10101:10101 -e SW_APPLICATION_CODE=hello-world-demo-005 -e SW_COLLECTOR_SERVERS=127.10.0.2:11800 hello-demo
158+
```
159+
160+
161+
162+
## 构建 jar 部署在服务器
163+
164+
- 如果想直接打包出 jar 部署与服务器,只需要这样:<https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md#build-from-github>
165+
166+
```
167+
cd skywalking/
168+
169+
git submodule init
170+
171+
git submodule update
172+
173+
mvn clean package -DskipTests
174+
```
175+
176+
177+
## 资料
178+
179+
- <https://skywalking.apache.org/zh/blog/2018-12-21-SkyWalking-source-code-read.html>
180+
- <https://github.com/JaredTan95/skywalking-tutorials>
181+
- <https://www.bilibili.com/video/av40796154?from=search&seid=8779011383117018227>
182+
- <>
183+
- <>
184+
- <>
185+
- <>
186+
- <>
187+
188+
189+
190+
191+
192+

0 commit comments

Comments
 (0)