2143 字
11 分钟
Prometheus 是什么,为什么大家都用它做监控:给新手的一篇入门指南

如果你刚开始接触服务器、容器、虚拟机或者 DevOps,很快就会遇到一个问题:

我怎么知道我的服务现在是不是正常?

比如:

  • CPU 为什么突然飙高
  • 内存是不是快吃满了
  • 某个服务为什么会偶尔超时
  • 磁盘空间还剩多少
  • 某台机器到底什么时候开始变慢的

这些问题,本质上都指向同一件事:你需要监控。

而在现代监控体系里,Prometheus 基本算是最常见、也最值得新手尽早接触的一套工具。

这篇文章我尽量不用太绕的说法,讲清楚三件事:

  1. Prometheus 到底是什么
  2. 它平时是怎么工作的
  3. 新手应该怎么开始用它

Prometheus 是什么#

先用一句不太严格、但很好理解的话来说:

Prometheus 是一个专门用来采集、保存和查询监控指标的系统。

这里的重点是“指标”。

Prometheus 最擅长处理的,不是日志,不是错误堆栈,而是这些能量化的数值:

  • CPU 使用率
  • 内存占用
  • 磁盘剩余空间
  • HTTP 请求总数
  • 请求响应时间
  • 某个接口 500 错误出现了多少次

你可以把它理解成一套“专门记录数字变化趋势”的系统。

它和日志有什么区别#

这个问题几乎每个新手都会碰到。

日志更像“发生了什么”#

例如:

用户 A 登录成功
接口 /api/login 返回 500
数据库连接超时

日志擅长告诉你:

  • 某件事发生了
  • 发生在什么时候
  • 当时上下文是什么

Prometheus 更像“整体状态怎么样”#

例如:

  • 当前 QPS 是多少
  • 过去 5 分钟错误率是多少
  • 内存是不是一直在涨
  • 平均响应时间是不是比昨天高

所以你可以简单理解成:

  • 日志负责记录事件
  • Prometheus 负责记录数值趋势

它们不是互相替代,而是互补。

为什么 Prometheus 这么常见#

Prometheus 会这么流行,不是因为它听起来高级,而是因为它真的很适合现代服务环境。

1)它的模型很清楚#

Prometheus 的核心工作方式其实不复杂:

  1. 某个服务把自己的指标暴露出来
  2. Prometheus 定期去抓这些指标
  3. 把结果按时间存下来
  4. 你再去查这些数据、画图、做告警

就这么一条链路。

很多新手一开始会把它想得很玄,其实真正跑起来以后,会发现它比不少“传统大而全监控系统”更直观。

2)它很适合云原生和动态环境#

如果你的服务是:

  • Docker 容器
  • Kubernetes Pod
  • 多台 Linux 主机
  • 微服务

Prometheus 会很好用,因为它天生就是朝这种环境设计的。

3)它的数据模型很适合运维#

Prometheus 存的是时间序列数据

说白了就是:

某个指标,在某个时间点,值是多少。

例如:

  • node_cpu_seconds_total
  • node_memory_MemAvailable_bytes
  • http_requests_total

这种模型特别适合看趋势。

Prometheus 是怎么工作的#

如果你想入门,最重要的是先理解它的工作链路。

第一步:目标暴露指标#

Prometheus 不会凭空知道你的机器状态。

它需要有人把指标暴露出来。

例如:

  • Linux 主机可以跑 node_exporter
  • PostgreSQL 可以跑 postgres exporter
  • MySQL 可以跑 mysqld exporter
  • 应用程序自己也可以暴露 /metrics

这些 exporter 或应用,会提供一堆这样的内容:

node_cpu_seconds_total{cpu="0",mode="idle"} 12345.67
node_memory_MemAvailable_bytes 8246337208

你不用一开始就完全看懂这种格式,只要知道它本质上是:

  • 指标名
  • 标签
  • 当前值

第二步:Prometheus 去抓这些指标#

Prometheus 默认采用的是 pull 模式

也就是:

  • 不是客户端主动把数据推给 Prometheus
  • 而是 Prometheus 自己定时去抓

例如每 15 秒抓一次:

  • http://你的主机:9100/metrics
  • http://你的应用:8000/metrics

这个设计很适合内部服务网络,因为 Prometheus 可以统一控制采集节奏,也比较方便排错。

第三步:Prometheus 把数据存下来#

Prometheus 抓到的不是“一眼看完就丢”的瞬时值,而是把这些值按时间保存下来。

这样你后面就能查:

  • 最近 5 分钟 CPU 趋势
  • 过去 1 小时错误率
  • 某个服务这周的请求量变化

第四步:查询、图表、告警#

Prometheus 自己提供查询能力,但实际使用时,很多人会把它和 Grafana 搭配起来。

最常见的组合就是:

  • Prometheus:负责抓和存
  • Grafana:负责看图
  • Alertmanager:负责发告警

对新手来说,先把前两者理解清楚就已经够用了。

新手先记住这几个组件就够了#

1. Prometheus#

负责抓取和保存指标。

2. Exporter#

负责把系统或服务状态暴露成 Prometheus 能读懂的指标。

最常见的是:

  • node_exporter:监控 Linux 主机

3. Grafana#

负责把指标画成图。

4. Alertmanager#

负责发告警。

新手最适合从哪里开始#

我的建议很明确:

先别急着监控一切,先学会监控一台 Linux 主机。

这是最好的起点。

因为只要你能把下面这条链路跑通:

  • Linux 主机
  • node_exporter
  • Prometheus
  • Grafana

你对整套监控体系就已经有实际感觉了。

一个最基础的部署思路#

这里我先不讲 Kubernetes,也不讲太复杂的生产环境。

只讲一个新手最容易理解的版本。

目标#

你有一台 Linux 机器,想看到:

  • CPU
  • 内存
  • 磁盘
  • 网络

最简单的组成#

  • 目标主机上跑 node_exporter
  • Prometheus 去抓它
  • Grafana 读取 Prometheus 数据做展示

最小可运行的思路#

1)启动 node_exporter#

例如在 Linux 上运行:

Terminal window
./node_exporter

默认会监听:

:9100

你打开:

http://你的主机IP:9100/metrics

如果能看到一堆文本指标,说明第一步已经成功。

2)配置 Prometheus#

Prometheus 的配置文件核心长这样:

global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['192.168.1.100:9100']

意思很简单:

  • 每 15 秒抓一次
  • 目标是 192.168.1.100:9100

3)启动 Prometheus#

启动后,你去它的 Web UI,通常是:

http://你的Prometheus主机:9090

然后查一个最基础的指标:

up

如果返回 1,说明 Prometheus 已经成功抓到目标。

新手常见的疑问#

Q1:为什么我打开 /metrics 看到的是一堆文本,不是图表?#

因为 /metrics 本来就不是给人看的界面,它是给 Prometheus 抓取的原始数据接口。

图表应该去 Grafana 看,不是在 /metrics 看。

Q2:为什么 Prometheus 查到了数据,但我还是没感觉它有什么用?#

因为监控的价值通常不在“看一个瞬时值”,而在:

  • 长期趋势
  • 异常对比
  • 告警

也就是说,单看一次查询你可能没感觉,但一旦开始看图表和时间范围,感受会完全不一样。

Q3:Prometheus 能不能直接替代 Zabbix?#

能做的事情有重叠,但风格不完全一样。

如果你是新手,可以先这样理解:

  • Zabbix 更偏传统,配置项很多
  • Prometheus 更偏现代,时间序列核心更明显

不一定是谁彻底替代谁,而是看你的场景。

新手应该怎么学 Prometheus 才不容易乱#

我建议按这个顺序来:

第一步:先搞懂“指标”是什么#

至少知道:

  • 指标不是日志
  • 指标是数字趋势
  • Prometheus 是在存时间序列

第二步:只监控一台 Linux 主机#

先把:

  • node_exporter
  • Prometheus
  • Grafana

这一条链路跑通。

第三步:学会查几个最基础的指标#

例如:

  • up
  • node_cpu_seconds_total
  • node_memory_MemAvailable_bytes
  • node_filesystem_avail_bytes

第四步:再去学告警#

别一开始就把自己扔进 Alertmanager 规则里,那样很容易学乱。

写在最后#

如果你现在刚开始学监控,其实不用急着把 Prometheus 一次学完。

先把最朴素的一条链路跑通就够了:

  1. 找一台 Linux 机器
  2. 跑一个 node_exporter
  3. 用 Prometheus 抓到它的指标
  4. 再用 Grafana 把图画出来

当你真的看到:

  • CPU 曲线在跳
  • 内存在变化
  • 磁盘空间会随着使用慢慢下降

你对 Prometheus 的理解就会一下子具体很多。

很多人一开始会觉得监控很抽象,其实只是因为还没把第一张图画出来。只要第一步通了,后面再学 exporter、PromQL、告警规则,都会顺很多。

所以如果你现在正准备入门,我会建议你别先去啃那些很长的概念文章,直接找一台机器动手试一次。对新手来说,这比单纯看定义有效得多。

Prometheus 是什么,为什么大家都用它做监控:给新手的一篇入门指南
https://blog.yangyus8.top/posts/20260412-01/
作者
杨与S8
发布于
2026-04-12
许可协议
CC BY-NC-SA 4.0