指标采集与观测
基于 Prometheus、OpenTelemetry Collector、Grafana 三份真实源码,把「系统到底在干什么」这件事从头讲透——数据模型、时序存储内核、查询引擎、统一管道、链路追踪、可视化与工程实践。
作者 David更新于
指标采集与观测
系统出问题时,最怕的不是报错,而是一片漆黑,不知道发生了什么。可观测性(Observability)就是给系统装上仪表盘和黑匣子——让运行中的系统能够自证“我现在在干什么、刚才发生了什么”。
这个专栏不停留在“怎么用 Prometheus 配个告警”,而是打开三个主流项目的真实源码,看这套体系到底怎么造出来的。
三个主角,一条链条
本专栏基于三份真实源码,它们恰好构成可观测性的完整链条:
| 项目 | 版本 | 在链条里的位置 |
|---|---|---|
| Prometheus | v3.13.1 | 采集 + 存储 + 查询(指标支柱的事实标准) |
| OpenTelemetry Collector | v0.156.0 | 统一管道(三大支柱的通用中转站) |
| Grafana | v13.1.0 | 观测端(可视化、探索、告警) |
数据从被埋点产生,经采集、管道、存储、查询,最后变成你屏幕上那条曲线——这条路上的每一站,我们都会打开源码看个究竟。
这个专栏怎么写
源码优先——凡有结论,尽量给出真实的文件路径 + 类型名 + 关键函数,而不是泛泛而谈“原理大概是这样”。
- 讲真实的实现 —— 比如 TSDB 的磁盘格式,我们直接读
tsdb/docs/format/里的官方规范和tsdb/的实现,而不是复述二手博客。 - 讲设计的取舍 —— 每个设计背后都有权衡(为什么 Prometheus 选 pull 而非 push?为什么 Collector 的管道是个 DAG?),取舍比结论更值得学。
- 一章一专题 —— 每篇聚焦一个问题,读完能答上“这块为什么存在、怎么和别的块协作”。
路线图
全 10 个部分、53 章:
| 部分 | 主题 | 核心问题 |
|---|---|---|
| 0 | 导论与全景 | 可观测性是什么、三大支柱、一条指标的一生 |
| 1 | Prometheus:数据模型与采集 | 指标长什么样、怎么被抓回来 |
| 2 | 指标体系:RED、USE 与黄金信号 | 该定义哪些指标、怎么命名、合理范围是多少 |
| 3 | TSDB:时序存储内核 | 海量时序数据怎么存得下、查得快 |
| 4 | PromQL:查询引擎与实战 | 怎么从数据里问出答案 |
| 5 | 告警工程 | 什么时候该叫醒你、阈值怎么定、怎么不被淹没 |
| 6 | OpenTelemetry Collector:统一管道 | 三大支柱怎么被同一条管道运送 |
| 7 | 链路追踪与日志支柱 | 一个请求怎么被串起来 |
| 8 | Grafana:观测端 | 数据怎么变成能看懂的东西 |
| 9 | 工程实践与收尾 | 基数爆炸、成本、落地路径、全专栏回顾 |
适合谁读
写过服务、配过监控、但想知道盒子里到底怎么回事的人。你不需要精通 Go——源码片段都会配上人话解释;但如果你能读 Go,收获会更大。
准备好了就开始。👉 为什么需要可观测性。