SkyWalking链路追踪-技术文档首页

SkyWalking 文档中文版(社区提供) (skyapm.github.io)https://skyapm.github.io/document-cn-translation-of-skywalking/

SkyWalking-基本概念

SkyWalking链路追踪是一个用于分布式系统的性能监控工具,它帮助开发人员了解系统中各组件之间的调用关系和性能信息。通过追踪每个请求从一个组件到另一个组件的路径,SkyWalking可以提供实时的链路信息,包括请求的路径、耗时和错误信息等。

这个工具的基本概念是通过在分布式系统中的各个组件中插入Agent来追踪请求。这些Agent可以通过自动和手动的方式添加到各个组件中。一旦Agent被添加,它们会自动收集和发送关于请求的信息,然后将这些信息汇总到一个集中的位置进行分析和可视化展示。

SkyWalking链路追踪还提供了一些其他功能,例如性能指标的收集和展示、错误告警、拓展性和可扩展性等。这使得开发人员能够更好地理解系统的运行情况,发现潜在的性能问题,并及时进行调优和修复。

总的来说,SkyWalking链路追踪是一个有助于开发人员监控和优化分布式系统性能的工具,它提供了实时的链路信息和可视化展示,有助于提高系统的可靠性和性能。

SkyWalking-架构体系

SkyWalking的架构体系由以下几个核心组件组成:

  1. Collector(收集器):Collector是SkyWalking的核心组件之一,负责接收来自各个Agent的追踪数据,并将其存储到数据存储器中。Collector提供了一个统一的接口,通过这个接口可以获取链路追踪数据,以便进行后续的分析和展示。

  2. Storage(存储器):Storage负责接收Collector送来的追踪数据,并将其持久化存储。存储器可以使用各种类型的数据库,如关系型数据库、NoSQL数据库或分布式存储系统等。

  3. UI(用户界面):UI是SkyWalking提供的可视化界面,用于展示追踪数据的各种指标和图表。开发人员可以通过UI实时监控系统的性能,并查看请求的路径、耗时和异常信息等。

  4. Agent(代理):Agent是SkyWalking在分布式系统中用于追踪请求的关键组件。Agent被插入到各个组件中,通过自动或手动的方式与这些组件集成。Agent负责收集各个组件的性能指标和追踪数据,并将其发送给Collector进行处理。

  5. Probe/Instrumentation(探针/仪表):Probe/Instrumentation是用于追踪应用程序内部方法调用和性能的组件。通过在代码中插入探针或仪表,开发人员可以在应用程序内部收集更详细的性能指标,并将其发送给Agent进行处理。

这些组件相互协作,构成了SkyWalking的架构体系。它们共同工作,帮助开发人员实现对分布式系统的性能监控和优化。

工作原理

分布式链路追踪系统,链路的追踪大体流程如下:

  1. Agent 收集 Trace 数据。
  2. Agent 发送 Trace 数据给 Collector 。
  3. Collector 接收 Trace 数据。
  4. Collector 存储 Trace 数据到存储器,例如,数据库

解决问题

  • 服务链路过长或过于复杂,无法快速并准确的定位问题。
  • 业务链处理时间过长,无法确定是哪个环节存在的问题。
  • 如何梳理服务与服务之间的依赖关系?
  • 如何快速发现定位问题并找到对应的错误信息?

分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

链路追踪的主要功能:

  • 故障快速定位:可以通过调用链结合业务日志快速定位错误信息。
  • 链路性能可视化:各个阶段链路耗时,服务依赖关系可以通过可视化界面展示出来。
  • 链路分析:通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景。

该方案技术点

(1)Trace

Trace的含义比较直观,就是链路,指一个请求经过所有服务的路径,服务间经过的局部链路构成了一条完整的链路,其中每一条局部链路都用一个全局唯一的traceid来标识。

SkyWalking链路追踪中Trace概念以及Trace与span的关系_艺舟先生的博客-CSDN博客

(2)Span

Span用来表示上下层的父子关系,同一层级parent id相同,span id不同,span id从小到大表示请求的顺序。通过事先在日志中埋点,找出相同traceId的日志,再加上parent id和span id就可以将一条完整的请求调用链串联起来。

SkyWalking链路追踪中span全解_艺舟先生的博客-CSDN博客

(3)采样

由于每一个请求都会生成一个链路,为了减少性能消耗,避免存储资源的浪费,采集器并不会上报所有的span数据,而是使用采样的方式。举个例子,每秒有1000个请求访问系统,如果设置采样率为1/1000,那么只会上报一个请求到存储端。

SkyWalking链路追踪-Collector(收集器)_艺舟先生的博客-CSDN博客

SkyWalking链路追踪-Agent (代理人)_艺舟先生的博客-CSDN博客

(4)存储

链路中的span数据经过收集和上报后会集中存储在一个地方,常用的存储有Mysql,ElasticSearch, HBase, In-memory DB等。

配置SkyWalking的存储方式需要根据您的具体需求和系统架构来选择适合的存储方式。以下是一些常用的存储方式和配置方法:

  1. 存储到数据库:您可以将Trace数据存储到关系型数据库(如MySQL)或文档型数据库(如Elasticsearch)中。配置存储到数据库时,您需要提供数据库的连接信息和认证信息,并创建相应的表或索引用于存储Trace数据。您可以在Collector的配置文件中进行相应的参数设置。

  2. 存储到文件系统:您可以将Trace数据存储到本地文件系统或分布式文件系统(如Hadoop HDFS)中。配置存储到文件系统时,您需要指定存储路径和文件命名规则等配置参数。Collector会将Trace数据按照指定的格式写入到文件中,以供后续查询和分析。

  3. 存储到消息队列:您可以将Trace数据存储到消息队列(如Kafka、RabbitMQ)中。配置存储到消息队列时,您需要提供消息队列的连接信息和授权信息,并指定相应的主题或队列名称。Collector将Trace数据发送到消息队列中,供后续进行消费和处理。

  4. 存储到内存:如果您的系统对实时性要求很高,可以选择将Trace数据存储在内存中。Collector可以使用缓存、内存数据库等方式将Trace数据存储在内存中,并提供相应的查询接口或服务。这样,您可以在内存中进行高效的数据访问和查询。

同类型方案对比

目前有四种主流的链路追踪方案。

Cat优缺点

深度剖析开源分布式监控CAT - 美团技术团队

 Cat是一种常见的链路追踪系统,它具有以下优点和缺点,以及适用的场景:

优点:

  1. 实时性:Cat能够提供实时、低延迟的链路追踪数据,方便开发人员及时了解应用程序的运行情况。

  2. 轻量级:Cat采用了较轻量级的设计,对应用程序的性能影响较小,能够在生产环境中高效运行。

  3. 数据可视化:Cat提供了直观、易懂的可视化界面,能够以图表和图形的形式展示应用程序的调用链路、性能指标等信息。

  4. 集成性:Cat提供了丰富的API和语言支持,可以方便地集成到各种主流的编程语言和框架中,适用于多种应用环境。

缺点:

  1. 扩展性:Cat在处理大规模系统和高并发场景下的扩展性较差,可能会面临一些性能和稳定性的挑战。

  2. 功能有限:相比较其他链路追踪系统(如SkyWalking、Zipkin等),Cat的功能相对有限,更偏重于性能监测和数据展示。

适用场景:

  1. 性能监测和调优:Cat适用于对应用程序的性能进行监测和调优的场景。它能够提供实时的性能指标和调用链路信息,方便开发人员定位瓶颈和优化性能。

  2. 分布式系统:当应用程序拥有复杂的分布式架构和调用链路时,Cat可以帮助了解分布式系统的运行状态和调用关系,方便进行故障定位和监测。

  3. 实时监测:Cat对实时性要求较高,适用于需要实时监测和追踪应用程序的场景,能够及时发现问题并进行相应的处理。

Zipkin优缺点

OpenZipkin · A distributed tracing system

Zipkin是另一种常见的链路追踪系统,它具有以下优点和缺点,以及适用的场景:

优点:

  1. 分布式支持:Zipkin专注于分布式系统的链路追踪,能够准确地捕获和追踪分布式系统中各个服务之间的调用关系和性能指标。

  2. 协议和语言支持:Zipkin支持多种通信协议和编程语言,能够轻松集成到各种不同的服务架构中,例如HTTP、RPC等,并支持Java、Python、Go等多种编程语言。

  3. 高可用性:Zipkin的架构支持多节点部署,可以实现高可用性和容错性。多个Zipkin Collector实例之间可以进行数据同步和负载均衡,确保数据的可靠性和性能。

  4. 数据可视化:Zipkin提供直观的可视化界面,展示应用程序的调用链路、性能指标和异常情况。通过图表、时间线等方式,开发人员可以方便地了解应用程序的运行情况。

缺点:

  1. 数据存储:Zipkin默认使用的存储方式是基于关系型数据库,对一些大规模和高并发的系统可能会面临存储性能和扩展性的挑战。

  2. 配置和部署复杂性:相对于其他链路追踪系统,Zipkin的配置和部署相对复杂,需要一定的技术要求和经验才能正确配置和部署。

适用场景:

  1. 分布式系统:由于Zipkin专注于分布式系统的链路追踪,因此适用于拥有复杂的分布式架构和调用链路的应用程序。它能够帮助分析分布式系统中各个服务之间的调用关系和性能瓶颈。

  2. 跨语言和跨平台:如果您的应用程序由多个不同编程语言和平台组成,Zipkin能够提供跨语言和跨平台的链路追踪功能,方便对整个系统的性能进行监测和优化。

  3. 高可用和容错性:当系统对可用性和容错性要求较高时,Zipkin的多节点部署架构可以满足这些需求。多个Zipkin Collector实例可以共同接收和处理Trace数据,以提高系统的可靠性和性能。

SkyWalking优缺点

Apache SkyWalking

 SkyWalking是一种功能强大的开源链路追踪系统,它具有以下优点和缺点,并且适用于以下场景:

优点:

  1. 分布式支持:SkyWalking专注于分布式系统的链路追踪和性能监测,能够准确捕获和追踪分布式系统中各个服务之间的调用关系和性能指标。

  2. 数据采集和监测丰富性:SkyWalking支持多种数据采集方式,如自动代理、手动埋点、服务网格等,能够灵活地适应不同的应用场景。此外,SkyWalking还提供了丰富的可视化和监测功能,包括事务拓扑图、性能指标图表、报警等,方便开发人员进行系统监测和故障排查。

  3. 跨语言和跨平台:SkyWalking支持多种主流编程语言和平台,如Java、.NET、Node.js、Golang等,适用于各种不同的应用程序。通过SkyWalking的插件和扩展机制,可以轻松扩展和集成到不同的系统中。

  4. 存储和查询扩展性:SkyWalking通过支持多种存储后端,如Elasticsearch、MongoDB、MySQL等,以及通过分布式追踪数据压缩和数据分区等机制,能够支持大规模系统的链路追踪和性能监测。

缺点:

  1. 配置和部署复杂性:相对于其他链路追踪系统,SkyWalking在配置和部署方面可能需要更多的技术要求和经验。由于其功能强大和丰富性,需要花费一定的时间和精力来正确配置和部署。

  2. 学习曲线:对于新的用户来说,SkyWalking可能需要一定的学习曲线。了解其各种特性和功能需要耐心地学习和实践,并熟悉相关文档和资源。

适用场景:

  1. 大规模系统:SkyWalking适用于大规模分布式系统的链路追踪和性能监测。它能够提供实时、准确的调用关系和性能指标,方便定位和解决系统中的性能问题。

  2. 跨语言和跨平台:如果您的应用程序由多个不同编程语言和平台组成,SkyWalking能够提供跨语言和跨平台的链路追踪和性能监测功能,方便对整个系统的性能进行监测和优化。

  3. 数据存储和查询需求:当您对链路追踪数据的存储和查询需求较高时,SkyWalking能够提供丰富的存储和查询扩展性,以满足大规模系统的需求。

需要注意的是,选择适合的链路追踪系统需要根据您的具体需求和系统架构进行评估。如果您需要强大的分布式支持、丰富的数据采集和监测能力以及扩展性高的存储和查询功能,SkyWalking可能是一个很好的选择。

Pinpoint优缺点

Pinpoint首页、文档和下载 - 应用性能管理工具 - OSCHINA - 中文开源技术交流社区

Pinpoint是一种面向Java应用程序的分布式链路追踪系统,它具有以下优点和缺点,并且适用于以下场景:

优点:

  1. 对Java应用程序友好:Pinpoint专注于Java应用程序的链路追踪,提供了丰富的Java Agent和插件,能够轻松集成到Java应用程序中,并提供准确的调用链和性能指标。

  2. 实时监测和调优:Pinpoint能够实时监测和分析Java应用程序的调用链和性能指标,方便开发人员及时发现问题并进行调优。

  3. 数据可视化和分析:Pinpoint提供直观的可视化界面和强大的分析功能,能够以图表、时间线等形式展示应用程序的调用关系和性能数据,并提供多种分析工具和报告。

  4. 轻量级和低侵入性:Pinpoint的Agent对应用程序性能的影响较小,不会对应用程序的运行造成明显的性能损失,并且可以在生产环境中高效运行。

缺点:

  1. 适用范围有限:由于Pinpoint专注于Java应用程序,因此对其他编程语言和平台的支持有限,不适用于跨语言和跨平台的应用程序。

  2. 功能相对有限:相比较其他分布式链路追踪系统(如SkyWalking、Zipkin等),Pinpoint的功能相对有限,更偏重于Java应用程序的监测和调优。

适用场景:

  1. Java应用程序监测和调优:Pinpoint适用于需要对Java应用程序的调用链和性能进行监测和调优的场景。它能够提供实时的性能指标和调用链信息,方便开发人员定位性能瓶颈和优化应用程序。

  2. 实时监测和追踪:当您需要实时监测和追踪Java应用程序的运行状态和调用关系时,Pinpoint可以帮助您及时发现问题并进行相应的处理。

  3. Java应用程序分析和优化:Pinpoint提供强大的数据分析和报告功能,适用于对Java应用程序进行深入分析和优化的场景。

虽然Pinpoint在跨语言和功能丰富性方面有一定限制,但对于Java应用程序的监测和调优是一个不错的选择。在选择链路追踪系统时,请根据具体需求和系统架构进行评估,以找到最适合您的解决方案。

总结方案选用

选择适合的链路追踪系统需要根据以下要素进行评估:

  1. 需求和目标:明确您对链路追踪系统的需求,如是否需要分布式支持、跨语言能力、实时监测等。确定您希望通过链路追踪系统实现的目标,如性能优化、故障排查等。

  2. 系统架构:了解您的应用程序的架构,包括是否为分布式系统、所涉及的编程语言和平台等。根据系统的特点,选择支持相应需求和平台的链路追踪系统。

  3. 功能和扩展性:评估不同链路追踪系统的功能和扩展性。考虑是否需要特定的功能,如实时监测、数据可视化、报警等。同时,了解系统未来的扩展需求,确保所选系统能够满足这些需求。

  4. 配置和部署复杂性:考虑配置和部署链路追踪系统的复杂性。一些系统可能需要更多的技术要求和经验来正确配置和部署。确保您有足够的资源和能力来有效地使用所选系统。

  5. 社区和支持:查看链路追踪系统的社区活跃程度、文档和支持资源。了解系统的更新频率、Bug修复和功能改进的速度,以确保能够得到及时帮助和支持。

综合评估这些要素后,您可以选择适合您需求的链路追踪系统。例如,如果您的系统是分布式的、需要跨语言能力和强大的数据可视化,可考虑使用SkyWalking。如果您的系统是Java应用程序,需求较为简单,可考虑使用Pinpoint。选择一个适合的链路追踪系统将帮助您更好地监测、诊断和优化您的系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工程安全监测无线振弦采集仪在建筑物的应用分析

工程安全监测无线振弦采集仪在建筑物的应用分析 工程安全监测无线振弦采集仪是一种在建筑物中应用的重要设备。它通过无线采集建筑物内部的振动信息,对建筑物的安全性进行监测和评估,为建筑物的施工和使用提供了可靠的技术支持。本文将详细介绍工程安全…

ElasticSearch基础篇-安装与基本操作

ElasticSearch基础篇 安装 官网 下载地址 下载完成后对文件进行解压,项目结构如下 进入bin目录点击elasticsearch.bat启动服务 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为浏览器访问的 http协议 RESTful 端口 打开浏览器&#…

力扣热门100题之矩阵置0【中等】

题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff…

C++ - list介绍 和 list的模拟实现

list介绍 list 是一个支持在常数范围内,任意位置进行插入删除的序列式容器,且这个容器可以前后双向迭代。我们可以把 list 理解为 双向循环链表的结构。 于其他结构的容器相比,list在 任意位置进行插入和函数的效率要高很多;而li…

SWF格式视频怎么转换成AVI格式?简单的转换方法分享

当你想要在不同的设备上播放视频时,将SWF格式视频转换成AVI格式是非常有用的。因为SWF格式通常只能在特定的软件或网页上播放,而AVI格式则可以在更广泛的设备上播放,包括智能手机,平板电脑和电视机等。那么我们怎么将SWF转换成AVI…

AI学习笔记四:yolov5训练自己的数据集

若该文为原创文章,转载请注明原文出处。 一般情况下,大部分人的电脑都是没有cpu的,cpu也是可以训练的,但花费的时间太长,实际200张图片,使用CPU训练300轮花了3天,本章记录使用云服务器来训练自…

SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》

首先了解一下单机环境 第一步,搭建一个 Elasticsearch 服务。第二步,下载 SkyWalking 软件包。第三步,搭建一个 SkyWalking OAP 服务。第四步,启动一个 Spring Boot 应用,并配置 SkyWalking Agent。第五步,…

Docker Compose 容器编排

Docker compose Docker compose 实现单机容器集群编排管理(使用一个模板文件定义多个应用容器的启动参数和依赖关系,并使用docker compose来根据这个模板文件的配置来启动容器) 通俗来说就是把之前的多条docker run启动容器命令 转换为docker…

【小白学编程5】我的房子在哪儿?理解类型和变量

我的房子在哪儿? 理解类型和变量 - 《小白学编程》系列第五讲 - 《小白学编程》系列课程过半,为满足更多同学的时间需求,课程直播时间改为了晚上八点。 昨晚八点准时开始课程的第五讲,其主题为:“我的房子在哪儿?理解…

学习 C语言第二天 :C语言数据类型和变量(下)

目录: 1.变量的介绍以及存储 2.算术操作符、赋值操作符、单目操作符 3.scanf和printf的介绍 1.变量的介绍以及存储 1.1.变量的创建 了解了什么是类型了,类型是用来创建变量的。 变量是什么呢?在C语言当中不经常变的量称为常量,经常…

【雕爷学编程】Arduino动手做(95)---GY9960手势传感器模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

直播平台源码开发提高直播质量的关键:视频编码和解码技术

在互联网日益发展的今天,直播平台成为人们互联网生活的主力军,直播平台功能的多样化与智能化使我们的生活有了极大地改变,比如短视频功能,它让我们既可以随时随地去发布自己所拍摄到的东西让世界各地的用户看到,也能让…

Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

最近想写写C,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C轻量级开发环境。 具体搭建步骤 1. 下载并安…

国产数据库-内核特性-gbase8a智能索引

国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库,有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一,包含基于列的统计信息,可以有效过滤数据,大幅降低数据库磁盘IO&#…

数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 算法概述 图示 快速排序和归并排序有一些相似,都是用到了分而治之的思想: 伪代码 通过初步的认识,我们能够知道快速排序算法最好的情况应该是: 每…

TCP协议如何实现可靠传输

TCP最主要的特点 TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。 TCP最主要的特点: TCP是面向连接的输出层协议 每一条…

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物,从在线银行到在线医疗,Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭…

OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.13 的环境中验证 文章目录 技术架构部署 Distributed Tracing 运行环境安装测试应用并进行观测跟踪参考 说明: 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在…

WPF快速开发(2):图标库知识点

文章目录 前言知识点windows资源Style:样式Setter:属性继承关系 Trigger:触发器 WPF层级划分数据绑定声明数据上下文绑定数据模板 前言 图标资源下载 iconfont 知识点 windows资源 Window.Resources:资源位置声明X:Key:资源Id,用于前端的…

2023年JAVA最新面试题

2023年JAVA最新面试题 1 JavaWeb基础1.1 HashMap的底层实现原理?1.2 HashMap 和 HashTable的异同?1.5 Collection 和 Collections的区别?1.6 Collection接口的两种区别1.7 ArrayList、LinkedList、Vector者的异同?1.8 String、Str…