03.8、使用Docker Compose部署Prometheus
使用 Docker Compose 部署 Prometheus
本节将学习:创建 docker-compose.yml、配置文件挂载、数据持久化,以及服务启动和管理。使用 Docker Compose 可以让部署更简单、更灵活。
创建 docker-compose.yml
什么是 Docker Compose? 使用 Docker Compose 可以轻松部署 Prometheus。
Docker Compose 有什么优点呢?
- 一键启动和停止。 使用 和
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' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=30d' - '--web.enable-lifecycle' restart: unless-stopped volumes: prometheus-data:
配置说明:
- :使用的镜像。这里使用
image。prom/prometheus:latest - :容器名称。这里设置为
container_name。prometheus - :端口映射。将容器的 9090 端口映射到主机的 9090 端口。
ports - :卷挂载。挂载配置文件和数据目录。
volumes - :启动命令。指定配置文件路径、数据路径、保留时间等。
command - :重启策略。这里设置为
restart,容器会自动重启。unless-stopped
这就是 docker-compose.yml 的基本配置。
配置文件挂载
什么是配置文件挂载? 配置文件挂载允许我们修改配置而不需要重建镜像。
配置文件挂载有什么方式呢?
- 文件挂载。 挂载单个文件。例如 。
./prometheus.yml:/etc/prometheus/prometheus.yml - 目录挂载。 挂载整个目录。例如 。
./prometheus:/etc/prometheus
配置文件挂载示例:
volumes: # Mount the configuration file - ./prometheus.yml:/etc/prometheus/prometheus.yml # Mount configuration directory - ./prometheus:/etc/prometheus # data persistence - prometheus-data:/prometheus
配置文件结构:
project/ ├── docker-compose.yml ├── prometheus.yml └── prometheus/ ├── prometheus.yml ├── alert_rules.yml └── recording_rules.yml
这个结构展示了如何组织配置文件。你可以把配置文件放在本地,然后挂载到容器中。
配置文件挂载的优点:
- 易于修改。 修改本地配置文件,不需要重建镜像。
- 版本控制。 配置文件可以纳入版本控制。
- 灵活性高。 可以轻松切换不同的配置文件。
这就是配置文件挂载。
数据持久化
什么是数据持久化? 数据持久化确保 Prometheus 数据不会因为容器删除而丢失。
数据持久化有什么方式呢?
- Docker Volume。 使用 Docker Volume。例如 。
prometheus-data:/prometheus - 主机目录挂载。 使用主机目录。例如 。
/data/prometheus:/prometheus
数据持久化示例:
volumes: # utilized Docker Volume - prometheus-data:/prometheus # Using the host directory - /data/prometheus:/prometheus
Volume 配置:
volumes: prometheus-data: driver: local driver_opts: type: none o: bind device: /data/prometheus
这个配置展示了如何配置 Docker Volume。你可以指定驱动、选项、设备路径。
数据保留配置:
command: - '--storage.tsdb.retention.time=30d' - '--storage.tsdb.retention.size=50GB'
这个配置展示了如何配置数据保留。
--storage.tsdb.retention.time=30d--storage.tsdb.retention.size=50GB数据持久化的优点:
- 数据安全。 数据不会因为容器删除而丢失。
- 易于备份。 可以轻松备份数据。
- 易于迁移。 可以轻松迁移数据。
这就是数据持久化。
服务启动和管理
如何启动服务呢?
启动服务(后台运行):
docker-compose up -d
这个命令启动服务,并在后台运行。
-d启动服务(前台运行):
docker-compose up
这个命令启动服务,并在前台运行。可以看到日志输出。
停止服务:
docker-compose down
这个命令停止服务,并删除容器。
-v重启服务:
docker-compose restart
这个命令重启服务。不需要删除容器。
查看服务状态:
docker-compose ps
这个命令查看服务状态。可以看到容器的运行状态。
查看日志:
docker-compose logs -f prometheus
这个命令查看日志。
-f重载配置(不重启容器):
curl -X POST http://localhost:9090/-/reload
这个命令重载配置,不需要重启容器。需要在启动时启用
--web.enable-lifecycle管理命令:
- 查看服务日志:
docker-compose logs -f - 查看服务状态:
docker-compose ps - 进入容器:
docker-compose exec prometheus sh - 检查配置:
docker-compose exec prometheus promtool check config /etc/prometheus/prometheus.yml
这就是服务启动和管理。
完整示例
这个示例展示了如何部署 Prometheus 和 Node Exporter。
配置说明:
- Prometheus 服务: 配置了镜像、端口、卷、命令等。
- Node Exporter 服务: 配置了镜像、端口、卷、命令等。
- Volume: 定义了 卷,用于数据持久化。
prometheus-data - Network: 定义了 网络,用于服务间通信。
monitoring
这个配置的优点:
- 一键启动。 使用 ,可以同时启动所有服务。
docker-compose up -d - 配置简单。 所有配置都在一个文件中。易于管理。
- 数据持久化。 使用 Docker Volume,数据不会丢失。
- 网络隔离。 使用自定义网络,服务间可以通信。
这就是完整的 Docker Compose 配置示例。
本节小结
在本节中,我们学习了使用 Docker Compose 部署 Prometheus:
第一个是 Docker Compose。 一键启动和停止,配置简单。使用 YAML 文件配置所有服务。
第二个是配置文件挂载。 易于修改,支持版本控制。可以在本地修改配置文件,不需要重建镜像。
第三个是数据持久化。 使用 Docker Volume 或主机目录。数据不会因为容器删除而丢失。
第四个是服务管理。 docker-compose up/down/restart/logs。可以轻松管理服务。
部署流程: 创建 docker-compose.yml → 配置挂载 → 配置持久化 → 启动服务 → 管理服务。
这就是使用 Docker Compose 部署 Prometheus。非常方便。
在下一节,我们将进行练习:Prometheus 实战。动手实践,巩固知识。