04.6、使用Docker Compose部署Grafana Stack
使用 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 服务: 配置了镜像、端口、卷、环境变量等。表示依赖 Prometheus。
depends_on - 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-datagrafana-dataVolume 配置:
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服务通信:
Grafana 访问 Prometheus: http://prometheus:9090。
注意: 使用服务名,不是 localhost。在 Docker Network 中,服务名会解析为服务的 IP 地址。
网络架构: Docker Network 连接 Prometheus 和 Grafana,主机可以通过端口映射访问这两个服务。
这就是网络配置。
一键启动和管理
如何启动服务呢?
启动服务(后台运行):
docker-compose up -d
这个命令启动服务,并在后台运行。
-d启动服务(前台运行):
docker-compose up
这个命令启动服务,并在前台运行。可以看到日志输出。
停止服务:
docker-compose down
这个命令停止服务,并删除容器。
-v重启服务:
docker-compose restart
这个命令重启服务。不需要删除容器。
查看服务状态:
docker-compose ps
这个命令查看服务状态。可以看到容器的运行状态。
查看日志:
docker-compose logs -f
这个命令查看所有服务的日志。
-f验证步骤:
- 检查服务状态: 。应该能看到 Prometheus 和 Grafana 都在运行。
docker-compose ps - 访问 Prometheus: http://localhost:9090。应该能看到 Prometheus UI。
- 访问 Grafana: http://localhost:3000。应该能看到 Grafana UI。
- 在 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。