searchusermenu
点赞
收藏
评论
分享
原创

应用接入应用性能监控产品的方式选型参考

2026-01-13 10:28:02
1
0

天翼云应用性能监控组件(APM) 应用接入方式主要飞Java类应用的接入方式和非Java类的接入方式,Java类应用提供无侵入的接入方式,非Java类应用提供基于OpenTelemetry标准,全面兼容Jaeger、SkyWalking等多种开源接入协议。下面分析 OpenTelemetry、Jaeger、SkyWalking等接入方式给应用接入方案提供参考。

一、 OpenTelemetry(OTel)方式

1、数据采集原理

  • 标准化采集:OpenTelemetry 是一个开放标准,提供了一套统一的 API、SDK 和工具。OTel 不仅仅是“标准化采集”,它正在成为可观测性数据的统一事实标准。它合并了OpenTracing和OpenCensus,旨在提供从数据采集、处理到导出的全链路标准化。其“自动插桩”的能力和社区支持正在飞速增强。

  • 自动/手动插桩

    • 自动插桩:通过 OTel 提供的语言特定代理(如 Java Agent、Python 等)自动注入探针,无需修改代码即可采集 HTTP、数据库、RPC 等调用链路。

    • 手动插桩:开发者通过 OTel SDK 在关键代码位置手动添加追踪点,更灵活但需要代码改动。

  • 数据导出:采集的数据通过 OTLP(OpenTelemetry Protocol)协议导出到后端系统(如 Jaeger、Prometheus、Elasticsearch 等)。

2、对应用接入影响

  • 低侵入性(自动插桩):适合无代码改动场景,仅需部署时加载代理。

  • 灵活性强(手动插桩):支持自定义采集逻辑,但需开发配合。

  • 跨平台支持:支持多种语言和框架,生态兼容性好。

  • 性能开销:自动插桩有一定性能损耗,但通常可控。其开销通常低于许多私有代理。通过设置合理的采样率(如1%的尾部采样),可以将生产环境开销降至极低

3、未来趋势和发展

  • 强调 OTel 是云原生可观测性的未来方向。越来越多的商业和开源后端(如 Jaeger、Prometheus、Elastic APM、Datadog、Grafana Tempo)都原生支持 OTLP 协议,选择 OTel 意味着不会被某个特定后端锁定

二、SkyWalking 方式

1、数据采集原理

  • 探针采集:通过 Java Agent(或语言特定的探针)在应用启动时动态注入字节码,拦截关键方法调用(如 HTTP、DB、RPC)。

  • 服务网格集成:支持从 Istio、Envoy 等服务网格组件收集链路数据。

  • 数据上报:采集的链路和指标数据通过 gRPC/HTTP 上报到 SkyWalking OAP 服务进行存储和分析。

  • 高级特性:SkyWalking Agent 提供了丰富的插件化采集能力(如对 MySQL、Redis、Kafka、Dubbo、RocketMQ 等中间件的支持),开箱即用。

2、对应用接入影响

  • 无侵入/低侵入:主流方式是通过 Agent 实现无代码修改接入,只需在启动命令中添加 -javaagent 参数。

  • 语言支持:对 Java 支持最好,其他语言(如 Go、Python)也有探针,但可能功能或成熟度有差异。

  • 部署依赖:需部署 SkyWalking OAP 和 UI 服务,有一定运维成本。

  • 性能损耗:Agent 注入会带来一定性能开销,通常较小(<5%)。

四. Jaeger 方式

1、数据采集原理

  • 客户端 SDK 插桩:通过 Jaeger 客户端库(如 jaeger-client)在代码中手动或通过框架(如 OpenTracing)注入追踪逻辑。

  • 上下文传播:通过 HTTP Headers(如 uber-trace-id)在服务间传递链路上下文。

  • 数据上报:采集的链路数据通过 UDP/HTTP 发送到 Jaeger Agent,再由 Agent 转发到 Jaeger Collector。

2、对应用接入影响

  • 代码侵入性较强:通常需要手动添加追踪代码或依赖框架支持(如 Spring Cloud Sleuth)。

  • 部署复杂:需部署 Jaeger Agent、Collector、Query 等组件。

  • 灵活性高:支持自定义采样策略和标签注入。

  • 性能开销:取决于采样率和追踪粒度,全采样时开销较大。

特性 OpenTelemetry (OTel) SkyWalking Jaeger
核心定位 可观测性领域的统一标准与数据采集层 功能丰富的 APM(应用性能监控)系统 专注于分布式追踪的后端与可视化系统
采集原理 标准化 API/SDK,支持自动/手动插桩,数据格式为 OTLP 智能探针(Agent),侧重字节码注入与自动指标采集 传统为私有 SDK现代实践是作为 OTLP 数据的后端
侵入性 低(自动插桩)/ 中(手动插桩,但一劳永逸) 极低(Java等语言),无需修改代码 取决于采集层:若用OTel则同OTel;若用旧SDK则需代码改动
数据维度 链路(Trace)、指标(Metric)、日志(Log) 三位一体 链路、指标、拓扑、性能剖析,APM功能集成度高 专注于链路(Trace),指标和日志需与其他系统集成
0条评论
0 / 1000
廖****波
22文章数
0粉丝数
廖****波
22 文章 | 0 粉丝
原创

应用接入应用性能监控产品的方式选型参考

2026-01-13 10:28:02
1
0

天翼云应用性能监控组件(APM) 应用接入方式主要飞Java类应用的接入方式和非Java类的接入方式,Java类应用提供无侵入的接入方式,非Java类应用提供基于OpenTelemetry标准,全面兼容Jaeger、SkyWalking等多种开源接入协议。下面分析 OpenTelemetry、Jaeger、SkyWalking等接入方式给应用接入方案提供参考。

一、 OpenTelemetry(OTel)方式

1、数据采集原理

  • 标准化采集:OpenTelemetry 是一个开放标准,提供了一套统一的 API、SDK 和工具。OTel 不仅仅是“标准化采集”,它正在成为可观测性数据的统一事实标准。它合并了OpenTracing和OpenCensus,旨在提供从数据采集、处理到导出的全链路标准化。其“自动插桩”的能力和社区支持正在飞速增强。

  • 自动/手动插桩

    • 自动插桩:通过 OTel 提供的语言特定代理(如 Java Agent、Python 等)自动注入探针,无需修改代码即可采集 HTTP、数据库、RPC 等调用链路。

    • 手动插桩:开发者通过 OTel SDK 在关键代码位置手动添加追踪点,更灵活但需要代码改动。

  • 数据导出:采集的数据通过 OTLP(OpenTelemetry Protocol)协议导出到后端系统(如 Jaeger、Prometheus、Elasticsearch 等)。

2、对应用接入影响

  • 低侵入性(自动插桩):适合无代码改动场景,仅需部署时加载代理。

  • 灵活性强(手动插桩):支持自定义采集逻辑,但需开发配合。

  • 跨平台支持:支持多种语言和框架,生态兼容性好。

  • 性能开销:自动插桩有一定性能损耗,但通常可控。其开销通常低于许多私有代理。通过设置合理的采样率(如1%的尾部采样),可以将生产环境开销降至极低

3、未来趋势和发展

  • 强调 OTel 是云原生可观测性的未来方向。越来越多的商业和开源后端(如 Jaeger、Prometheus、Elastic APM、Datadog、Grafana Tempo)都原生支持 OTLP 协议,选择 OTel 意味着不会被某个特定后端锁定

二、SkyWalking 方式

1、数据采集原理

  • 探针采集:通过 Java Agent(或语言特定的探针)在应用启动时动态注入字节码,拦截关键方法调用(如 HTTP、DB、RPC)。

  • 服务网格集成:支持从 Istio、Envoy 等服务网格组件收集链路数据。

  • 数据上报:采集的链路和指标数据通过 gRPC/HTTP 上报到 SkyWalking OAP 服务进行存储和分析。

  • 高级特性:SkyWalking Agent 提供了丰富的插件化采集能力(如对 MySQL、Redis、Kafka、Dubbo、RocketMQ 等中间件的支持),开箱即用。

2、对应用接入影响

  • 无侵入/低侵入:主流方式是通过 Agent 实现无代码修改接入,只需在启动命令中添加 -javaagent 参数。

  • 语言支持:对 Java 支持最好,其他语言(如 Go、Python)也有探针,但可能功能或成熟度有差异。

  • 部署依赖:需部署 SkyWalking OAP 和 UI 服务,有一定运维成本。

  • 性能损耗:Agent 注入会带来一定性能开销,通常较小(<5%)。

四. Jaeger 方式

1、数据采集原理

  • 客户端 SDK 插桩:通过 Jaeger 客户端库(如 jaeger-client)在代码中手动或通过框架(如 OpenTracing)注入追踪逻辑。

  • 上下文传播:通过 HTTP Headers(如 uber-trace-id)在服务间传递链路上下文。

  • 数据上报:采集的链路数据通过 UDP/HTTP 发送到 Jaeger Agent,再由 Agent 转发到 Jaeger Collector。

2、对应用接入影响

  • 代码侵入性较强:通常需要手动添加追踪代码或依赖框架支持(如 Spring Cloud Sleuth)。

  • 部署复杂:需部署 Jaeger Agent、Collector、Query 等组件。

  • 灵活性高:支持自定义采样策略和标签注入。

  • 性能开销:取决于采样率和追踪粒度,全采样时开销较大。

特性 OpenTelemetry (OTel) SkyWalking Jaeger
核心定位 可观测性领域的统一标准与数据采集层 功能丰富的 APM(应用性能监控)系统 专注于分布式追踪的后端与可视化系统
采集原理 标准化 API/SDK,支持自动/手动插桩,数据格式为 OTLP 智能探针(Agent),侧重字节码注入与自动指标采集 传统为私有 SDK现代实践是作为 OTLP 数据的后端
侵入性 低(自动插桩)/ 中(手动插桩,但一劳永逸) 极低(Java等语言),无需修改代码 取决于采集层:若用OTel则同OTel;若用旧SDK则需代码改动
数据维度 链路(Trace)、指标(Metric)、日志(Log) 三位一体 链路、指标、拓扑、性能剖析,APM功能集成度高 专注于链路(Trace),指标和日志需与其他系统集成
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0