Prometheus 监控入门指南
Prometheus 是云原生监控的事实标准。本文讲清它的拉取模型、指标格式、四种指标类型、服务发现、PromQL 与告警链路,以及它擅长和不擅长的场景。
Prometheus 是云原生时代监控系统的事实标准:开源、CNCF 毕业项目、K8s 生态原生支持。无论你是要搭建自研监控,还是理解现代可观测性体系的设计思想,Prometheus 都是必修课。
核心工作模型:拉取(Pull)
Prometheus 的工作方式是定期抓取:被监控的目标(应用、exporter)通过 HTTP 暴露一个 /metrics 端点,Prometheus 按配置周期(如 15s)去拉取。
/metrics 端点暴露的是人类可读的文本格式:
# HELP http_requests_total Total number of HTTP requests made.
# TYPE http_requests_total counter
http_requests_total{method="GET", status="200"} 1027
http_requests_total{method="POST", status="500"} 3
每条指标 = 名称 + 标签集(labels)+ 数值 + 时间戳。标签是多维度的关键——同一个 http_requests_total,按 method、status 等标签切分出不同的时间序列。
拉取 vs 推送
拉取模型的好处:Prometheus 知道目标"应该"在哪,拉不到就知道目标可能挂了(up==0);目标侧无状态,重启不影响采集。对短命任务(批处理 Job、Serverless 函数)则通过 Pushgateway 中转——任务把指标推给网关,Prometheus 再来拉。
四种指标类型
| 类型 | 语义 | 典型用途 |
|---|---|---|
| Counter | 只增不减的计数器 | 请求总数、错误总数 |
| Gauge | 可升可降的瞬时值 | 内存占用、队列长度、温度 |
| Histogram | 分桶统计分布 | 请求延迟分布(算 P99) |
| Summary | 客户端算分位数 | 延迟分位(不能聚合,谨慎用) |
组件生态
- Exporters:给不原生支持 Prometheus 的系统做适配——Node Exporter(主机)、MySQL Exporter、Blackbox Exporter(探测)等数百种;
- 服务发现:K8s、Consul、云厂商 API……目标动态出现/消失时自动更新抓取列表,这是 Prometheus 适应容器环境的关键;
- PromQL:强大的时序查询语言,聚合、速率、分位数计算都靠它;
- Alertmanager:告警分组、去重、路由、静默——Prometheus 评估规则产生告警,Alertmanager 负责怎么送达;
- Grafana:可视化的事实标准搭档。
Prometheus 擅长什么
- 云原生基础设施监控:K8s、容器、微服务的指标采集与告警,生态无敌;
- 动态环境:服务发现让实例伸缩不需要人工维护监控配置;
- 独立可靠:单体部署、本地存储,别的系统全挂了它还能抓数据——排障时这很关键。
Prometheus 不擅长什么
- 精确计数以外的用途:它是"采样式"的,不适合财务级精确审计、逐条计费;
- 长期存储:本地 TSDB 默认保留 15 天,长期留存需要 remote write 到 Thanos/Mimir 等远端存储,架构复杂度上来了;
- 日志与链路:它只管指标,日志和 Trace 要别的系统;
- 水平扩展与高可用:原生不支持集群,需要 Thanos/Cortex/Mimir 等方案补齐。
观测云对照
如果 Prometheus 的这些短板正是你的痛点,观测云提供了另一条路:DataKit 直接兼容 Prometheus 生态——可以抓取 exporter 的指标、接收 remote write 数据,指标与日志、Trace 统一存储统一查询;存储保留期按策略配置,不用自建 Thanos;告警、仪表盘开箱即用。现有 Prometheus 资产(exporter、规则)可以平滑迁移,不需要推倒重来。
常见问题(FAQ)
Q:Prometheus 和 Zabbix 怎么选?
A:云原生/容器/K8s 场景选 Prometheus(生态碾压);传统主机+网络设备监控、偏运维文化的团队,Zabbix 仍然顺手。两者也可以通过 exporter 共存。
Q:Prometheus 能监控 Windows 吗?
A:能,用 Windows Exporter(原 wmi_exporter)。指标丰富度不如 Node Exporter,但核心指标齐全。
Q:单机 Prometheus 能扛多大规模?
A:经验值:单机每秒百万级样本摄入是可行的,瓶颈通常在标签基数(时间序列总数)而非样本量。控制在百万级活跃序列以内,单机很稳。