3. Prometheus 部署:二进制部署、Docker 部署、配置文件详解、启动与验证

好,咱们进入正题。Prometheus 的部署方式,说白了就两种主流选择:二进制部署Docker 部署。我个人习惯是,生产环境用二进制,开发测试环境用 Docker。为什么?你想想看,二进制部署对系统的侵入性最小,性能也最可控。而 Docker 部署嘛,胜在快速、干净,适合快速验证想法。

3.1 二进制部署

这是最传统的方式,也是我最推荐的方式。我在项目中遇到过不少因为 Docker 网络问题导致的监控数据采集异常,二进制部署反而更稳。

第一步:下载

去 Prometheus 的 GitHub Releases 页面,找到对应你系统架构的版本。一般 Linux amd64 就够了。

# 我习惯用 wget 直接拉
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

第二步:解压与安装

tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
cd prometheus-2.45.0.linux-amd64
# 把二进制文件放到 /usr/local/bin 下,方便全局调用
sudo cp prometheus promtool /usr/local/bin/
# 配置文件和数据目录,我习惯放在 /etc/prometheus 和 /var/lib/prometheus
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo cp prometheus.yml /etc/prometheus/
💡 我的小习惯: 我会把 prometheus.yml 放在 /etc/prometheus/ 下,数据目录放在 /var/lib/prometheus/。这样后续升级时,只需要替换二进制文件,配置和数据都不会丢。

3.2 Docker 部署

如果你只是想快速体验,或者你的基础设施本身就是容器化的,那 Docker 部署就是你的菜。

# 拉取镜像
docker pull prom/prometheus:v2.45.0

# 启动容器
docker run -d \
  --name prometheus \
  -p 9090:9090 \
  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
  -v /path/to/data:/prometheus \
  prom/prometheus:v2.45.0
⚠️ 注意: 我曾经因为忘记挂载数据卷,导致容器重启后所有历史数据丢失。嗯,那感觉就像辛辛苦苦攒的积分清零了一样。所以,数据卷一定要挂载

3.3 配置文件详解

配置文件 prometheus.yml 是 Prometheus 的灵魂。说白了,它告诉 Prometheus 三件事:抓谁的数据怎么抓数据存哪

一个最简配置长这样:

global:
  scrape_interval: 15s      # 默认抓取间隔
  evaluation_interval: 15s  # 规则评估间隔

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

咱们拆开来看:

配置项 说明 我的建议
global.scrape_interval 全局抓取间隔,默认 1 分钟 生产环境建议 15s 或 30s,别太频繁,容易把目标打挂
global.evaluation_interval 告警规则评估间隔 和抓取间隔保持一致就行
scrape_configs 定义要抓取的目标 每个 job 代表一组同类目标
static_configs.targets 静态目标列表 格式是 IP:端口

核心要点: 配置文件里最常改的就是 scrape_configs。每当你新增一个服务要监控,就得在这里加一个 job。我在项目中维护过一个 200 多行的配置文件,全是各种 job 定义。

3.4 启动与验证

配置写好了,怎么启动?

二进制启动:

# 前台启动,方便看日志
prometheus --config.file=/etc/prometheus/prometheus.yml

# 后台启动,我一般用 nohup 或者 systemd
nohup prometheus --config.file=/etc/prometheus/prometheus.yml &

Docker 启动:

上面已经给了命令,这里不重复。启动后可以用 docker logs prometheus 看日志。

验证:

启动后,打开浏览器访问 http://你的服务器IP:9090。如果看到 Prometheus 的 Web UI,说明启动成功。

然后,在 Web UI 的「Status」->「Targets」页面,你会看到你配置的 job 状态。如果都是 UP,恭喜你,部署成功了!

🔍 验证小技巧: 在 Web UI 的「Graph」页面,输入 up 这个指标,点击 Execute。如果返回 1,说明 Prometheus 正在正常抓取数据。这个指标我几乎每天都会看,是监控系统健康的「体温计」。
⚠️ 避坑指南: 我曾经在部署时,防火墙没开 9090 端口,结果 Web UI 死活打不开。排查了半天才发现是端口没放行。所以,记得检查防火墙和云服务商的安全组规则

好了,部署这块就这些。二进制部署稳如老狗,Docker 部署快如闪电。你根据自己场景选就行。下一章咱们聊聊 Prometheus 的核心数据模型,那才是真正有意思的地方。