一、文件 1:docker-compose.yml
修改点
在 prometheus 的 command 数组中新增一行启动参数:
- '--web.enable-lifecycle'
✅ 作用:开启配置热重载接口,修改 prometheus.yml 无需重启容器
生效命令
docker compose up -d prometheus
⚠️ 修改 compose 文件不能用 restart,必须使用
up -d重建容器加载新启动参数
二、文件 2:prometheus.yml
1. 通信地址修正(容器网络核心)
❌ 旧错误写法
targets: ['localhost:9090']
targets: ['192.168.1.100:9100']
✅ 新正确写法(compose 网桥网络,使用容器服务名通信)
targets: ['prometheus:9090']
targets: ['node-exporter:9100']
2. 新增标签配置(解决 Grafana TenSunS 面板 No Data / 筛选框 None)
给 node-exporter 任务增加 labels:
labels:
group: "linux服务器"
name: "10-7-127-87"
ip: "10-7-127-87"
3. 注释 grafana 采集 job
Grafana 默认不暴露 metrics 接口,该任务长期 DOWN,注释消除异常项。
重载命令
curl -X POST http://127.0.0.1:9090/-/reload
三、完整操作流程汇总
编辑
docker-compose.yml,添加--web.enable-lifecycle执行
docker compose up -d prometheus重建 Prometheus 容器编辑
prometheus.yml,修正 target 地址、添加标签、注释 grafana 任务执行重载命令,无需重启服务
访问
http://IP:9090→ Status → Targets,确认所有任务状态 UP等待 1~2 分钟,Grafana 监控面板正常展示数据
四、本次踩坑清单
无
--web.enable-lifecycle→ reload 报错Lifecycle API is not enabledtarget 写宿主机 IP/localhost → 容器内部网络不通,采集失败
缺少自定义 labels → TenSunS 监控面板下拉框显示 None,图表 No data
YAML 语法:禁止 Tab 缩进,只能使用空格,缩进错误直接加载失败
docker-compose.yml(改动处已标注)
version: '3.8'
services:
node-exporter:
image: prom/node-exporter:v1.6.1
container_name: node-exporter
restart: always
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
- /etc/hostname:/etc/hostname:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($|/)'
networks:
- monitoring
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.0
container_name: cadvisor
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
networks:
- monitoring
prometheus:
image: prom/prometheus:v2.45.0
container_name: prometheus
restart: always
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle' # 本次新增:开启热重载
depends_on:
- node-exporter
- cadvisor
networks:
- monitoring
grafana:
image: grafana/grafana:10.1.0
container_name: grafana
restart: always
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
depends_on:
- prometheus
networks:
- monitoring
volumes:
prometheus_data:
grafana_data:
networks:
monitoring:
driver: bridge
prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "alert_rules.yml"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['prometheus:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
labels:
group: "linux服务器"
name: "10-7-127-87"
ip: "10-7-127-87"
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
# - job_name: 'grafana'
# static_configs:
# - targets: ['grafana:3000']
原创
普罗米修斯优化
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法