跳到主要内容

Docker Compose

2024年12月24日
柏拉文
越努力,越幸运

一、认识


基于 Docker Compose 部署 Prometheus 主要是为了简化多容器的管理和配置,并且可以方便地进行集群部署、服务发现等操作。Docker Compose 允许我们在一个配置文件中定义多个容器服务,包括 Prometheus 容器、存储卷以及必要的网络配置。

下面是一个基于 Docker Compose 部署 Prometheus 的完整步骤,涵盖持久化存储、容器重启、更新、销毁存储等操作。

二、目录结构


创建一个工作目录 prometheus-docker-compose,该目录用于存放 Prometheus 配置文件和 Docker Compose 配置文件。

prometheus-docker-compose/

├── prometheus.yml # Prometheus 配置文件
├── docker-compose.yml # Docker Compose 配置文件
└── data/ # 持久化存储目录

三、操作


3.1 创建 Prometheus 配置

Prometheus 的主要配置文件是 prometheus.yml,它定义了数据抓取和告警的设置。首先创建一个 prometheus.yml 文件:

global:
scrape_interval: 15s # 设置默认抓取间隔时间

scrape_configs:
- job_name: 'prometheus' # 抓取 Prometheus 自身指标
static_configs:
- targets: ['localhost:9090']

- job_name: 'node_exporter' # 抓取 Node Exporter 指标
static_configs:
- targets: ['node_exporter:9100'] # 替换为实际的 Node Exporter 地址

- job_name: 'custom_service' # 自定义服务
static_configs:
- targets: ['127.0.0.1:4000'] # 替换为实际服务地址

将此文件保存为 prometheus.yml,并确保它与 Docker 容器路径的映射一致。

3.2 创建 Docker Compose 配置

创建 docker-compose.yml 文件,使用 Docker Compose 来管理 Prometheus 容器。

services:
prometheus:
image: prom/prometheus:latest # 使用 Prometheus 官方最新镜像
container_name: prometheus # 容器名称
ports:
- "9090:9090" # 映射 9090 端口到宿主机
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml # 映射配置文件
- ./data:/prometheus # 持久化存储目录
restart: unless-stopped # 自动重启策略,除非手动停止容器
networks:
- prometheus-network

networks:
prometheus-network:
driver: bridge
  • image: 使用 prom/prometheus:latest 镜像。

  • container_name: 给容器命名为 prometheus

  • ports: 将宿主机的 9090 端口映射到容器的 9090 端口,用于访问 Prometheus Web UI

  • volumes:

    • ./prometheus.yml:/etc/prometheus/prometheus.yml: 将宿主机的配置文件 prometheus.yml 映射到容器内的 /etc/prometheus/prometheus.yml

    • ./data:/prometheus: 将宿主机上的 ./data 目录映射到容器内的 /prometheus,用于持久化 Prometheus 数据。

  • restart: 设置为 unless-stopped,表示容器会自动重启,除非手动停止。

  • networks: 配置容器加入到一个名为 prometheus-network 的网络,确保 Prometheus 和其他服务能够互相通信。

3.3 启动服务

在项目根目录下(即 prometheus-docker-compose 目录)运行以下命令来启动容器:

docker-compose up -d

3.4 检测服务

你可以使用以下命令查看 Prometheus 容器的状态:

docker-compose ps

如果要查看 Prometheus 的日志:

docker-compose logs prometheus

3.5 重启服务(可选)

Prometheus 容器的重启可以通过 docker-compose restart 命令来实现:

docker-compose restart prometheus

3.6 清理资源(可选)

docker-compose down -v 
docker system prune -a --volumes

docker-compose up -d

四、查看


4.1 访问页面

访问 Prometheus Web 界面: 在浏览器中访问 Prometheus: 打开 http://<主机IP>:9090(例如,http://localhost:9090)。

4.2 查看状态

转到 Status -> Targets 页面,查看所有目标状态是否为 UP