基于vegasbrianc/prometheus的Docker Compose监控系统部署指南
2025-07-08 06:57:20作者:裴锟轩Denise
概述
本文详细解析了如何使用Docker Compose快速部署一个完整的Prometheus监控系统。该系统包含了Prometheus监控服务、Grafana可视化平台、Alertmanager告警管理、cAdvisor容器监控以及Node Exporter主机监控等核心组件。
系统架构
该Docker Compose文件定义了一个完整的监控系统架构,包含以下核心服务:
- Prometheus - 作为核心监控服务,负责指标收集和存储
- Grafana - 数据可视化平台,提供丰富的仪表盘
- Alertmanager - 告警管理服务,处理来自Prometheus的告警
- cAdvisor - 容器监控工具,收集容器资源使用情况
- Node Exporter - 主机监控代理,收集主机级指标
详细配置解析
网络配置
networks:
front-tier:
back-tier:
系统采用双网络架构设计:
front-tier
:前端网络,仅Grafana服务暴露在此网络back-tier
:后端网络,所有监控组件内部通信使用
这种设计增强了安全性,只有可视化界面暴露在外网。
Prometheus服务
prometheus:
image: prom/prometheus:v2.36.2
volumes:
- ./prometheus/:/etc/prometheus/
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
ports:
- 9090:9090
关键配置说明:
- 使用特定版本(v2.36.2)确保稳定性
- 挂载本地
prometheus
目录到容器内配置路径 - 使用命名卷
prometheus_data
持久化监控数据 - 暴露9090端口供外部访问
Node Exporter服务
node-exporter:
image: quay.io/prometheus/node-exporter:latest
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.rootfs=/host'
- '--path.procfs=/host/proc'
ports:
- 9100:9100
特点:
- 以全局模式(
mode: global
)部署,确保每个节点都有实例 - 挂载主机系统目录为只读(ro)模式,确保安全性
- 过滤不必要监控的文件系统路径,减少资源消耗
Alertmanager服务
alertmanager:
image: prom/alertmanager
ports:
- 9093:9093
volumes:
- ./alertmanager/:/etc/alertmanager/
command:
- '--config.file=/etc/alertmanager/config.yml'
告警管理服务配置:
- 暴露9093端口用于告警管理
- 挂载本地alertmanager配置目录
- 支持自定义告警路由和通知方式
cAdvisor服务
cadvisor:
image: gcr.io/cadvisor/cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
ports:
- 8080:8080
容器监控特性:
- 全局部署模式,监控所有节点上的容器
- 需要访问Docker守护进程(/var/run)和系统信息
- 提供详细的容器资源使用指标
Grafana服务
grafana:
image: grafana/grafana
user: "472"
ports:
- 3000:3000
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
env_file:
- ./grafana/config.monitoring
可视化平台配置:
- 使用Grafana官方镜像
- 指定用户ID(472)运行,增强安全性
- 持久化Grafana数据到命名卷
- 支持通过provisioning目录预配置数据源和仪表盘
- 使用环境变量文件配置Grafana参数
部署建议
-
数据持久化:系统已配置Prometheus和Grafana的数据持久化,确保重启后数据不丢失
-
安全考虑:
- 所有挂载的主机目录均为只读模式
- 服务运行在隔离的网络环境中
- Grafana以非root用户运行
-
扩展性:
- 可轻松添加更多Exporter监控其他服务
- 支持通过取消注释启用Pushgateway服务
-
资源监控:
- 系统已包含容器(cAdvisor)和主机(Node Exporter)监控
- 可扩展添加应用特定监控
常见问题解决
- 权限问题:确保挂载目录对容器用户可读
- 端口冲突:检查9090、3000等端口是否被占用
- 数据保留:Prometheus默认保留15天数据,可在配置中调整
- 告警测试:部署后应测试Alertmanager是否能正常接收和发送告警
总结
该Docker Compose配置提供了一个开箱即用的生产级监控系统解决方案,涵盖了从数据采集、存储、告警到可视化的完整监控链条。通过合理的网络隔离、数据持久化和安全配置,非常适合作为企业级监控系统的基础架构。