前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Skywalking是什么

Skywalking是什么

作者头像
Bug开发工程师
发布2019-10-14 10:45:55
3.1K0
发布2019-10-14 10:45:55
举报
文章被收录于专栏:码农沉思录码农沉思录

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

整个系统分为三部分:

  • Agent:采集tracing(调用链数据)和metric(指标)信息并上报;
  • OAP:收集tracing和metric信息通过analysis core模块将数据放入持久化容器中(ES、H2、Mysql等,默认是ES),并进行二次统计和监控告警;
  • webapp:前后端分离,前端负责呈现,并将查询请求封装为graphQL提交给后端,后端通过ribbon做负载均衡转发给OAP集群,再将查询结果渲染展示。

skywalking 源码环境搭建

  1. 安装 JDK ,现在至少都用 8 了吧,要是还用Java 6,表示同情
  2. 一般会先在GitHub上Fork一份,然后再 clone,这样方便自己写注释然后push,执行命令: git clone git@github.com:apache/skywalking.git
  3. 等待 clone 完成之后,导入 IDEA
  4. 打开命令行,cd 到 skywalking目录,执行命令: git checkout v6.2.0 切换到6.2.0版本。后面的源码分析文章都是基于v6.2.0分析的。
  5. 执行下面两条命令,初始化&更新子模块: git submodule init git submodule update

6. 编译,执行命令:

mvn clean package -DskipTests

7. Agent和OAP之间通信用了gRPC,其中的proto文件会生成一些Java代码。这里需要将这些目录设计成Generated Source Codes,涉及到的目录如下:

代码语言:javascript
复制
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的。

代码语言:javascript
复制
https://github.com/xxxlxy2008/dmp-skywalking-agent-examples

12. Demo 的添加 VM 参数:

代码语言:javascript
复制
-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的源码~~~溜了溜了~~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农沉思录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档