OpenTelemetry 指标详解:Instruments、聚合与导出

OpenTelemetry Metrics 通过 Counter、UpDownCounter、Histogram、Observable Gauge 四种仪器采集指标,经聚合后由 Reader 导出。本文讲清仪器选型、聚合方式、View 定制与导出到观测云的配置方法。

最佳实践
OpenTelemetry 指标详解:Instruments、聚合与导出封面

OpenTelemetry Metrics 是 OTel 的指标信号体系:应用通过四种仪器(Counter、UpDownCounter、Histogram、Observable Gauge)记录测量值,SDK 按聚合规则汇总成数据点,再由 Reader 周期导出——与链路追踪的「单请求视角」不同,指标提供「全局水位视角」,是告警与容量规划的骨干数据。

核心要点速览

  • 计数用 Counter(只增),变化量用 UpDownCounter(可增可减),分布用 Histogram,瞬时值用 Observable Gauge;
  • Histogram 默认聚合为显式边界桶,新版本支持指数桶(Exponential Histogram)兼顾精度与体积;
  • View 可定制聚合方式与保留属性,是控制指标基数的关键手段;
  • 导出到观测云:OTLP 推送或 Prometheus 拉取,两条路都支持。

四种仪器怎么选?

仪器 语义 典型场景
Counter 单调递增 请求总数、错误总数、字节数
UpDownCounter 可增可减 当前连接数、队列深度、进行中任务
Histogram 分布统计 请求延迟、响应体大小
Observable Gauge 回调读取瞬时值 CPU 使用率、内存占用、温度

选错仪器的典型症状:用 Gauge 记录累计值导致重启归零、用 Counter 记录瞬时值导致数据无意义。

聚合与数据点类型

SDK 把原始测量值聚合成数据点:Sum(Counter/UpDownCounter)、Gauge、Histogram(桶计数)、Exponential Histogram。聚合发生在 SDK 内,网络上传输的是聚合后的紧凑数据——这是 OTel 指标高效的原因。

View:定制与基数控制

View 允许对仪器做二次定制:改聚合方式(如把 Histogram 降为 Sum 省成本)、裁剪属性(丢弃高基数标签)、重命名指标。控制指标基数最有效的位置就是 View——在数据离开 SDK 前把 user_id 之类的危险属性裁掉(基数纪律见《高基数问题》)。

导出:推还是拉?

  • OTLP 推送:周期性把指标推到 Collector 或 DataKit,适合服务实例动态伸缩的云原生环境;
  • Prometheus 拉取:暴露 /metrics 端点由 Prometheus 生态抓取,适合存量 Prom 体系。

观测云落地

  1. OTLP 路线:SDK 配置 OTEL_METRICS_EXPORTER=otlp,数据经 OTLP 进入观测云指标模块,用 DQL 查询、仪表板展示、监控器告警;
  2. Prometheus 路线:暴露端点后由 DataKit 的 prom 采集器抓取(支持 K8s 自动发现),平滑融入观测云;
  3. 告警闭环:指标接入后,监控器即可按服务/接口维度配置阈值、突变与无数据告警,通知到钉钉/企微/飞书。

常见问题(FAQ)

Q:OTel 指标和 Prometheus 指标能互转吗? 可以, Collector 与 DataKit 都支持格式转换;两者数据模型的差异与迁移要点见《OpenTelemetry 指标 vs Prometheus 指标》

Q:Histogram 桶边界怎么设? 默认边界覆盖常见 Web 延迟量级;业务特殊(如 AI 推理秒级到分钟级)时通过 View 自定义边界,或改用指数桶。

Q:指标采样间隔设多少合适? 默认 60s 适用于多数场景;高频波动指标可降到 15-30s,但注意成本线性上升。

Q:SDK 侧聚合和平台侧聚合冲突吗? 不冲突且互补:SDK 聚合控制传输体积,平台侧查询时按维度二次聚合。OTel 的 Sum 数据点带时间起点信息,平台能正确计算速率。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台