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/
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,恭喜你,部署成功了!
up 这个指标,点击 Execute。如果返回 1,说明 Prometheus 正在正常抓取数据。这个指标我几乎每天都会看,是监控系统健康的「体温计」。
好了,部署这块就这些。二进制部署稳如老狗,Docker 部署快如闪电。你根据自己场景选就行。下一章咱们聊聊 Prometheus 的核心数据模型,那才是真正有意思的地方。