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 即可。

相关推荐
滨哥GPT1 小时前
Codex修改环境变量后项目还是报错怎么办?.env、配置加载与运行环境排查
docker·ai编程·环境变量·开发环境·codex·env
nuo5342021 小时前
进阶 1 —— Docker 中常见软件的复杂安装
docker·容器
EXI-小洲1 小时前
Docker 容器部署 EMQX|MQTT 消息代理服务安装与配置教程
运维·mqtt·docker·emqx
钝挫力PROGRAMER3 小时前
Windows Docker 环境搭建 GitLab CI/CD 流水线
windows·docker·gitlab·gitlab-runner
孙克旭_14 小时前
Docker 镜像构建|Vue+SpringBoot+Go 多语言项目 Dockerfile 案例
linux·运维·vue.js·spring boot·docker·dockerfile
JavaPub-rodert16 小时前
使用 Docker 部署 Ollama:Docker Compose 一键运行 DeepSeek-R1 1.5B
运维·docker·容器
二宝哥20 小时前
docker安装apisix
docker·容器·apisix
ylj_dev1 天前
从 0 构建 AI Workload Platform(四):从单机工作流内核到可靠控制面
docker·postgresql·架构·golang
.柒宇.1 天前
使用 cri-docker 搭建 Kubernetes 集群完整教程(v1.36.3)
docker·容器·kubernetes·k8s集群安装
艾伦_耶格宇1 天前
【DOCKER容器实战】-3 ElasticSearch + Kibana
elasticsearch·docker·jenkins