用docker容器化部署prometheus监控系统需依次运行prometheus server、node exporter、alertmanager和grafana四个组件,通过docker-compose统一编排、自定义网络互通与配置联动形成闭环。

用 Docker 运行容器化的 Prometheus 监控系统,核心是把 Prometheus Server、Node Exporter、Alertmanager 和 Grafana 四个组件分别容器化,并通过网络互通、配置联动形成完整闭环。不依赖现成的一键镜像,更能掌握每个环节的控制权和排错能力。
准备基础环境
确保宿主机已安装 Docker 和 Docker Compose(推荐 v2.20+),并验证运行正常:
- 执行
docker version查看 Docker 引擎版本(建议 24.0.5 或更新) - 执行
docker-compose version确认 Compose 已就绪 - 若使用国内环境,提前配置好镜像加速器(如
https://hub-mirror.c.163.com),写入/etc/docker/daemon.json后重启dockerd
拉取并验证核心镜像
按需拉取稳定版本镜像,避免用 latest 带来不可控变更:
docker pull prom/prometheus:v2.45.0docker pull prom/node-exporter:v1.6.1prom/alertmanager:v0.26.0-
grafana/grafana-enterprise:10.4.0(或社区版grafana/grafana:10.4.0)
拉取后可用 docker images | grep prom 确认镜像存在,再用 docker inspect 检查摘要值,与官方标签页比对确保完整性。
编写 docker-compose.yml 编排文件
用一个 docker-compose.yml 统一定义服务、网络、卷和依赖关系。关键点包括:
- Prometheus 容器挂载自定义
prometheus.yml配置文件(含 scrape_configs 指向 node-exporter 和自身) - Node Exporter 使用
--net=host或host.docker.internal方式访问宿主机 proc/sys,也可用privileged: true+ 挂载路径方式 - 所有服务放在同一自定义网络(如
monitoring),便于内部通过服务名通信(如http://alertmanager:9093) - Grafana 需预置数据源(指向
http://prometheus:9090)和仪表盘,可通过环境变量或初始化脚本注入
启动并验证整个栈
在 docker-compose.yml 所在目录执行:
-
docker-compose up -d启动全部服务 -
docker-compose ps查看各容器状态,确认都是Up - 浏览器访问
http://localhost:9090进入 Prometheus Web UI,点击 Status → Targets,确认node-exporter和prometheus的状态为UP - 访问
http://localhost:3000登录 Grafana(默认 admin/admin),添加 Prometheus 数据源后导入 Node Exporter Dashboard(ID 1860)即可看到主机指标
告警链路也需验证:在 Prometheus 中触发一条测试规则,检查 Alertmanager UI(:9093)是否收到,再确认邮件或钉钉通知是否送达。









