大家好!今天我们将深入探讨 OpenTelemetry 的核心——指标(Metric),它对于观察系统状态和解决问题至关重要。🔍
指标能够清晰地用数字表达系统的健康状况!但实际使用时,可能会对选择哪种类型感到困惑。通过今天的文章,让我们彻底掌握 OpenTelemetry 的标准指标类型吧!

1. 计数器 (Counter) 📈
计数器顾名思义,是一种测量持续单调递增值的指标。就像汽车的总里程表一样,其值只会增加,绝不会减少。只有在系统重启时才会重置为0。
由于这一特性,它非常适用于记录“累积”值。
✅ 适用于以下情况!
- 网站的总页面浏览量 📄
- API 服务器处理的总请求数 🚀
- 迄今为止发生错误的累计次数 ❌
- 添加到工作队列的总任务数 📥
2. 仪表 (Gauge) 🌡️
仪表是一种像快照一样测量特定时间点值的指标。就像温度计或汽车的速度表一样,其值可以自由地上下波动。
可以说,它是最适合了解系统“当前”状态的指标。
✅ 适用于以下情况!
- 当前 CPU 使用率 💻
- 当前内存使用量 🧠
- 当前活跃用户数 👥
- 队列中等待的任务数量 ⏳
3. 直方图 (Histogram) 📊
直方图是一种表示特定期间内收集到的值统计分布的指标。它不仅仅是一个单一的值,而是显示观测到的值在哪些范围(桶,bucket)内有多少分布。
通过它,不仅可以获得平均值,还可以获得中位数、百分位数(Percentile,例如:95%、99%)等更深入、更有意义的数据。它可以准确捕捉“大多数请求很快,但有些请求非常慢”之类的情况。
✅ 适用于以下情况!
- HTTP 请求的响应时间分布 ⏱️
- 数据库查询执行时间 💾
- 文件上传大小分布 📁
- 消息队列的消息处理延迟时间 🕰️
💡 等一下!“时间”如何测量?
“那么,如果像 API 响应时间一样,要测量‘时间(Time)’或‘持续时间(Duration)’,应该使用哪种指标呢?难道没有单独的‘Timer’类型吗?” 🤔
这是一个非常好的问题,也是许多人感到困惑的地方!
直接说结论,OpenTelemetry 的官方标准指标类型中不包含‘Timer’。
那么,时间相关的数据如何测量呢?答案就是使用上面解释过的直方图(Histogram)!
直方图是测量特定操作所花费的时间(duration)并分析这些值分布的最理想工具。使用直方图,可以获得设定和管理服务水平目标(SLO)所必需的洞察,例如“平均响应时间是 50ms,但前 1% 的请求需要 1000ms 以上”。
总结 ✨
好了,今天我们详细了解了 OpenTelemetry 的三大核心指标。
- 🔢 Counter: 持续累加的累计值!
- 🌡️ Gauge: 上下波动的当前快照值!
- 📊 Histogram: 通过值分布进行深入分析! (也用于时间测量!)
现在,当您监控系统时,应该能够自信地选择适合您要测量数据性质的正确指标类型了吧? 😉
发表回复