本篇是《Prometheus 从入门到生产实践》第 2 / 24 篇。配置以文中版本与环境前提为准,实验和故障均为教学场景。完整程序、配置及校验范围见配套实验包。
本篇先跑通一个最小系统:Prometheus 监控自己,再接入一个专用业务 exporter。目标是把“二进制启动、配置通过、端点就绪、采集成功、查到数据”分别验证。

1. 获取适合平台的二进制
从 官方下载入口 选择符合操作系统、CPU 架构和支持策略的发行包,并核对官方校验和。Prometheus 包中包括 prometheus 与 promtool;Alertmanager 包还包括 amtool。记录实际版本,不要仅记录“最新版”。
以下命令以 Linux Shell、二进制已放入 PATH 为前提。Windows 使用相同参数调用相应 exe,Python 可使用选定环境的 python;终端激活和后台服务管理方式需按系统调整。
prometheus --version
promtool --version
python3 --version
在新建的练习目录解压配套配置和程序。这里不修改系统已有的 Prometheus 服务,不复用生产 TSDB 目录。
2. 阅读最小完整配置
保存或使用包内 prometheus.yml:
global:
scrape_interval: 5s
scrape_timeout: 3s
evaluation_interval: 5s
external_labels:
environment: lab
rule_files:
- a-recording.rules.yml
- b-rules.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['127.0.0.1:19090']
- job_name: demo
static_configs:
- targets: ['127.0.0.1:19100']
alerting:
alertmanagers:
- static_configs:
- targets: ['127.0.0.1:19093']
scrape_interval 控制采集周期,scrape_timeout 控制一次抓取等待,evaluation_interval 控制规则求值。一次求值与一次采集不保证严格同时发生;查询中的最新样本不等于此刻瞬间采到。
demo job 先写在配置里,下一篇启动 exporter 后才会成功;Alertmanager 未启动时,不能认为通知链路已经就绪。外部标签 environment 用于与外部系统交互,不会自动成为本地每条指标的普通查询标签。
3. 校验配置与启动
promtool check config prometheus.yml
prometheus --config.file=prometheus.yml --storage.tsdb.path=./data --web.listen-address=127.0.0.1:19090
第一个命令检查配置及相关资源;不会替你证明网络可达、权限正确或目标符合 exposition 格式。第二条在前台启动,使用自己独立的 data 目录。
另开终端:
curl --fail --max-time 5 http://127.0.0.1:19090/-/healthy
curl --fail --max-time 5 http://127.0.0.1:19090/-/ready
healthy 与 ready 表达不同状态;进程已存在也不代表回放和初始化已完成。再访问 /targets,看 prometheus 自身目标是否为 UP,最后查询 up{job="prometheus"}。
官方启动流程见 First steps,配置含义见 配置参考。
4. 增加教学 exporter
在另一个终端启动:
python3 demo_exporter.py
访问 http://127.0.0.1:19100/metrics,确认返回指标文本。等到至少一次采集后,demo 的 up 应变为 1。初始业务计数为 0 是正常的,还没有人为产生流量。
运行 python3 traffic.py --count 60 产生教学请求,其中每五次出现一次 500,每十次包含一次慢请求。这个过程能观察计数增长和延迟分布,具体延迟受调度影响,不把固定毫秒数作为精确验收条件。
5. 最常见的启动问题
端口冲突时查看本机监听,选择另一组端口并同步修改目标;配置语法错误时按 promtool 指向的位置修正;权限错误时核对数据目录的所属用户;目标 DOWN 时从 Prometheus 实际网络环境访问最终抓取 URL。
修改完整配置后需要按实例支持的方式重载,例如向已确认的 Prometheus 进程发送 SIGHUP;HTTP 生命周期接口只有启用对应选项才可用。不要为了方便把写管理接口暴露到不可信网络。
6. 实验验收与收尾
至少记录版本、配置路径、数据路径、监听地址、自监控 up 和 demo up。没有业务样本时先产生请求,不要立刻修改 PromQL。
前台实验结束可用 Ctrl+C 依次停止各程序。保留 data 方便下次观察历史;删除目录不是验证配置恢复的必要步骤。生产环境再把启动参数、运行用户、日志和重载策略纳入服务管理。