用 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>
- "3000:3000" environment:
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_USERS_ALLOW_SIGN_UP=false volumes:
- grafana_data:/var/lib/grafana
- ./grafana-provisioning:/etc/grafana/provisioning restart: unless-stopped
node-exporter: image: prom/node-exporter:latest container_name: node-exporter ports:
- "9100:9100" volumes:
- /proc:/proc:ro
- /sys:/sys:ro
- /:/rootfs:ro command:
- '--path.procfs=/proc'
- '--path.sysfs=/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' restart: unless-stopped
volumes: prometheus_data: grafana_data:
注意:该文件默认启用 Node Exporter,用于采集本机 CPU、内存、磁盘等指标;如需监控其他机器,后续只需改 Prometheus 配置中的 targets 地址即可。
配置 Prometheus 抓取规则
在同一目录下新建 prometheus.yml:
global: scrape_interval: 15s evaluation_interval: 15s <p>scrape_configs:</p>
-
job_name: 'prometheus' static_configs:
- targets: ['localhost:9090']
-
job_name: 'node' static_configs:
- targets: ['node-exporter:9100']
这里使用容器名
node-exporter作为 target 地址,Docker Compose 内部 DNS 会自动解析,无需写 IP。若要加 Spring Boot 服务,只需新增一个 job,target 填your-spring-app:8080(前提是该服务也跑在同一个 Docker 网络里并暴露/actuator/prometheus)。
- targets: ['node-exporter:9100']
启动并验证服务
执行命令一键拉起全部服务:
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 的实时图表。











