Docker 中快速启动 Prometheus + Grafana操作指南

要在 Docker 中快速启动 Prometheus + Grafana ,推荐使用 docker rundocker-compose。下面提供两种方式(推荐 docker-compose,更简单、可维护)。


✅ 推荐方案:使用 docker-compose.yml(一键启动)

步骤 1:创建项目目录

bash 复制代码
mkdir prometheus-grafana
cd prometheus-grafana

步骤 2:创建 docker-compose.yml

yaml 复制代码
# docker-compose.yml
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=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--storage.tsdb.retention.time=200h'
      - '--web.enable-lifecycle'
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin  # 默认用户名 admin,密码 admin
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped

volumes:
  prometheus_data:
  grafana_data:

步骤 3:创建 prometheus.yml(监控目标配置)

yaml 复制代码
# prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  # 可选:添加 node_exporter 监控主机(见下方扩展)
  # - job_name: 'node'
  #   static_configs:
  #     - targets: ['host.docker.internal:9100']  # macOS/Windows
  #       # Linux 用: ['172.17.0.1:9100']

💡 localhost:9090 表示 Prometheus 自监控(可删)。

步骤 4:启动服务

复制代码
docker-compose up -d

步骤 5:访问服务


🔌 在 Grafana 中添加 Prometheus 数据源

  1. 登录 Grafana → 左侧齿轮图标 ConfigurationData sources
  2. 点击 Add data source
  3. 选择 Prometheus
  4. 填写 URL:http://prometheus:9090(注意:不是 localhost!因为 Grafana 和 Prometheus 在同一个 Docker 网络中)
  5. 点击 Save & Test → 显示 "Data source is working" 即成功!

✅ 关键点:Docker Compose 会自动创建内部网络,服务名 prometheus 可直接解析。


🧪 验证是否工作

  1. 在 Prometheus 的 Graph 页面输入:

    复制代码
    up

    应返回 1(表示目标存活)。

  2. 在 Grafana 中创建 Dashboard → Add Panel → 输入相同查询,应显示图表。


🚀 扩展:监控本机(Node Exporter)

如果你想监控 宿主机(Ubuntu 服务器)的 CPU/内存/磁盘

1. 启动 Node Exporter(在宿主机运行)

ini 复制代码
docker run -d \
  --name=node-exporter \
  --restart=unless-stopped \
  -p 9100:9100 \
  -v "/proc:/host/proc:ro" \
  -v "/sys:/host/sys:ro" \
  -v "/:/rootfs:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.procfs=/host/proc \
  --path.sysfs=/host/sys \
  --collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($|/)"

2. 修改 prometheus.yml 添加 job

yaml 复制代码
  - job_name: 'node'
    static_configs:
      - targets: ['host.docker.internal:9100']  # macOS/Windows
        # Linux 宿主机用: ['172.17.0.1:9100']

🐧 Linux 注意

Docker 默认网桥 IP 是 172.17.0.1,所以写:

vbnet 复制代码
targets: ['172.17.0.1:9100']

3. 重载 Prometheus 配置(无需重启)

bash 复制代码
curl -X POST http://localhost:9090/-/reload

4. 在 Grafana 导入 Node Exporter Dashboard

  • 打开 Grafana → CreateImport
  • 输入 ID:1860(官方 Node Exporter 全能面板)
  • 选择 Prometheus 数据源 → Import

🗑️ 停止和清理

bash 复制代码
# 停止并删除容器
docker-compose down

# 彻底删除数据卷(谨慎!)
docker-compose down -v

❓常见问题

Q:Grafana 连不上 Prometheus?

  • 检查数据源 URL 是否为 http://prometheus:9090(不是 localhost
  • 检查 docker-compose ps 确认两个服务都在运行

Q:如何持久化数据?

  • 上述配置已通过 volumes 持久化 Prometheus 和 Grafana 数据
  • 即使 docker-compose down,数据也不会丢失

Q:修改配置后如何生效?

  • Prometheus:执行 curl -X POST http://localhost:9090/-/reload
  • Grafana:直接生效(或重启容器)

✅ 总结

组件 端口 访问地址
Prometheus 9090 http://你的服务器IP:9090
Grafana 3000 http://你的服务器IP:3000

只需 4 个文件(实际只需 2 个):

复制代码
prometheus-grafana/
├── docker-compose.yml
└── prometheus.yml

现在你拥有了一个完整的监控栈!如果需要监控 Kubernetes、MySQL、Nginx 等,只需在 prometheus.yml 中添加对应 Exporter 即可。

相关推荐
人工智能训练3 小时前
Windows中如何将Docker安装在E盘并将Docker的镜像和容器存储在E盘的安装目录下
linux·运维·前端·人工智能·windows·docker·容器
k***82513 小时前
springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice
spring boot·后端·docker
无名小卒Rain4 小时前
docker pull tomcat 报错missing signature key解决办法
运维·docker·容器
java_logo5 小时前
LOBE-CHAT Docker 容器化部署指南
运维·docker·语言模型·容器·llama
U***e636 小时前
Docker增强现实开发
docker·容器·ar
qq_5470261797 小时前
Docker 搭建单节点MySQL服务
mysql·adb·docker
java_logo8 小时前
GPUSTACK Docker 容器化部署指南
运维·mongodb·docker·云原生·容器·eureka·express
阿巴阿巴啊啊啊8 小时前
docker基本操作命令
运维·docker·容器
DreamLife☼9 小时前
Docker-日志与监控:集中采集与性能分析实战
docker·grafana·efk·可观测性·容器监控·cadvisor·prometheus 监控