Skywalking 是一个分布式追踪(Trace)系统。除了 Skywalking 之外,比较出名的分布式追踪系统还有 Dapper、鹰眼、Pinpoint 、Zipkin等等。要是大家不了解 Trace 系统,可以先 Google,基本上都是根据 Google 的论文(http://bigbully.github.io/Dapper-translation/)以及 OpenTrace(https://wu-sheng.gitbooks.io/opentracing-io/content/)实现的,口水话不说了。
skywalking 架构
整个系统分为三部分:
skywalking 源码环境搭建
6. 编译,执行命令:
mvn clean package -DskipTests
7. Agent和OAP之间通信用了gRPC,其中的proto文件会生成一些Java代码。这里需要将这些目录设计成Generated Source Codes,涉及到的目录如下:
grpc-java and java folders in apm-protocol/apm-network/target/generated-sources/protobufgrpc-java and java folders in oap-server/server-core/target/generated-sources/protobufgrpc-java and java folders in oap-server/server-receiver-plugin/receiver-proto/target/generated-sources/protobufgrpc-java and java folders in oap-server/exporter/target/generated-sources/protobufgrpc-java and java folders in oap-server/server-configuration/grpc-configuration-sync/target/generated-sources/protobufantlr4 folder in oap-server/oal-grammar/target/generated-sources
8. 下载解压ES的过程不说了,这里用的是6.6版本。启动一个单节点的ES:
cd elasticsearch-6.6.1/bin/
./elasticsearch
9. 启动 OAP。找到 oap-server 模块中的 OAPServerStartUp 这个类,执行 main() 方法,日志无异常,且看到如下日志就表示执行成功:
Server started, host 0.0.0.0 listening on 11800
10. 接下来启动webapp。找到 apm-webapp 模块,这是个 Spring Boot 的 web项目,执行 ApplicationStartUp 中的 main() 方法,最后访问localhost:8080,看到 skywalking 的 UI 界面即为启动成功。
11. 最后启动Agent。这里新建一个与 skywalking 平级的项目,可以直接用这个Demo,我也是直接从别人那里Fork的。
https://github.com/xxxlxy2008/dmp-skywalking-agent-examples
12. Demo 的添加 VM 参数:
-javaagent:{skywalking_HOME}/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.application_code=hello-world-demo -Dskywalking.collector.backend_service=localhost:11800
13. 启动之后,请求Demo中的Controller,即可在skywalking的UI界面上看到该Demo对应的Trace数据。
好了,环境搭建好了,下一篇开始分析Agent的源码~~~溜了溜了~~~