17.2.4 启动与运行参数配置

启动与运行参数配置#

Prometheus 启动的核心是“二进制 + 配置 + 数据目录 + 运行参数”。本节以 systemd 为主线,补充容器运行与热加载,并给出排错与练习。

原理草图:启动参数如何生效

文章图片

示例一:systemd 启动(推荐生产使用)
- 文件路径规划:
- 二进制:/usr/local/bin/prometheus
- 配置:/etc/prometheus/prometheus.yml
- 数据:/var/lib/prometheus

1)创建 systemd 服务单元

# /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network-online.target
Wants=network-online.target

[Service]
User=prometheus
Group=prometheus
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --storage.tsdb.retention.time=15d \
  --web.listen-address=0.0.0.0:9090 \
  --web.enable-lifecycle \
  --log.level=info
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

2)启动与查看状态

# 重新加载 unit
systemctl daemon-reload

# 启动服务
systemctl enable --now prometheus

# 查看状态与日志
systemctl status prometheus -l
journalctl -u prometheus -f

3)命令解释要点
- --config.file:主配置路径,加载 scrape/alert 规则
- --storage.tsdb.path:TSDB 数据目录,建议独立磁盘
- --storage.tsdb.retention.time:保留时长,如 15d
- --web.listen-address:监听地址与端口
- --web.enable-lifecycle:允许 /-/reload 热加载

示例二:Docker 启动(便于测试/快速部署)

docker run -d --name prometheus \
  -p 9090:9090 \
  -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
  -v /var/lib/prometheus:/prometheus \
  prom/prometheus:v2.49.0 \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/prometheus \
  --storage.tsdb.retention.time=7d \
  --web.enable-lifecycle

示例三:热加载配置(无需重启)

# 前提:启动参数包含 --web.enable-lifecycle
curl -X POST http://127.0.0.1:9090/-/reload

预期效果:返回 200 OK,Prometheus 重新加载配置。

常见运行参数速查

# 监听地址
--web.listen-address=:9090

# 外部访问地址(反向代理/子路径部署)
--web.external-url=https://monitor.example.com/prom
--web.route-prefix=/prom

# 限制查询并发/超时
--query.max-concurrency=20
--query.timeout=30s

# 日志级别
--log.level=debug

排错清单与处理
1. 启动失败:Error loading config
- 检查配置语法:
bash /usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --log.level=debug
2. 端口占用:listen tcp :9090: bind: address already in use
- 查找占用进程并调整端口:
bash ss -lntp | grep 9090
3. 数据目录权限不足:permission denied
- 修复权限:
bash chown -R prometheus:prometheus /var/lib/prometheus

小练习
1. 将 retention 从 15d 改为 7d,使用 /-/reload 生效并观察日志。
2. 将监听端口改为 9091,确认 ss -lntp 输出与访问地址变化。
3. 为 Prometheus 增加 --web.external-url--web.route-prefix,访问 http://host:9090/prom 验证页面可用。