03.8使用Docker Compose部署Prometheus

分类: 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
  • ports
    :端口映射。将容器的 9090 端口映射到主机的 9090 端口。
  • 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
表示保留 30 天的数据,
--storage.tsdb.retention.size=50GB
表示保留最多 50GB 的数据。

数据持久化的优点:

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

这就是数据持久化。

服务启动和管理

如何启动服务呢?

启动服务(后台运行):

docker-compose up -d

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

-d
表示 detached mode。

启动服务(前台运行):

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 实战。动手实践,巩固知识。