[转帖]Skywalking介绍

skywalking,介绍 · 浏览次数 : 0

小编点评

**存储系统** **概述** 存储系统是 Skywalking 数据存储和管理系统,负责将来自 UI 的监控数据存储在数据库中。系统提供多种机制可选支持告警,允许用户以图表形式查看和管理 Skywalking 数据。 **架构** 存储系统由以下主要部分组成: * UI * 数据库 * 告警系统 **UI** UI 是一个基于接口高度定制化的 Web 系统,用户可以通过 UI 可视化查看和管理 Skywalking 数据。系统提供以下功能: * 数据图表 * 告警通知 * 数据分析 **数据库** 存储系统使用一个数据库来存储 Skywalking 数据。数据库支持多种数据类型,可以存储各种类型的数据,包括: * 监控指标 * 异常日志 * 数据点 **告警系统** 告警系统负责处理监控数据,并将其发送给用户。系统支持多种告警模式,例如: * 阈值告警 * 时间告警 * 异常告警 **数据分析** Skywalking 提供一个数据分析功能,可以分析监控指标之间的关系拓扑图。系统可用于生成以下类型的数据分析报告: * 组件调用关系拓扑图 * 功能组件、模块和方法性能报告 **集成** 存储系统可以与各种其他系统集成,例如: * UI * 数据库 * 告警系统 * 数据分析工具 **技术** 存储系统使用以下技术: * UI:React * 数据库:PostgreSQL * 告警系统:Kafka * 数据分析:Apache Spark **优势** * 可视化数据 * 多平台支持 * 告警机制 * 数据分析功能

正文

https://www.jianshu.com/p/ffa7ddcda4ab

 

微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。


 
Screen Shot 2022-01-23 at 12.48.19 PM.png

今天主要介绍Skywalking,数据链路追踪,主要的资料来源于网上的教程。

链路追踪介绍

对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一系列问题。

  • 如何串联整个调用链路,快速定位问题?
  • 如何澄清各个微服务之间的依赖关系?
  • 如何进行各个微服务接口的性能分析?
  • 如何追踪各个业务流程的调用处理顺序?

Skywalking介绍

Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

链路追踪框架对比

目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的

功能和技术方案对比

  • Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。
  • 一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
  • Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
  • CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。


     
    Screen Shot 2022-01-23 at 1.19.18 PM.png

性能对比

模拟了三种并发用户,500,750,1000,使用JMeter测试,每个线程发送30个请求,设置间隔时间为10ms,使用采用频率为1,即100%。下面是性能测试报告:


 
Screen Shot 2022-01-23 at 1.29.45 PM.png

从上表可以看出,在三种链路监控组件中,skywalking探针对吞吐量影响最小,zipkin对吞吐量影响适中,pinpoint的探针对吞吐量影响最大。对于内存和cpu的使用,都差不多,相差在10%之内。

Skywalking介绍

Skywalking架构

SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面。


 
image.png
 
image.png
  • 探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
  • 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
  • 存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
  • UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

Skywalking功能介绍

  • 多种监控手段,可以通过语言探针和service mesh获得监控的数据
  • 支持多重语言的自动探针,包括JAVA, .NET Core和NodeJS
  • 轻量高效,无需大数据平台和大量的服务器资源
  • 模块化,UI ,存储,集群管理都有多种机制可选
  • 支持告警
  • 优秀的可视化解决方案

环境搭建

 
Screen Shot 2022-01-23 at 2.49.08 PM.png
  • Skywalking agent和业务端绑定在一起,负责收集各种监控数据
  • Skywalking oapservice是负责处理监控数据,接受agent的数据并存储在数据库中,接受来自UI的请求,查询监控数据。
  • Skywalking UI提供给用户,展现各种监控数据和告警。

Skywalking目录结构

 
Screen Shot 2022-01-23 at 2.57.49 PM.png

Skywalking告警

 
Screen Shot 2022-01-23 at 3.01.05 PM.png

Skywalking UI

 
image.png
 
Screen Shot 2022-01-23 at 5.27.51 PM.png

Skywalking数据下转

Skywalking提供了详细的数据分析功能,首先能分析出各个组件的调用关系拓扑图,然后能从拓扑图下转到每个功能组件,模块,方法的详细性能,提供整个数据链路追踪。如下示意图,


 
WechatIMG8.jpeg
 
WechatIMG7.jpeg
 
WechatIMG6.jpeg
 
WechatIMG5.jpeg

 
WechatIMG4.jpeg

 
WechatIMG3.jpeg

 
WechatIMG2.jpeg

Skywalking log集成

Skywalking 可以与日志功能集成,将模块的日志上传到中心进行集中查看。
有logback,log4j等对应的jar来收集各个模块的日志。比如集成logback,配置方式如下:

引入jar
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.4.0</version>
</dependency>
配置logback
<configuration>  
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
    <! -- 配置异步记录 AsyncAppender -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <neverBlock>true</neverBlock>
        <appender-ref ref="STDOUT"/>
    </appender>
    <!-- skywalking grpc 日志收集 8.4.0版本开始支持 -->
    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>

    <!--系统操作日志-->
    <root level="DEBUG">  
        <appender-ref ref="STDOUT"/> 
        <appender-ref ref="ASYNC"/> 
        <appender-ref ref="grpc-log"/>
    </root>
</configuration>
配置日志插件
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

主要是配合Skywalking的远程地址和端口

参考文章

这篇教程主要的内容来自于以下:

  • 图灵学院培训教材(徐庶老师)
  • 吴晟老师的演讲稿
  • Skywalking官网

与[转帖]Skywalking介绍相似的内容:

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab/ 1.1 2022.01.23 17:23* 字数 1733 阅读 129682评论 0喜欢 16 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的

[转帖]Skywalking介绍

https://www.jianshu.com/p/ffa7ddcda4ab 微服务架构已经是一个很通用的系统架构,常见的技术栈如下图所示,这张架构图基本涵括了当前微服务体系下的各种技术栈,可能不同的技术栈有不同的开源实现。 Screen Shot 2022-01-23 at 12.48.19 PM

[转帖]基于 Skywalking 部署应用性能监控

https://www.jianshu.com/p/50627b9ab0be 今天我们就着重讲一讲如何基于 Skywalking 来快速搭建一套应用性能监控平台 walkingfunny.com.png 一、Skywaling 介绍 Skywalking是由国内开源爱好者吴晟开源并提交到Apache

[转帖]springboot中使用skywalking实现日志追踪

文章目录 SkyWalking分布式追踪系统介绍主要架构 环境引入依赖配置Log4j2下载编译好的8.7.0版本包使用探针实现日志追踪启动脚本启动Java服务访问服务 使用UI切换存储方式 SkyWalking分布式追踪系统 介绍 Skywalking是一个国产的开源框架,2015年有吴晟个人开源,

[转帖]Skywalking学习及整合springboot

目录 1. Skywalking概述 2. Skywalking主要功能 3. Skywalking主要特性 4. Skywalking架构简介 5. Spring Cloud与Skywalking实战 5.1 Skywalking部署构建 5.3 Spring Cloud整合Skywalking实

[转帖]skywalking配置nacos集群模式

版本: nameversionnacos1.1.0skywalking6.2.0elasticsearch6.3.2 es集群管理工具 cerebro-0.8.3 https://github.com/lmenezes/cerebro 前置: es、nacos至少各有一个 1 开始: 1.将 apa

[转帖]SkyWalking集成logback

1.引入skywalking的jar包,导入的包和agent版本一致 org.apache.skywalking apm-toolkit-trace 8.12.0

[转帖]使用 SkyWalking 监控 MySQL(一)工具与方案

https://my.oschina.net/GreatSQL/blog/5567471 * GreatSQL 社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 注:本文适用于 SkyWalking v9.1.0。 SkyWalking 简介 SkyWalking 是一个分布式系统的应用

[转帖]初识SkyWalking

https://zhuanlan.zhihu.com/p/361579294 一、SkyWalking 是什么? 一个开源的可观测平台,用于从服务和云原生基础设施收集,分析, 聚合及可视化数据。 SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至横跨多个云平台。SkyWalkin