首页 帮助中心 常见问题 Docker Compose快速编排Prometheus监控栈从零开始大家到可视化告警
Docker Compose快速编排Prometheus监控栈从零开始大家到可视化告警
时间 : 2025-08-11 11:40:58 编辑 : 华纳云 阅读量 : 9

当下监控已成为保障服务器稳定运行的核心手段,Prometheus具有高效时间序列和灵活查询语言,实际部署中单独运行Prometheus并不足够还要配合Node ExporterGrafana以及Alertmanager,形成一个完整的监控告警栈。Docker Compose能够用最少的命令,一次性编排并运行整个监控体系。下面是通过Docker Compose构建一套Prometheus + Node Exporter + Grafana + Alertmanager的完整监控栈。

传统部署方式通常需要逐一安装和配置各个组件,这不仅耗时,还容易出现版本不一致和配置冲突。而Docker Compose有几个天然优势。其支持一键启动与停止,用一份 docker-compose.yml描述所有服务,部署和关闭只需一个命令。环境隔离中,每个组件运行在独立的容器中,避免系统级别的依赖冲突。还有就是易于迁移,只要保留 docker-compose.yml 和配置文件,就能在任何支持Docker的服务器上快速恢复环境。

监控栈的组件构成中,我们的目标是搭建以下监控架构:

Prometheus:核心监控数据采集与存储系统

Node Exporter:采集服务器CPU、内存、磁盘等主机指标

Grafana:数据可视化与仪表盘展示

Alertmanager:告警管理与通知

首先在服务器上准备一个项目目录,例如 /opt/monitoring

mkdir -p /opt/monitoring/{prometheus,grafana,alertmanager}
cd /opt/monitoring

目录结构参考:

monitoring/
├── docker-compose.yml
├── prometheus/
│   └── prometheus.yml
├── grafana/
├── alertmanager/
│   └── alertmanager.yml

编写 Prometheus 配置,在prometheus/prometheus.yml中写入基础配置,让它能抓取自身和Node Exporter的数据:

global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['prometheus:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']

编写 Alertmanager 配置,在 alertmanager/alertmanager.yml 中添加一个简单的通知方式,例如打印到日志(生产环境可改成邮件、Slack等):

route:
receiver: 'default'
receivers:
- name: 'default'
webhook_configs:
- url: 'http://example.com/webhook'

编写 Docker Compose 文件,docker-compose.yml 内容如下:

version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.54.0
container_name: prometheus
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
restart: unless-stopped
node_exporter:
image: prom/node-exporter:v1.8.1
container_name: node_exporter
ports:
- "9100:9100"
restart: unless-stopped
grafana:
image: grafana/grafana:11.2.0
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
restart: unless-stopped
alertmanager:
image: prom/alertmanager:v0.27.0
container_name: alertmanager
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
ports:
- "9093:9093"
restart: unless-stopped
volumes:
grafana_data:

启动服务

docker compose up -d

验证运行状态

docker ps

访问各个组件

Prometheus: http://服务器IP:9090
Node Exporter: http://服务器IP:9100/metrics
Grafana: http://服务器IP:3000 (账号 admin / admin)
Alertmanager: http://服务器IP:9093

Grafana配置数据源与仪表盘,登录Grafana后进入 Configuration → Data Sources,添加Prometheus数据源,URL填写 http://prometheus:9090。导入官方提供的Node Exporter仪表盘模板(ID1860),即可看到CPU、内存、网络等实时数据。

PrometheusGrafana的存储目录挂载到宿主机,避免容器删除后数据丢失。还可以配置Prometheusalerting.rules 文件,将CPU、内存、磁盘等阈值写入规则文件。使用反向代理(如Nginx)并启用HTTPS,限制外部直接访问监控接口。在其他服务器部署Node Exporter,并在Prometheus配置中添加这些节点。

上面给大家的方案适合本地测试机、云服务器或混合云环境,通过以上提供的配置文件可以几分钟内实现搭建,缩短了监控系统的部署周期。

华纳云 推荐文章
Docker删除容器卡住的有效解决办法 香港VPS支持Docker容器部署吗?Ubuntu 20.04环境配置教程 Linux进程级网络流量监控的具体流程 Linux进程网络流量如何进行监控(详细指南) 如何监控香港Windows服务器的CPU与磁盘IO使用率? Nginx与Docker结合使用实现高效部署与弹性架构 云服务器docker部署的安装步骤(以Ubuntu为例) linux服务器jvm内存监控全解析 在Debian服务器中监控服务器状态的完整方法指南 Debian服务器上如何监控Node.js进程
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持