<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>APM 应用性能观测工具 on chinese</title>
    <link>https://www.xiexianbin.cn/monitor/apm/</link>
    <description>Recent content in APM 应用性能观测工具 on chinese</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 16 Feb 2024 14:58:31 +0800</lastBuildDate>
    
	<atom:link href="https://www.xiexianbin.cn/monitor/apm/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>OpenTelemetry 介绍</title>
      <link>https://www.xiexianbin.cn/monitor/apm/opentelemetry/</link>
      <pubDate>Sun, 09 Jun 2024 10:54:23 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/opentelemetry/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;OpenTelemetry 是一个&lt;a href=&#34;https://opentelemetry.io/zh/docs/concepts/observability-primer/#what-is-observability&#34;&gt;可观测性&lt;/a&gt;框架和工具包，旨在创建和管理遥测数据，如&lt;code&gt;链路（traces）&lt;/code&gt;、&lt;code&gt;指标（metrics）&lt;/code&gt;和&lt;code&gt;日志（logs）&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;OpenTelemetry&lt;/code&gt; 是一个 &lt;a href=&#34;https://www.cncf.io/projects/opentelemetry/&#34;&gt;CNCF&lt;/a&gt; 孵化级项目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;于 2019 年 5 月 7 日被 CNCF 接收，并于 2021 年 8 月 26 日转入孵化成熟度级别&lt;/li&gt;
&lt;li&gt;该项目由 &lt;code&gt;OpenTracing&lt;/code&gt; 和 &lt;code&gt;OpenCensus&lt;/code&gt; 项目合并而诞生的&lt;/li&gt;
&lt;li&gt;100% 免费和开源的&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;OpenTelemetry&lt;/code&gt; 专注于遥测数据的&lt;code&gt;生成&lt;/code&gt;、&lt;code&gt;采集&lt;/code&gt;、&lt;code&gt;管理&lt;/code&gt;和&lt;code&gt;导出&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;OpenTelemetry&lt;/code&gt; 是各类 API、SDK 和工具形成的集合&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可用于插桩、生成、采集和导出遥测数据（链路、指标和日志），帮助分析软件的性能和行为&lt;/li&gt;
&lt;li&gt;开发语言支持 C++、.NET、Erlang / Elixir、Go、Java、JavaScript / TypeScript、PHP、Python、Ruby、Rust、Swift 等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenTelemetry 的一个主要目标是，无论应用程序或系统采用何种编程语言、基础设施或运行时环境，都可以轻松地将其仪表化。重要的是，遥测数据的存储和可视化是有意留给&lt;code&gt;其他工具&lt;/code&gt;处理的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenTelemetry 是供应商和工具无关的，这意味着它可以与各种可观测性后端一起使用，包括 Jaeger 和 Prometheus 等开源工具以及商业化产品&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenTelemetry 可扩展性强&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://landscape.cncf.io/guide#observability-and-analysis--observability&#34;&gt;Observability and Analysis by CNCF&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Jaeger 介绍</title>
      <link>https://www.xiexianbin.cn/monitor/apm/jaegertracing/</link>
      <pubDate>Mon, 10 Jun 2024 08:18:17 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/jaegertracing/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://www.jaegertracing.io/&#34;&gt;Jaeger&lt;/a&gt;是开源、分布式跟踪平台，支持云原生且无限可扩展。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Jaeger 受到 Dapper 和 OpenZipkin 的启发，是由 &lt;code&gt;Uber Technologies&lt;/code&gt; 创建并捐赠给 &lt;a href=&#34;https://www.cncf.io/projects/jaeger/&#34;&gt;CNCF&lt;/a&gt; 的分布式跟踪平台
&lt;ul&gt;
&lt;li&gt;Jaeger 于 2017-9-13 被 &lt;a href=&#34;https://www.cncf.io/projects/jaeger/&#34;&gt;CNCF&lt;/a&gt; 接受为孵化项目，然后于 2019-10-31 转移到毕业成熟度级别&lt;/li&gt;
&lt;li&gt;它可用于监控基于微服务的分布式系统：
&lt;ul&gt;
&lt;li&gt;分布式上下文传播&lt;/li&gt;
&lt;li&gt;分布式事务监控&lt;/li&gt;
&lt;li&gt;根本原因分析&lt;/li&gt;
&lt;li&gt;服务依赖性分析&lt;/li&gt;
&lt;li&gt;性能/延迟优化&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;作用：监控复杂分布式系统中的工作流程并排除故障&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jaegertracing/jaeger&#34;&gt;Jaeger&lt;/a&gt; 使用 Go 语言编写的，在并发性能、对系统资源的消耗底&lt;/li&gt;
&lt;li&gt;特点
&lt;ul&gt;
&lt;li&gt;高度可扩展性&lt;/li&gt;
&lt;li&gt;现代化 UI 界面&lt;/li&gt;
&lt;li&gt;云原生部署，如 &lt;a href=&#34;https://github.com/jaegertracing/jaeger-operator&#34;&gt;Jaeger Operator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;支持基于 Prometheus metrics&lt;/li&gt;
&lt;li&gt;与 Zipkin 向后兼容&lt;/li&gt;
&lt;li&gt;版本兼容性保证&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;与 &lt;a href=&#34;https://www.xiexianbin.cn/apm/opentelemetry/&#34;&gt;OpenTelemetry&lt;/a&gt; 的关系
&lt;ul&gt;
&lt;li&gt;Jaeger 和 OpenTelemetry 有着不同的目标（参考 &lt;a href=&#34;https://medium.com/jaegertracing/jaeger-and-opentelemetry-1846f701d9f2&#34;&gt;Jaeger and OpenTelemetry&lt;/a&gt;）
&lt;ul&gt;
&lt;li&gt;OpenTelemetry 的目标是提供多种语言的应用程序接口（API）和 SDK，允许应用程序将各种遥测数据输出到任意数量的度量和跟踪后端&lt;/li&gt;
&lt;li&gt;Jaeger 主要是跟踪后端，它接收跟踪遥测数据，并对数据进行处理、汇总、数据挖掘和可视化&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Jaeger 项目推荐使用 OpenTelemetry SDK 进行数据采集&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Jaeger 最初设计是为了支持 &lt;a href=&#34;https://opentracing.io/specification/&#34;&gt;OpenTracing standard&lt;/a&gt;，且 &lt;a href=&#34;https://www.xiexianbin.cn/apm/opentelemetry/#opentracing&#34;&gt;OpenTracing&lt;/a&gt; 已经合并到 &lt;a href=&#34;https://www.xiexianbin.cn/apm/opentelemetry/&#34;&gt;OpenTelemetry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;特点
&lt;ul&gt;
&lt;li&gt;通过数据驱动的依赖关系图了解整个系统的架构&lt;/li&gt;
&lt;li&gt;查看请求时间线和错误；了解应用程序如何运行&lt;/li&gt;
&lt;li&gt;查找延迟和并发性不足的根源&lt;/li&gt;
&lt;li&gt;高度上下文化的日志记录&lt;/li&gt;
&lt;li&gt;使用行李传播诊断请求间争用（排队）和服务耗时&lt;/li&gt;
&lt;li&gt;使用 opentelemetry-contrib 提供的开源库，免费获取厂商中立的产品&lt;/li&gt;
&lt;li&gt;Jaeger 兼容 Zipkin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;架构&#34;&gt;架构&lt;/h2&gt;
&lt;figure&gt;
    &lt;img src=&#34;https://www.xiexianbin.cn/images/apm/jaeger/jaeger-arch.svg&#34; alt=&#34;jaeger-arch&#34; style=&#34;height: 460px&#34;/&gt;&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;图片转载自 github，spm arch &lt;a href=&#34;https://www.jaegertracing.io/docs/1.57/spm/#architecture&#34;&gt;参考&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Jaeger Collector&lt;/code&gt; 接收来自代理或直接来自客户的 spans，并将其保存在持久存储器中
&lt;ul&gt;
&lt;li&gt;可以作为 OpenTelemetry 的 exporter&lt;/li&gt;
&lt;li&gt;自 2022 年起，不再支持 Jaeger SDK(aka tracers, client libraries) that implemented the OpenTracing API&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Jaeger Agent (deprecated, 已废弃)&lt;/code&gt; 从 Jaeger 客户端接收 spans 并转发给 &lt;code&gt;Jaeger Collector&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Jaeger Query Service&lt;/code&gt; 为 Jaeger UI 和从存储中检索 traces 的应用程序接口提供服务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Jaeger Ingester&lt;/code&gt; 收集器的替代方案；从 Kafka 主题读取跨度并保存到存储中&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jaeger-remote-storage&lt;/code&gt; 在另一个受支持的后端之上实现远程存储 API 的服务。可用于在多个 Jaeger 进程之间共享单节点存储后端（如内存）&lt;/li&gt;
&lt;li&gt;Jaeger 支持的存储后端
&lt;ul&gt;
&lt;li&gt;原生支持两种流行的开源 NoSQL 数据库作为跟踪存储后端：Cassandra 和 Elasticsearch&lt;/li&gt;
&lt;li&gt;通过 gRPC API 与其他经认证符合 Jaeger 标准的知名数据库集成：TimescaleDB via Promscale、ClickHouse&lt;/li&gt;
&lt;li&gt;使用 Badger 和简单的内存存储为测试设置提供嵌入式数据库支持&lt;/li&gt;
&lt;li&gt;由于 ScyllaDB 使用相同的数据模型和查询语言，因此可直接替代 Cassandra&lt;/li&gt;
&lt;li&gt;社区正在使用其他数据库进行实验，如 InfluxDB、Amazon DynamoDB 和 YugabyteDB(YCQL)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;部署&#34;&gt;部署&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;官方提供二级制和 docker 镜像，&lt;a href=&#34;https://www.jaegertracing.io/download/&#34;&gt;参考&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;all-in-one&#34;&gt;All in One&lt;/h3&gt;
&lt;p&gt;部署的组件包括：&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Sentry 介绍</title>
      <link>https://www.xiexianbin.cn/monitor/apm/sentry/</link>
      <pubDate>Fri, 16 Feb 2024 15:02:18 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/sentry/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://sentry.io/&#34;&gt;Sentry&lt;/a&gt; 是一个开发人员优先的错误跟踪和性能监控平台，当应用出现故障时，使用 Sentry 可更快地修复故障&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;基于 Django 构建的现代化的实时事件日志监控、记录和聚合平台&lt;/li&gt;
&lt;li&gt;支持自动收集和手动收集两种错误收集方法&lt;/li&gt;
&lt;li&gt;可以自助搭建，也可以使用官方提供的服务&lt;/li&gt;
&lt;li&gt;核心概念
&lt;ul&gt;
&lt;li&gt;DSN 是连接&lt;code&gt;客户端(项目)&lt;/code&gt;与`sentry服务端的认证信息&lt;/li&gt;
&lt;li&gt;event 对应一个错误事件&lt;/li&gt;
&lt;li&gt;issue 同一类event的集合&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;插件
&lt;ul&gt;
&lt;li&gt;raven 是针对 vue 推荐的插件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Signoz 介绍</title>
      <link>https://www.xiexianbin.cn/monitor/apm/signoz/</link>
      <pubDate>Fri, 16 Feb 2024 12:03:18 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/signoz/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/SigNoz/signoz&#34;&gt;SigNoz/signoz&lt;/a&gt; 一个帮助开发人员监控应用程序并排除故障，是 DataDog、NewRelic 等软件的开源替代品&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;开源的可观测系统，基于 OpenTelemetry 收集感测数据，包括指标、日志和请求跟踪信息，并支持统一展示&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;架构&#34;&gt;架构&lt;/h3&gt;
&lt;figure&gt;
    &lt;img src=&#34;https://www.xiexianbin.cn/images/apm/signoz/architecture-signoz-clickhouse.svg&#34; alt=&#34;architecture of signoz&#34; style=&#34;height: 460px&#34;/&gt;&lt;/figure&gt;

&lt;p&gt;&lt;a href=&#34;https://signoz.io/docs/architecture/&#34;&gt;参考&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Zipkin 开源的分布式跟踪系统</title>
      <link>https://www.xiexianbin.cn/monitor/apm/zipkin/</link>
      <pubDate>Sat, 30 Jul 2022 23:11:34 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/zipkin/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/openzipkin/zipkin&#34;&gt;zipkin&lt;/a&gt; 是一个分布式跟踪系统，它有助于收集服务架构中排除延迟问题所需的定时数据，其功能包括收集和查询这些数据。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zipkin&lt;/strong&gt; 是一个开源的分布式跟踪系统，由 Twitter 开发并开源。它的主要作用是帮助开发者收集、存储、查询和可视化微服务架构中不同服务之间的请求链路信息。在复杂的分布式系统中，一个请求可能经过多个服务，每个服务又可能调用其他服务，这使得排查问题变得非常困难。Zipkin 就像是一个&lt;code&gt;侦探&lt;/code&gt;，追踪请求的整个生命周期，为你呈现清晰的调用关系图，让你能快速定位性能瓶颈和故障点。&lt;/li&gt;
&lt;li&gt;zipkin 使用 Java 开发，推荐使用 &lt;a href=&#34;https://www.xiexianbin.cn/apm/jaegertracing/index.html&#34;&gt;Jaeger&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.xiexianbin.cn/apm/#jaeger-vs-zipkin&#34;&gt;jaeger vs zipkin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
    &lt;img src=&#34;https://www.xiexianbin.cn/images/apm/zipkin/architecture-1.png&#34; alt=&#34;zipkin architecture&#34; style=&#34;height: 560px&#34;/&gt;&lt;/figure&gt;

&lt;p&gt;上图&lt;a href=&#34;https://zipkin.io/public/img/architecture-1.png&#34;&gt;转载自&lt;/a&gt;，要理解 Zipkin，需要先了解几个核心概念：&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Grafana Tempo 分布式追踪介绍</title>
      <link>https://www.xiexianbin.cn/monitor/apm/tempo/</link>
      <pubDate>Sun, 25 Oct 2026 19:29:44 +0800</pubDate>
      
      <guid>https://www.xiexianbin.cn/monitor/apm/tempo/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Grafana Tempo&lt;/strong&gt; 是由 Grafana Labs 开源的一款&lt;strong&gt;高扩展、低成本且易于运维的分布式追踪（Distributed Tracing）后端系统&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;核心设计理念与特性&#34;&gt;核心设计理念与特性&lt;/h2&gt;
&lt;p&gt;在现代微服务和云原生架构中，分布式追踪是定位微服务间调用延迟、排查错误链路的关键工具。Tempo 的诞生主要是为了解决传统追踪系统（如基于 Elasticsearch 或 Cassandra 的方案）成本高昂、架构复杂和维护困难的问题。&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
