04.6使用Docker Compose部署Grafana Stack

分类: Grafana安装与基础使用

使用 Docker Compose 部署 Grafana Stack

本节将学习:Grafana + Prometheus 组合部署、数据持久化、网络配置,以及一键启动方法。使用 Docker Compose 可以让部署更简单、更灵活。

Grafana + Prometheus 组合部署

使用 Docker Compose 可以轻松部署 Grafana 和 Prometheus 的组合。

有什么优点呢?

  • 一键启动和停止。 使用
    docker-compose up
    docker-compose down
    。非常简单。
  • 配置简单。 在一个 YAML 文件中配置所有服务。不需要手动管理容器。
  • 易于管理。 可以轻松管理多个服务。例如 Prometheus、Grafana、Node Exporter。
  • 支持多服务编排。 可以编排多个服务。例如 Prometheus + Grafana + Node Exporter。

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'
    restart: unless-stopped
    networks:
      - monitoring

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
    restart: unless-stopped
    depends_on:
      - prometheus
    networks:
      - monitoring

配置说明:

  • Prometheus 服务: 配置了镜像、端口、卷、命令等。
  • Grafana 服务: 配置了镜像、端口、卷、环境变量等。
    depends_on
    表示依赖 Prometheus。
  • Volume: 定义了
    prometheus-data
    grafana-data
    卷,用于数据持久化。
  • Network: 定义了
    monitoring
    网络,用于服务间通信。

这就是 Grafana + Prometheus 组合部署。

数据持久化

什么是数据持久化? 数据持久化确保 Grafana 和 Prometheus 数据不会因为容器删除而丢失。

数据持久化有什么方式呢?

  • Docker Volume。 使用 Docker Volume。例如
    prometheus-data:/prometheus
  • 主机目录挂载。 使用主机目录。例如
    /data/prometheus:/prometheus

数据持久化示例:

volumes:
  # Prometheus datum
  - prometheus-data:/prometheus

  # Grafana datum
  - grafana-data:/var/lib/grafana

  # profiles
  - ./prometheus.yml:/etc/prometheus/prometheus.yml
  - ./grafana/provisioning:/etc/grafana/provisioning

这个配置展示了如何配置数据持久化。Prometheus 数据存储在

prometheus-data
卷,Grafana 数据存储在
grafana-data
卷,配置文件挂载到主机。

Volume 配置:

volumes:
  prometheus-data:
    driver: local
  grafana-data:
    driver: local

这个配置展示了如何配置 Docker Volume。使用本地驱动,数据存储在 Docker 管理的位置。

数据持久化的优点:

  • 数据安全。 数据不会因为容器删除而丢失。
  • 易于备份。 可以轻松备份数据。
  • 易于迁移。 可以轻松迁移数据。

这就是数据持久化。

网络配置

什么是网络配置? 网络配置用于服务间通信。

网络配置有什么方式呢?

  • 使用 Docker Network。 创建自定义网络,服务加入同一个网络。
  • 服务间通过服务名通信。 服务可以使用服务名相互访问。

网络配置示例:

networks:
  monitoring:
    driver: bridge

services:
  prometheus:
    networks:
      - monitoring

  grafana:
    networks:
      - monitoring

这个配置展示了如何配置网络。创建了

monitoring
网络,Prometheus 和 Grafana 都加入这个网络。

服务通信:

Grafana 访问 Prometheus: http://prometheus:9090。

注意: 使用服务名,不是 localhost。在 Docker Network 中,服务名会解析为服务的 IP 地址。

网络架构: Docker Network 连接 Prometheus 和 Grafana,主机可以通过端口映射访问这两个服务。

这就是网络配置。

一键启动和管理

如何启动服务呢?

启动服务(后台运行):

docker-compose up -d

这个命令启动服务,并在后台运行。

-d
表示 detached mode。

启动服务(前台运行):

docker-compose up

这个命令启动服务,并在前台运行。可以看到日志输出。

停止服务:

docker-compose down

这个命令停止服务,并删除容器。

-v
可以同时删除卷。

重启服务:

docker-compose restart

这个命令重启服务。不需要删除容器。

查看服务状态:

docker-compose ps

这个命令查看服务状态。可以看到容器的运行状态。

查看日志:

docker-compose logs -f

这个命令查看所有服务的日志。

-f
表示跟随日志。

验证步骤:

  1. 检查服务状态:
    docker-compose ps
    。应该能看到 Prometheus 和 Grafana 都在运行。
  2. 访问 Prometheus: http://localhost:9090。应该能看到 Prometheus UI。
  3. 访问 Grafana: http://localhost:3000。应该能看到 Grafana UI。
  4. 在 Grafana 中配置 Prometheus 数据源: URL 是 http://prometheus:9090。注意使用服务名,不是 localhost。

这就是一键启动和管理。

本节小结

在本节中,我们学习了使用 Docker Compose 部署 Grafana Stack:

第一个是组合部署。 Grafana + Prometheus 一键部署。使用 Docker Compose,非常简单。

第二个是数据持久化。 使用 Docker Volume 或主机目录。数据不会因为容器删除而丢失。

第三个是网络配置。 使用 Docker Network,服务间通过服务名通信。例如 Grafana 访问 Prometheus 使用 http://prometheus:9090。

第四个是一键启动。 docker-compose up/down/restart/logs。可以轻松管理服务。

部署流程: 创建 docker-compose.yml → 配置持久化 → 配置网络 → 启动服务 → 验证部署 → 配置数据源。

这就是使用 Docker Compose 部署 Grafana Stack。非常方便。

恭喜你! 你已经完成了第 4 章的学习。我们学习了 Grafana 的安装、配置、连接数据源、界面导航和 Docker Compose 部署。

在下一章,我们将学习 Grafana Dashboard 创建基础。学习如何创建和管理 Dashboard。