手把手教你用Docker部署Prometheus监控服务器

准备工作:安装Docker并了解组件

开始之前,请确认你的服务器上已经安装了Docker和Docker Compose。
如果你还没有装,可以执行以下命令(以Ubuntu为例)快速安装:

curl -fsSL https://get.docker.com | bash
sudo usermod -aG docker $USER
# 重新登录或newgrp docker生效
sudo apt install docker-compose -y

Docker部署Prometheus监控的核心组件有三个:

  • Prometheus:负责拉取和存储指标数据。
  • Grafana:可视化面板,可以展示监控图表。
  • node_exporter:部署在被监控服务器上,暴露系统指标(CPU、内存、磁盘等)。

这一次我们用Docker Compose将它们一键拉起,省去繁琐的手动配置。

快速部署:编写docker-compose.yml

新建一个目录,比如mkdir ~/prometheus-monitor && cd ~/prometheus-monitor
然后创建docker-compose.yml文件,内容如下:

version: '3.8'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    ports:
      - '9090:9090'
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - '3000:3000'
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped

  node_exporter:
    image: prom/node-exporter:latest
    container_name: node_exporter
    ports:
      - '9100:9100'
    restart: unless-stopped

volumes:
  prometheus_data:
  grafana_data:

注意,这里同时部署了node_exporter作为示例,如果你有多台机器,可以在每台目标机器上单独运行node_exporter容器,或者后续单独配置。
接下来创建Prometheus配置文件prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

这里targets指向本机的node_exporter。
如果你要监控其它服务器,请将localhost替换为对应IP。
然后启动所有容器:

docker-compose up -d

配置数据采集:添加更多目标

如果需要监控多台服务器,你只需要在目标服务器上运行node_exporter容器(映射端口9100),然后在Prometheus的prometheus.yml中增加targets即可。
例如:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets:
        - '192.168.1.101:9100'
        - '192.168.1.102:9100'

修改后重启Prometheus容器:docker-compose restart prometheus
你也可以通过Prometheus的Web界面(http://服务器IP:9090)的/targets页面检查各目标是否正常处于UP状态。

避免踩坑的几点提醒

  • 端口冲突:确保9090(Prometheus)、3000(Grafana)、9100(node_exporter)未被占用,可用lsof -i :端口号检查。
  • 防火墙:如果使用云服务器,需要在安全组中放行相应端口。
  • 数据持久化:上面配置中使用了命名卷,确保容器删除后数据不丢失。如果磁盘空间有限,记得定期清理历史数据(Prometheus默认保留15天)。
  • Grafana默认密码:首次登录地址为http://服务器IP:3000,用户名密码均为admin,登录后会要求修改。
  • node_exporter版本:如果监控的是旧系统,建议使用与Prometheus版本兼容的node_exporter镜像。

验证监控是否正常工作

  1. 访问http://服务器IP:9090,在Prometheus UI的查询框中输入up,如果返回1表示所有targets在线。
  2. 访问http://服务器IP:3000,使用admin/admin登录Grafana,添加数据源:选择Prometheus,URL填写http://prometheus:9090(注意这是容器内服务名,因为Grafana和Prometheus在同一网络)。然后导入推荐的面板(Dashboard ID: 1860),即可看到服务器CPU、内存、磁盘等实时图表。

全部完成后,你就拥有了一个基础的Docker部署Prometheus监控环境。
如果遇到Prometheus报错超时或targets显示down,请重点检查网络连通性和防火墙设置。
建议先按本文步骤完整执行,再根据自己的环境做微调。

分享到:
上一篇
Linux服务器多IP配置完全指南:临时与永久两种方法
下一篇
服务器香港服务器推荐2026:年香港服务器怎么选?这份实操指
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意