Uptrace 平台概览

Uptrace 是一个开源的 APM(Application Performance Monitoring)和可观测性平台,基于 OpenTelemetry 标准协议,提供分布式追踪、指标监控和日志收集能力。本文档介绍有道内部高可用 Uptrace 平台的使用方法。

平台介绍

有道内部部署的 Uptrace 平台是一个高可用的可观测性解决方案,为内部应用提供:

  • 分布式追踪:记录请求在系统中的完整调用链路
  • 指标监控:采集系统和业务的性能指标
  • 日志收集:结构化日志收集,与 Trace 自动关联
  • 服务拓扑:可视化服务依赖关系和调用关系
  • 告警通知:基于指标和错误的告警机制

平台访问

Web 控制台

访问地址:https://uptrace.inner.youdao.com/

通过浏览器登录后,您可以:

  • 查看项目的追踪数据、指标和日志
  • 配置告警规则和通知渠道
  • 管理项目设置和权限
  • 查看服务拓扑图

服务端点

Uptrace 平台提供两个服务端点用于数据接入:

gRPC 端点(推荐)

uptrace-grpc.yodao.cn:4317

用于 OpenTelemetry OTLP over gRPC 协议的数据传输,性能更好,推荐用于生产环境。

HTTP 端点

uptrace-grpc.yodao.cn

用于 OpenTelemetry OTLP over HTTP 协议的数据传输,兼容性更好。

端点选择建议

  • 生产环境:优先使用 gRPC 端点(端口 4317)
  • 开发/测试环境:可以使用 HTTP 端点(端口 80)
  • 防火墙限制:如果 4317 端口被限制,使用 HTTP 端点

平台架构

┌─────────────────┐
│ Application │
│ ┌───────────┐ │
│ │ OTel SDK │ │
│ └─────┬─────┘ │
└─────────┼───────┘
│
┌────▼────────────┐
│ OTLP Protocol │
│ (gRPC/HTTP) │
└────┬────────────┘
│
┌────▼──────────────────┐
│ Uptrace Platform │
│ uptrace.inner. │
│ youdao.com │
└───────────────────────┘
│
┌────▼────────────┐
│ ClickHouse │
│ (数据存储) │
└─────────────────┘

高可用性

内部 Uptrace 平台采用高可用架构:

  • 多实例部署:平台服务采用多实例部署,确保单点故障不影响服务
  • 数据冗余:数据存储在 ClickHouse 集群中,提供数据冗余和备份
  • 负载均衡:通过负载均衡器分发请求,提高系统吞吐量
  • 监控告警:平台自身具备完善的监控和告警机制

支持的信号类型

Traces(追踪)

分布式追踪记录请求在系统中的完整调用路径,包括:

  • Span 信息:操作名称、时间戳、持续时间
  • 调用关系:服务间的调用链路
  • 属性信息:HTTP 方法、URL、状态码等
  • 错误信息:异常堆栈、错误消息

使用场景:

  • 性能瓶颈分析
  • 故障根因定位
  • 服务依赖分析
  • 调用链路可视化

Metrics(指标)

指标是关于系统状态的数字测量值,包括:

  • 系统指标:CPU、内存、网络、磁盘使用率
  • 应用指标:请求量、响应时间、错误率
  • 业务指标:订单量、支付成功率等自定义指标

使用场景:

  • 性能监控
  • 容量规划
  • 趋势分析
  • 告警触发

Logs(日志)

结构化日志收集,支持:

  • 日志级别:DEBUG、INFO、WARN、ERROR
  • 日志关联:与 Trace 自动关联
  • 日志搜索:全文搜索和过滤
  • 日志聚合:按服务、环境等维度聚合

使用场景:

  • 错误排查
  • 日志分析
  • 审计追踪
  • 问题定位

数据接入方式

Uptrace 平台支持多种数据接入方式:

OpenTelemetry SDK(推荐)

使用 OpenTelemetry SDK 直接接入,支持所有主流语言:

  • Go、Python、Java、JavaScript、.NET、PHP、Rust、C++
  • 支持 Traces、Metrics、Logs 三种信号
  • 零代码接入或 SDK 手动接入

详细接入方法请参考语言接入指南。

OpenTelemetry Collector

通过 OpenTelemetry Collector 统一收集和转发数据:

  • 支持多种数据源(Prometheus、Jaeger、Zipkin 等)
  • 数据转换和过滤
  • 批量处理和路由

其他方式

  • Prometheus:直接导出 Metrics
  • Vector/Fluent Bit:日志收集和转发
  • AWS CloudWatch:云服务指标和日志

平台功能

1. 追踪数据查看

  • Trace 列表和搜索
  • Span 详情和调用链路
  • 性能分析和瓶颈识别
  • 错误追踪和根因分析

2. 指标监控

  • Metrics 查询和图表展示
  • 自定义 Dashboard
  • 指标聚合和计算
  • 趋势分析和预测

3. 日志查询

  • 日志搜索和过滤
  • 日志关联 Trace
  • 日志聚合和统计
  • 实时日志流

4. 服务拓扑

  • 服务依赖关系图
  • 服务间调用关系
  • 性能指标展示
  • 服务健康状态

5. 告警配置

  • 告警规则设置
  • 通知渠道配置(邮件、Slack、Telegram 等)
  • 告警历史记录
  • 告警抑制和恢复

快速开始

  1. 创建项目:通过工单创建 APM 项目(项目创建与管理)
  2. 获取 DSN:在项目设置中查看 DSN(DSN 配置与查看)
  3. 接入应用:使用 OpenTelemetry SDK 接入应用(语言接入指南)
  4. 查看数据:在平台控制台查看追踪数据、指标和日志(平台功能使用)

下一步

参考资源

在Gitlab上编辑本文档