首页 > 其他分享 >Skywalking介绍

Skywalking介绍

时间:2023-11-02 11:33:57浏览次数:36  
标签:23 探针 介绍 开源 jpeg Skywalking png

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


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


作者:乱七八糟谈技术
链接:https://www.jianshu.com/p/ffa7ddcda4ab
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:23,探针,介绍,开源,jpeg,Skywalking,png
From: https://www.cnblogs.com/gaoyanbing/p/17805025.html

相关文章

  • 使用亚马逊云科技大语言模型及搜索服务打造知识库:场景及组件介绍
     背景 知识库需求在各行各业中普遍存在,例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。为保证推荐系统的实效性和准确性,需要大量的数据/算法/软件工程师的人力投入和包括硬件在内的物力投入。其次,为了进一步......
  • 智能安全帽功能介绍_实时对讲/视频通话/RTK定位/气体检测
    智能安全帽是一款具备工业级高清晰度摄像头和4G/WIFI网络功能的创新产品。在传统安全帽的基础上,智能安全帽集成了摄像头、语音和通信主板等模块,提供高清视频采集、语音通讯、对讲和本地视频存储等功能。通过这种穿戴式设备,不仅可以实现数据采集和实时通信,还能真正解放现场操作......
  • SAP CDS view 里的 currency_conversion 功能介绍
    SAPABAPCDSView的currency_conversion函数是一种用于在CDS(CoreDataServices)视图中执行货币转换的功能。在SAP系统中,经常需要在不同货币之间进行转换,以便在报表和分析中展示一致的货币金额。currency_conversion函数允许在CDS视图中定义货币转换规则,以便在查询结果中将数值......
  • 【软硬件环境与工具使用】ProgIter介绍
    前言ProgiIter可以帮助你测量和打印迭代过程中的进度,区别于使用线程实现的tqdm,ProgIter是无线程的。选择不同的实现方式会产生不同的折中效果,严格来说,二者没有优劣之分。 参考1. GitHub-Erotemic/progiter:Printsloopprogress.Asingle-threadedalternativetotqdm.;2. p......
  • 国产蓝牙PHY6222支持BLE5.2参数特性介绍支持MESH/透传/定位
    特性:封装;QFN32工作电压范围1.8v至3.6v嵌入式buckdc-dc和ldos电池监视器关断电流0.3uA睡眠电流1uA4.7mA的接受电流为3.3V4.7mA的0db的发射功率为3.3vMCU:<60uA/MHz支持ble2mbps协议BLE5.1可兼容BLE5.0支持mash组网传输速率-90dBm125khz传输速率-103dBm温度:-40℃~125......
  • prometheus几种高可用架构介绍及联邦架构部署
    **问题背景:**单个prometheus性能到达瓶颈问题、多个prometheus-server数据汇总问题等**prometheus监控数据持久化**首先大家都知道prometheus是自带数据存储功能的。优点是简单易用,基本无需配置缺点是:1、存在数据无法长久保存(尤其是频繁变更的监控对象,监控对象变化,短时间内监控......
  • Docker介绍和安装
    Docker简介为什么Docker会出现?如何确保应用能够在不同环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无须重新编写代码和进行故障修复?答案就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案——————系统平滑......
  • ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
    ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑1.Elasticsearch产生背景大规模数据如何检索如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题:1)用什么数据库好?(mysql、oracle、mongodb、hbase…)2)如......
  • webapi 注解调试工具swaggo 介绍和使用
    swaggo介绍和使用介绍Swag是一个开源项目,用于web框架下接口调试和文档管理,可以将代码中的接口注释转换为文档格式,并提供界面在线调试接口的功能。项目地址:https://github.com/swaggo/swag目前项目可以支持的web框架gin,echo,buffalo,net/http,gorilla/mux,go-chi/chi,flamingo,fi......
  • NET6介绍及环境准备
    NET6介绍及环境准备https://www.cnblogs.com/michael999/p/16878990.html部署IIS6或7出现的问题总结https://www.cnblogs.com/xuezhu/p/17407826.html......