|
| 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