链路追踪
文章平均质量分 92
SkyWalking,ZipKin,CAT
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
SkyWalking6.2.0版本UI参数、告警参数、指标含义中文解释
一、告警规则相关参数二、SkyWalking UI相关参数CPM:每分钟请求调用的次数SLA: 服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服务的性能和可用性。网站服务可用性SLA:9越多代表全年服务可用时间越长服务更可靠,停机时间越短1年 = 365天 = 8760小时99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时99.99 = 8760 * 0.0001 = 0.876小时 = 0.8.原创 2021-08-17 00:12:29 · 480 阅读 · 0 评论 -
SkyWalking 源码分析 —— traceId 集成到日志组件
1. 概述本文主要分享traceId 集成到日志组件,例如 log4j 、log4j2 、logback 等等。我们首先看看集成的使用例子,再看看集成的实现代码。涉及代码如下: 本文以logback 1.x为例子。2. 使用例子1、无需引入相应的工具包,只需启动参数带上-javaagent:/Users/yunai/Java/skywalking/packages/skywalking-agent/skywalking-agent.jar。2、在log...原创 2021-08-17 00:12:19 · 1541 阅读 · 0 评论 -
SkyWalking 源码分析 —— @Trace 注解想要追踪的任何方法
1. 概述本文主要分享@Trace 注解想要追踪的任何方法。我们首先看看@Trace的使用例子,再看看@Trace的实现代码。涉及代码如下: 2. 使用例子本节参考官方文档:Application-toolkit-trace-CN.md1、使用 Maven 引入相应的工具包 <dependency> <groupId>org.skywalking</groupId> <artifact...原创 2021-08-17 00:12:06 · 4292 阅读 · 0 评论 -
SkyWalking 源码分析 —— 运维界面(四)之操作视角
1. 概述本文主要分享运维界面的第四部分,操作视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Service Tree(service/serviceTree.html) 页时,如下图:以操作为维度进行展示。 黄色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心跳时间...原创 2021-08-16 01:24:45 · 302 阅读 · 0 评论 -
SkyWalking 源码分析 —— 运维界面(三)之链路追踪视角
1. 概述本文主要分享运维界面的第三部分,链路追踪视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Trace Stack(trace/trace.html) 页时,如下图:以链路追踪为维度进行展示。 红色部分,应用筛选器,调用「2. ApplicationsGetHandler」接口,获得应用列表。 紫色部分,TraceSegme...原创 2021-08-16 01:24:32 · 321 阅读 · 0 评论 -
SkyWalking 源码分析 —— 运维界面(二)之应用实例视角
1. 概述本文主要分享运维界面的第二部分,应用实例视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的Instance Override(health/health.html) 页时,如下图:以应用实例为维度进行展示。 红色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心...原创 2021-08-16 01:24:21 · 294 阅读 · 0 评论 -
SkyWalking 源码分析 —— 运维界面(一)之应用视角
1. 概述本文主要分享运维界面的第一部分,应用视角。SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui在我们打开 SkyWalking WEBUI 的首页时,如下图:以应用为维度进行展示。 紫色部分,时间进度条,调用「2. AllInstanceLastTimeGetHandler」接口,获得应用实例最后心跳时间。大多情况下,我们进入该界面,看的是从最后心跳时间开始的应用调用情况。 红色部分,..原创 2021-08-16 01:24:07 · 467 阅读 · 0 评论 -
SkyWalking 源码分析 —— JVM 指标的收集与存储
1. 概述本文主要分享SkyWalking JVM 指标的收集与存储。大体流程如下:Agent 每秒定时收集 JVM 指标到缓冲队列。 Agent 每秒定时将缓冲队列的 JVM 指标发送到 Collector 。 Collector 接收到 JVM 指标,异步批量存储到存储器( 例如,ES )。目前 JVM 指标包括四个维度:CPU Memory MemoryPool GCSkyWalking UI 界面如下:2. Agent 收集 JVM 指标2.1 JVMServ.原创 2021-08-16 01:23:55 · 547 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector 存储 Trace 数据
1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector 。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第四部分】SkyWalking Collector 存储 Trace 数据。友情提示:Collector 接收到 TraceSegment 的数据,对应的类是 Protobuf 生成的。考虑到更加易读易懂,本.原创 2021-08-16 01:23:43 · 854 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector 接收 Trace 数据
1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector 。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第三部分】SkyWalking Collector 接收 Trace 数据。友情提示:Collector 接收到 TraceSegment 的数据,对应的类是 Protobuf 生成的。考虑到更加易读易懂,本.原创 2021-08-16 01:23:29 · 458 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent 发送 Trace 数据
1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第二部分】SkyWalking Agent 发送 Trace 数据。考虑到减少外部组件的依赖,Agent 收集到 Trace 数据后,不是写入外部消息队列( 例如,Kafka )或者日志文件,而是 Agent ..原创 2021-08-16 01:23:16 · 720 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent 收集 Trace 数据
1. 概述分布式链路追踪系统,链路的追踪大体流程如下:Agent 收集 Trace 数据。 Agent 发送 Trace 数据给 Collector 。 Collector 接收 Trace 数据。 Collector 存储 Trace 数据到存储器,例如,数据库。本文主要分享【第一部分】SkyWalking Agent 收集 Trace 数据。文章的内容顺序如下:Trace 的数据结构 Context 收集 Trace 的方法不包括插件对 Context 收集的方法的调用,后续单.原创 2021-08-16 01:22:54 · 469 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent DictionaryManager 字典管理
1. 概述本文主要分享Agent DictionaryManager 字典管理。先来简单了解下字典的定义和用途:字典实际上是一个 Map 映射。目前 Agent 上有两种字典:应用编码与应用编号的映射,操作名与操作编号的映射。 应用的定义:例如,Tomcat 启动的应用,或者程序里访问的 MongoDB 、MySQL 都可以认为是应用。 操作的定义:例如,访问的 URL 地址,Mongo 的执行操作。 Agent 在每次上传调用链路 Segment 给 Collector 时,Segm.原创 2021-08-16 01:22:39 · 158 阅读 · 0 评论 -
SkyWalking 源码分析 —— 应用于应用实例的注册
1. 概述本文主要分享应用与应用实例的注册。先来简单了解下注册的整体流程:应用启动,Agent 向 Collector 注册应用。 注册应用成功后,Agent 向 Collector 注册应用实例。下面,我们分成两个小节,分别从 API 的实现与调用,分享代码的具体实现。友情提示:推荐阅读《探针与Collector间通讯协议》。2. Collector 注册相关 APICollector 注册相关 API 相关有四个接口:2.1 应用的注册 API 2.2 应用实例的...原创 2021-08-15 15:46:34 · 279 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent Remote 远程通信服务
1. 概述本文主要分享SkyWalking Agent Remote 远程通信服务。该服务用于 Agent 和Collector 集群的通信。在《SkyWalking 源码分析 —— Collector Naming Server 命名服务》一文中,我们已经看到,Agent 使用定时轮询,从 Collector Naming Server 中,获得 Collector 集群的 Collector Agent gRPC Server 的所有地址。红框部分,即为 Agent 和Coll...原创 2021-08-15 15:46:21 · 351 阅读 · 0 评论 -
SkyWalking 源码分析 —— DataCarrier 异步处理库
1. 概述本文主要分享SkyWalking DataCarrier 异步处理库。基于生产者消费者的模式,大体结构如下图:实际项目中,没有 Producer 这个类。所以本文提到的 Producer ,更多的是一种角色。下面我们来看看整体的项目结构,如下图所示 :2. bufferorg.skywalking.apm.commons.datacarrier.buffer包,主要包含 Channels 、Buffer 两个类。Channels 是 Buffer 数组的封装。..原创 2021-08-15 15:46:06 · 571 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Remote 远程通信服务
1. 概述本文主要分享SkyWalking Collector Remote 远程通信服务。该服务用于 Collector 集群内部通信。目前集群内部通信的目的,跨节点的流式处理。Remote Module应用在 SkyWalking 架构图如下位置(红框) :FROMhttps://github.com/apache/incubating-skywalking下面我们来看看整体的项目结构,如下图所示 :collector-remote-define:定义远程...原创 2021-08-15 15:45:51 · 229 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Streaming Computing 流式处理(二)
1. 概述本文接《SkyWalking 源码分析 —— Collector Streaming Computing 流式处理(一)》,主要分享Collector Streaming 流式处理的第二部分。主要包含如下部分:AggregationWorker :聚合处理数据,后提交 Data 到 Next 节点们处理。 PersistenceWorker :聚合处理数据,后存储 Data 。2. DataAggregationWorker 和 PersistenceWorker ,都先...原创 2021-08-15 15:45:37 · 218 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Streaming Computing 流式处理(一)
1. 概述本文主要分享Collector Streaming 流式处理。主要包含如下部分: apm-collector-core模块的graph包,提供最精简、单节点的流式处理的封装。如下图所示: apm-collector-stream模块,在graph包的基础上,提供异步、跨节点等等的流式处理的封装。如下图所示: 免打脸大保健:笔者对流式处理非常不了解,本文可能是一本正经的胡说八道。考虑到笔者是靠脸吃饭(颜值我只服我红雷哥),所以读者老爷请爱护下笔者。...原创 2021-08-15 15:45:18 · 228 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Storage 存储组件
1. 概述本文主要分享SkyWalking Collector Storage 存储组件。顾名思义,负责将调用链路、应用、应用实例等等信息存储到存储器,例如,ES 、H2 。友情提示:建议先阅读《SkyWalking 源码分析 —— Collector 初始化》,以了解 Collector 组件体系。FROMhttps://github.com/apache/incubating-skywalking下面我们来看看整体的项目结构,如下图所示 :apm-collec...原创 2021-08-15 15:44:57 · 568 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Naming Server 命名服务
1. 概述本文主要分享Collector Naming Server 命名服务。主要包含如下部分:Collector Naming Server 提供 Http 两个接口,提供 Agent分别查询 Collector Agent Jetty Server 、Collector Agent gRPC Server 集群。 Collector Agent Jetty Server 、Collector Agent gRPC Server 集群内部的注册与发现。友情提示,建议胖友已经读过《Sk...原创 2021-08-15 15:43:47 · 168 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector gRPC Server Manager
1. 概述本文主要分享Collector gRPC Server Manager。Collector 通过该管理器,管理启动的多个 gRPC Server,例如 Agent gRPC Server、Remote gRPC Server 。友情提示:建议胖友已经读过《SkyWalking 源码分析 —— Collector Server Component 服务器组件》另外,本文和《SkyWalking 源码分析 —— Collector Jetty Server Manager》相...原创 2021-08-14 16:31:53 · 151 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Jetty Server Manager
1. 概述本文主要分享Collector Jetty Server Manager。Collector 通过该管理器,管理启动的多个 Jetty Server,例如 Agent Jetty Server、Naming Jetty Server、UI Jetty Server。友情提示:建议胖友已经读过《SkyWalking 源码分析 —— Collector Server Component 服务器组件》Jetty Server Manager 在 SkyWalking 架构图处于如..原创 2021-08-14 16:29:58 · 172 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Server Component 服务器组件
1. 概述本文主要分享SkyWalking Collector Server Component 服务器组件。Collector 通过服务器,提供 API 接口给调用方,例如 Agent 、WebUI 。Server Component 在 SkyWalking 架构图处于如下位置(红框) :FROMhttps://github.com/apache/incubating-skywalking下面我们来看看整体的项目结构,如下图所示 :OK,我们从接口到实现的顺序进行...原创 2021-08-14 16:29:10 · 137 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Client Component 客户端组件
1. 概述本文主要分享SkyWalking Collector Client Component 客户端组件。Collector 通过客户端,和其他服务进行通信,例如 Elastic Search 、Zookeeper 、H2 等等。Client Component 在 SkyWalking 架构图处于如下位置(红框) :FROMhttps://github.com/apache/incubating-skywalking下面我们来看看整体的项目结构,如下图所示 :O...原创 2021-08-14 16:28:11 · 200 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector Cluster 集群管理
1. 概述本文主要分享SkyWalking Collector Cluster Module,负责集群的管理,即 Collector 节点的注册于发现。友情提示:建议先阅读《SkyWalking 源码分析 —— Collector 初始化》,以了解 Collector 组件体系。Cluster Module 在 SkyWalking 架构图处于如下位置(红框) :FROMhttps://github.com/apache/incubating-skywalking...原创 2021-08-14 16:26:06 · 304 阅读 · 0 评论 -
SkyWalking 源码分析 —— Collector 初始化
1. 概述本文主要分享SkyWalking Collector 启动初始化的过程。在分享的过程中,我们会简单介绍 Collector 每个模块及其用途。ps :Collector 是 SkyWalking 的 Server 端。整体如下图 :FROMhttps://github.com/apache/incubating-skywalking2. CollectorBootStartUporg.skywalking.apm.collector.boot.CollectorBo..原创 2021-08-14 16:21:37 · 374 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent 插件体系
1. 概述本文主要分享SkyWalking Agent 插件体系。主要涉及三个流程 :插件的加载 插件的匹配 插件的拦截可能看起来有点抽象,不太容易理解。淡定,我们每个小章节进行解析。本文涉及到的类主要在org.skywalking.apm.agent.core.plugin包里,如下图所示 :每个流程会涉及到较多的类,我们会贯穿着解析代码实现。2. 插件的加载在《SkyWalking 源码分析 —— Agent 初始化》一文中,Agent 初始化时,调用Plu...原创 2021-08-14 16:20:08 · 903 阅读 · 0 评论 -
SkyWalking 源码分析 —— Agent 初始化
1. 概述本文主要分享SkyWalking Agent 启动初始化的过程。SkyWalking Agent 基于JavaAgent机制,实现应用透明接入 SkyWalking 。关于 JavaAgent 机制,笔者推荐如下两篇文章 :《Instrumentation 新功能》 《JVM源码分析之javaagent原理完全解读》友情提示 :建议自己手撸一个简单的 JavaAgent ,更容易理解 SkyWalking Agent 。笔者练手的 JavaAgent 项目地址 :htt...原创 2021-08-14 16:13:11 · 380 阅读 · 0 评论 -
SkyWalking 源码分析 —— 调试环境搭建
1. 依赖工具Maven Git JDK IntelliJ IDEA2. 源码拉取从官方仓库https://github.com/OpenSkywalking/skywalkingFork出属于自己的仓库。为什么要Fork?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。????使用IntelliJ IDEA从Fork出来的仓库拉取代码。拉取完成后,Maven会下载依赖包,可能会花费一些时间,耐心等待下。本文基于master分支。...原创 2021-08-14 15:49:50 · 762 阅读 · 0 评论 -
Spring Cloud 链路追踪 Spring Cloud Sleuth
1. 概述Spring Cloud Sleuth是由 Spring Cloud 官方推出,为 Spring Cloud 实现分布式链路追踪的功能,它在设计上借鉴了Dapper、Zipkin、HTrace。Spring Cloud Sleuth is a distributed tracing tool for Spring Cloud. It borrows fromDapper,Zipkin, andHTrace.实际上,我们可以直接把 Spring Cloud Sleuth ...原创 2020-08-04 23:54:37 · 1391 阅读 · 0 评论 -
Spring Boot 日志平台 ELK + Filebeat 入门
1. 概述在《芋道 Spring Boot 日志集成 Logging 入门》文章中,我们学习了 Spring Boot 如何集成并使用日志框架,进行日志的打印。友情提示:对于本文来说,即使胖友未阅读过《芋道 Spring Boot 日志集成 Logging 入门》文章,也毫无影响,不要慌~不过正如我们在文末所说,在生产环境下,我们会集群部署我们的应用。那么我们可能需要登陆多台服务器,查看不用应用节点下的日志,这样会非常不方便。所以,本文我们就一起来,使用 ELK + Filebeat 组原创 2020-06-16 02:06:23 · 2021 阅读 · 0 评论 -
Spring Boot 监控工具 Admin 入门
1. 概述在《Spring Boot 监控端点 Actuator 入门》中,我们学习了通过 Actuator 端点,通过 HTTP 请求,获得应用的审计(auditing)、健康状况(health)和指标(metrics)等数据。不过正如我们在文末所说,直接请求 Actuator 端口,查看监控数据,是非常低效且使用体验较差的。所以我们的一个解决方案是Spring Boot Admin监控工具,也是本文我们要学习的。其官方文档介绍如下:FROM《Spring Boot Admin Ref...原创 2020-06-15 21:47:07 · 1711 阅读 · 0 评论 -
Spring Boot 监控端点 Actuator 入门
1. 概述现在在阅读本文的胖友,估计绝大多数都是 Java 开发者。很多时候,我们只关心开发部分,但是应用在部署在生产环境下,我们还需要考虑应用的管理与监控。例如说,应用是否健康存活、应用的 JVM 监控信息、服务器的监控信息(CPU、内存、磁盘等等)。如果我们为应用的管理与监控做相应的开发,是需要一定的成本的。幸运的是,在 Spring Boot 框架提供了一个非常重要的新组件spring-boot-actuator。其文档介绍如下:FROM《Spring Boot Actuator:...原创 2020-06-15 21:27:52 · 1478 阅读 · 0 评论 -
Spring Boot 监控平台 Prometheus + Grafana 入门
1. 概述在《芋道 Spring Boot 监控工具 Admin 入门》文章中,我们学习了如何使用 Spring Boot Admin 作为 Spring Boot 应用的监控和管理工具。友情提示:对于本文来说,即使胖友未阅读过《芋道 Spring Boot 监控工具 Admin 入门》文章,也毫无影响,不要慌~不过正如我们在文末所说,Spring Boot Admin 是个轻量级的监控工具,默认无法提供历史监控数据的查询,这对我们在排查问题时,可能不是特别不便利。所以,本文我们就一起来原创 2020-06-15 21:55:58 · 974 阅读 · 0 评论 -
Spring Boot 监控平台 CAT 入门
1. 概述在《CAT 极简入门》文章中,我们一起完成了 CAT 的学习,并完成了 CAT 服务器的搭建。本文,我们将使用 CAT 提供的Java 客户端客户端,接入 Spring Boot 应用中,实现应用监控的功能。2. 快速入门示例代码对应仓库:lab-61-demo。在 CAT 中,一共有四种监控模型:Transaction:适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控。Transaction 用来记录一段代码的执行时...原创 2020-06-20 12:21:06 · 2918 阅读 · 2 评论 -
CAT 极简入门(应用监控平台)
1. 概述偷懒提示:《CAT 官方文档 —— 简洁》已经写的很赞,这里艿艿直接 CV 大法好~CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评.原创 2020-06-20 12:08:23 · 2523 阅读 · 0 评论 -
SkyWalking 极简入门
1. 概述1.1 概念SkyWalking 是什么?FROMhttp://skywalking.apache.org/分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。1.2 功能列表SkyWalking 有哪些功能?FROMhttp://skywalking.apache.org/多种监控手段。可以通过语言探针和 service m..原创 2020-06-18 03:10:39 · 996 阅读 · 0 评论 -
Spring Boot 链路追踪 Zipkin 入门
1. 概述如果胖友还没了解过分布式链路追踪Zipkin,建议先阅读下艿艿写的《Zipkin 极简入门》文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 Zipkin》,哈哈哈。可能会有胖友会有疑惑,Spring Boot 不是一个单体应用么,为什么可以使用 Zipkin 进行分布式链路追踪呢?其实这里有一个误区!即使是一个 Spring Boot 单体应用,我们一般可能会和以下服务打交道:关系数据库,例如说 MySQL、Oracle、SQLServer、PostgreSQ...原创 2020-06-16 22:35:10 · 2723 阅读 · 0 评论 -
Spring Boot 链路追踪 SkyWalking 入门
1. 概述如果胖友还没了解过分布式链路追踪SkyWalking,建议先阅读下艿艿写的《SkyWalking 极简入门》文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 SkyWalking》,哈哈哈。可能会有胖友会有疑惑,Spring Boot 不是一个单体应用么,为什么可以使用 SkyWalking 进行分布式链路追踪呢?其实这里有一个误区!即使是一个 Spring Boot 单体应用,我们一般可能会和以下服务打交道:关系数据库,例如说 MySQL、Oracle、SQL...原创 2020-06-16 21:44:46 · 67442 阅读 · 2 评论