# 本机要把服务指标存下来再查，Prometheus 这一层是采集存储吗？

**URL:** <https://www.shiqidu.com/t/topic/2045>\
**Category:** 开发调优\
**Tags:** 问与答, Linux, 编程, 服务器, 开源软件\
**Created:** [2026 年11 月 12 日 08:50 UTC](https://www.shiqidu.com/t/topic/2045 "2026-11-12T08:50:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![shiqidu\_editor](https://www.shiqidu.com/user_avatar/www.shiqidu.com/shiqidu_editor/32/528_2.png) [@shiqidu\_editor](https://www.shiqidu.com/u/shiqidu_editor)\
发布日期： [2026 年11 月 12 日 08:50 UTC](https://www.shiqidu.com/t/topic/2045/1 "2026-11-12T08:50:36Z")

</div>

打开观测相关的文档，有人会先想到探针把样本推到某个平台。Prometheus 自己的入门页里，却是抓取、本地库和表达式浏览器叠在一起，一时分不清这一层有没有把时间序列留下来。

官方同时保留了两份入门页：[First steps with Prometheus](https://prometheus.io/docs/introduction/first_steps/) 和 [Getting started](https://prometheus.io/docs/prometheus/latest/getting_started/)。两条都还在，没有并成一页。两者都从本机下载解压、写 `prometheus.yml`、启动单一二进制开始，让服务器抓取目标上的指标 HTTP 端点，并在本机查询。发行包解压后，服务器就是名为 `prometheus` 的那一个文件，在 Windows 上则是 `prometheus.exe`。First Steps 的定位很直接：Prometheus 是一套监控平台，通过抓取这些端点来收集数据。该页还说明，入门时第一个被抓取的对象可以就是 Prometheus 自己，因为它会暴露内存、垃圾回收等进程级指标。Getting Started 补了一句启动时的默认行为：时间序列库默认写在 `./data`，路径可用 `--storage.tsdb.path` 修改。这一层会采集，也会在本地保存，不是只把样本转手送走。

最小配置在两份文档里结构相近，通常能看到 `global`、`rule_files` 和 `scrape_configs` 三段。`global` 里常见的 `scrape_interval` 示例是 15 秒，控制默认抓取间隔，单个目标还可以覆盖。`evaluation_interval` 控制规则多久计算一次。入门阶段 `rule_files` 可以先留空。`scrape_configs` 里先放一个名为 `prometheus` 的 job，静态目标是 `localhost:9090`。服务器自己也会在 `/metrics` 暴露指标，默认任务抓的就是 `http://localhost:9090/metrics`。启动命令是 `./prometheus --config.file=prometheus.yml`。启动之后可以打开 `http://localhost:9090` 查看状态页。First Steps 建议大约再等 30 秒，让服务器完成一次针对自己的抓取。也可以直接打开 `http://localhost:9090/metrics`，确认服务器正在对外提供自己的指标。

查询入口是 `http://localhost:9090/query`。First Steps 在 Table 页用 `promhttp_metric_handler_requests_total` 作例子，Getting Started 则用 `prometheus_target_interval_length_seconds`。同一指标名会带不同标签，可以用 `{code="200"}` 这类选择器收窄，也可以用 `count()` 统计序列条数，或用 `rate(...[1m])` 在 Graph 页看速率。表达式语言的细节以文档里链出的说明为准，入门时先把「能查到刚抓进来的序列」确认下来即可。

要观察本机以外的目标，两份文档都用 node exporter 做下一跳：对方在自己的端口上提供 `/metrics`，再在 `scrape_configs` 里加一个 job。First Steps 的示例监听 9100，改完配置后需要重启，大约 30 秒后就可以查 `node_memory_MemAvailable_bytes` 这类主机指标。Getting Started 则起了三个示例进程，并用 `group` 标签区分，随后可在 `http://localhost:9090/targets` 上看目标是不是已经显示为 `UP`。Getting Started 还演示了记录规则：把已经稳定的聚合表达式写入 `prometheus.rules.yml`，再在 `rule_files` 里引用，让计算结果作为新的时间序列落下。这是查询跑通之后的下一步，不是启动时的必需项。配置改完后，也可以按该页用 `SIGHUP` 重载，不一定每次都重启进程。结束进程时该页建议用 `SIGTERM` 或 `SIGINT`，便于把本地库收干净。

业务进程若要暴露自己的指标，需要在代码里用客户端库埋点，官方列在 [Client libraries](https://prometheus.io/docs/instrumenting/clientlibs/)，按语言可选用 Go、Java 或 Scala、Node.js、Python、Ruby、Rust 等实现。入门这一步先把抓取、本地存储和查询跑通即可，不必先搭整套观测平台。Prometheus 和站内那篇 [OpenTelemetry](https://www.shiqidu.com/t/topic/1939) 要分开看：那篇问的是 OTel 算不算观测后端、数据怎么送出去，这里只谈 Prometheus 自己如何在本机抓取并留下时间序列。若要对照的是日志而不是指标，那是 [VictoriaLogs](https://www.shiqidu.com/t/topic/1945) 那一侧的事，不要和这套指标库混成同一层。

你们本机现在是先把 Prometheus 跑起来自己查，还是只把它当成往外送样本的一环？
