Skywalking是什么

Stella981
• 阅读 673

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

Skywalking是什么

Skywalking是什么

整个系统分为三部分:

  • Agent:采集tracing(调用链数据)和metric(指标)信息并上报;

  • OAP:收集tracing和metric信息通过analysis core模块将数据放入持久化容器中(ES、H2、Mysql等,默认是ES),并进行二次统计和监控告警;

  • webapp:前后端分离,前端负责呈现,并将查询请求封装为graphQL提交给后端,后端通过ribbon做负载均衡转发给OAP集群,再将查询结果渲染展示。

skywalking 源码环境搭建

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,涉及到的目录如下:

grpc-java and java folders in apm-protocol/apm-network/target/generated-sources/protobuf

Skywalking是什么

  1. 下载解压ES的过程不说了,这里用的是6.6版本。启动一个单节点的ES:

cd elasticsearch-6.6.1/bin/

./elasticsearch

  1. 启动 OAP。找到 oap-server 模块中的 OAPServerStartUp 这个类,执行 main() 方法,日志无异常,且看到如下日志就表示执行成功:

Server started, host 0.0.0.0 listening on 11800

  1. 接下来启动webapp。找到 apm-webapp 模块,这是个 Spring Boot 的 web项目,执行 ApplicationStartUp  中的 main() 方法,最后访问localhost:8080,看到 skywalking 的 UI 界面即为启动成功。

  2. 最后启动Agent。这里新建一个与 skywalking 平级的项目,可以直接用这个Demo,我也是直接从别人那里Fork的。

https://github.com/xxxlxy2008/dmp-skywalking-agent-examples
  1. Demo 的添加 VM 参数:
-javaagent:{skywalking_HOME}/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.application_code=hello-world-demo -Dskywalking.collector.backend_service=localhost:11800
  1. 启动之后,请求Demo中的Controller,即可在skywalking的UI界面上看到该Demo对应的Trace数据。

好了,环境搭建好了,下一篇开始分析Agent的源码~~~溜了溜了~~~

本文分享自微信公众号 - 码农沉思录(code-thinker)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Souleigh ✨ Souleigh ✨
2年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
2年前
SkyWalking链路监控(一):SkyWalking快速搭建
简介当分布式系统服务比较多,特别是微服务,出现故障就很难排查。所以需要借助APM系统进行排查(ApplicationPerformanceManagement,即应用性能管理),SkyWalking是APM系统的一种,类似的产品还有CAT、Zipkin、Pinpoint。SkyWalking和Pinpoint相比其他系统,做到了无侵入性
Stella981 Stella981
2年前
Linux下安装 SkyWalking 分布式追踪系统
Linux下安装SkyWalking分布式追踪系统完全无代码入侵【落地】背景:由于现系统拆分为了分布式系统,对于线上查看错误日志有点费劲方案:部署搭建SkyWalking的分布式追踪系统一、SkyWalking简介
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
javalover123 javalover123
8个月前
轻量级分布式日志追踪-Tlog快速入门
公司目前还没有上SkyWalking、Pinpoint等分布式追踪系统,所以先用个轻量级的吧。Tlog只生成TraceId写入日志文件,没有收集、存储、查询,所以轻量
Python进阶者 Python进阶者
1个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这