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 验证页面可用。