当前位置:首页 >专题 >Go OpenTelemetry 可观测性实战

Go OpenTelemetry 可观测性实战
Go OpenTelemetry 可

Go OpenTelemetry 可观测性实战

从 SDK、埋点与上下文传播到 OTLP、Collector 和采样治理
这个专题面向已经开发过 Go 服务、准备把日志、指标和链路追踪真正接入生产环境的开发者。内容从 OpenTelemetry Go SDK 和手动埋点开始,逐步覆盖 HTTP 与微服务上下文传播、Jaeger/OTLP 导出、Collector 部署、异步任务和采样治理,帮助你把一次请求从代码一路追到后端。

官方入口

先用一手资料建立正确的版本与架构认知

OpenTelemetry Go 官方文档
外链

OpenTelemetry Go 官方文档

Go API、SDK、Traces、Metrics、Logs、Instrumentation、Exporters、Sampling 与 Examples 的官方入口。
Go Getting Started 快速开始
外链

Go Getting Started 快速开始

用 Go HTTP 示例完成 SDK 初始化、手动埋点并输出 traces、metrics 和 logs。
OpenTelemetry Go Instrumentation
外链

OpenTelemetry Go Instrumentation

官方说明手动 instrumentation、库级 instrumentation 以及 Go 应用的埋点边界。
OpenTelemetry Collector 官方文档
外链

OpenTelemetry Collector 官方文档

覆盖 Collector 的安装、配置、Receivers、Processors、Exporters、部署模式与扩展。
OpenTelemetry Go GitHub 仓库
外链

OpenTelemetry Go GitHub 仓库

查看 Go API/SDK 源码、版本发布、兼容性和 issue 讨论。

实战学习路径

从单体埋点推进到跨服务和生产治理

Golang实现OpenTelemetry链路追踪指南
文章

Golang实现OpenTelemetry链路追踪指南

从依赖安装、Tracer、Exporter、Sampler 到 HTTP 框架、异步任务和 Collector,覆盖 Go 接入 OTel 的完整实践。
Golang分布式追踪集成全解析
文章

Golang分布式追踪集成全解析

讲解 TracerProvider、Sampler、SpanProcessor、OTLP/Jaeger 导出和 HTTP Context 传播。
Golang微服务链路追踪:Jaeger与OpenTelemetry配置详解
文章

Golang微服务链路追踪:Jaeger与OpenTelemetry配置详解

以 Jaeger 和 OpenTelemetry 为例,覆盖 otelhttp、BatchSpanProcessor、采样和链路分析。
Go 分布式链路追踪实现原理解析
文章

Go 分布式链路追踪实现原理解析

从分布式系统的请求链路和追踪模型出发,解释跨服务排障与性能定位。
使用 Golang otelmux 检测 OTEL 跟踪,获取 trace_id 的方法
文章

使用 Golang otelmux 检测 OTEL 跟踪,获取 trace_id 的方法

围绕 otelmux 中间件和 trace_id 获取,说明如何把请求链路标识接入 Go Web 服务。
远程父跨度如何正确传递使用 NATS?
文章

远程父跨度如何正确传递使用 NATS?

讨论使用 NATS 传递远程 Span 上下文,关注消息系统中的父子链路关联。
Golang集成Linkerd2-proxy服务网格教程
文章

Golang集成Linkerd2-proxy服务网格教程

介绍 Go 应用接入 Linkerd 后的服务网格行为,以及 OpenTelemetry 上下文传播关系。
Golang微服务架构实现详解
文章

Golang微服务架构实现详解

从服务拆分、通信、发现到日志、监控和 OpenTelemetry,串起微服务工程背景。

常见问题

接入 OpenTelemetry 前后最容易混淆的边界

OpenTelemetry、Jaeger 和 Collector 分别是什么?

OpenTelemetry 负责标准化 API、SDK 和数据模型,Collector 负责接收、处理与转发遥测数据,Jaeger 是常见的 Trace 存储与可视化后端;三者可以组合使用,但不是同一个组件。

Go 服务应该全部手动创建 Span 吗?

不需要。HTTP、数据库、消息客户端等优先使用成熟 instrumentation 库,业务关键步骤再补手动 Span,并统一命名、属性和错误记录规则。

为什么 Goroutine 中的 Trace 会断掉?

通常是因为启动异步任务时没有传递包含 Span 的 Context,或任务生命周期结束后 Span 才被错误地结束。应显式传递 Context,并为异步任务设置清晰的 Span 边界。

生产环境如何控制 OpenTelemetry 的性能开销?

使用 BatchSpanProcessor,合理设置采样策略,避免把高基数或敏感数据写入属性,并通过 Collector 承担批处理、过滤和路由;上线前用压测验证实际开销。

微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码