用 Docker 快速部署 Prometheus + Grafana 监控系统可在 5–10 分钟内完成,核心是声明式编排、容器隔离与开箱即用;需 Docker ≥24.0、Compose ≥2.20、2核4GB资源;通过 docker-compose.yml 编排 Prometheus、Grafana、Node Exporter 三组件,配置 prometheus.yml 指定抓取目标,启动后访问 localhost:9090 和 localhost:3000 即可验证并导入仪表盘。

用 Docker 快速部署 Prometheus + Grafana 监控系统,核心在于“声明式编排 + 容器隔离 + 开箱即用”,整个过程不需要编译、不碰依赖冲突,5–10 分钟即可看到仪表盘。重点不是堆组件,而是让 Prometheus 能采集到数据、Grafana 能连上它、两者配置能稳定跑起来。
准备基础环境
确保宿主机已安装:
- Docker Engine ≥ 24.0(推荐,兼容性更好)
- Docker Compose ≥ 2.20(新版 Compose 已集成进 Docker CLI,可用
docker compose version验证) - 至少 2 核 CPU、4GB 可用内存(Prometheus 占比最大,建议单独分配 2GB+)
Linux/macOS/WSL2 均可,Windows 用户请关闭 Hyper-V 并启用 WSL2 后再操作。无需手动装 Go、Python 或 Node.js 等运行时。
编写 docker-compose.yml 文件
在空目录下创建 docker-compose.yml,内容如下(已含 Prometheus、Grafana、Node Exporter 三件套,支持主机级监控):
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
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=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--storage.tsdb.retention.time=7d'
restart: unless-stopped
<p>grafana:
image: grafana/grafana-enterprise:latest
container_name: grafana
ports:</p><ul><li>"3000:3000"
environment:</li><li>GF_SECURITY_ADMIN_PASSWORD=admin123</li><li>GF_USERS_ALLOW_SIGN_UP=false
volumes:</li><li>grafana_data:/var/lib/grafana</li><li>./grafana-provisioning:/etc/grafana/provisioning
restart: unless-stopped</li></ul><p>node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
ports:</p><ul><li>"9100:9100"
volumes:</li><li>/proc:/proc:ro</li><li>/sys:/sys:ro</li><li>/:/rootfs:ro
command:</li><li>'--path.procfs=/proc'</li><li>'--path.sysfs=/sys'</li><li>'--path.rootfs=/rootfs'</li><li>'--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped</li></ul><p>volumes:
prometheus_data:
grafana_data:
注意:该文件默认启用 Node Exporter,用于采集本机 CPU、内存、磁盘等指标;如需监控其他机器,后续只需改 Prometheus 配置中的 targets 地址即可。
配置 Prometheus 抓取规则
在同一目录下新建 prometheus.yml:
global: scrape_interval: 15s evaluation_interval: 15s <p>scrape_configs:</p><ul><li><p>job_name: 'prometheus' static_configs:</p><ul><li>targets: ['localhost:9090']</li></ul></li><li><p>job_name: 'node' static_configs:</p><ul><li>targets: ['node-exporter:9100']
这里使用容器名 node-exporter 作为 target 地址,Docker Compose 内部 DNS 会自动解析,无需写 IP。若要加 Spring Boot 服务,只需新增一个 job,target 填 your-spring-app:8080(前提是该服务也跑在同一个 Docker 网络里并暴露 /actuator/prometheus)。
启动并验证服务
执行命令一键拉起全部服务:
docker compose up -d
等待约 10 秒后检查状态:
- Prometheus 页面:https://www.php.cn/link/55803f966202bb45829744de092b2f02 → 点 “Status” → “Targets”,应看到两个 UP 状态目标
- Grafana 页面:https://www.php.cn/link/8e5687e2d6ab87e5da2f833f3e8986a4 → 用户名
admin,密码admin123(首次登录后强制修改) - 添加数据源:Settings → Add data source → 选择 Prometheus → URL 填
http://prometheus:9090(容器内通信地址)→ Save & Test 应显示 success
导入现成仪表盘(例如 Node Exporter 全景 ID 1860),就能立刻看到 CPU、内存、磁盘 IO 的实时图表。


















