docker搭建普罗米修斯监控集群

零、目标:

搭建 1 台监控docker, 3台被监控docker

一、环境准备

1. 安装 Docker 和 Docker Compose

确保你的云服务器上已经安装了 Docker 和 Docker Compose。如果尚未安装,可以按照以下步骤进行:

安装 Docker
# 更新系统包列表
sudo apt update

# 安装必要的依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新系统包列表
sudo apt update

# 安装 Docker 引擎
sudo apt install docker-ce docker-ce-cli containerd.io

# 将当前用户添加到 docker 用户组,以便无需 sudo 运行 Docker 命令, 使用root解决一切
sudo usermod -aG docker $USER

# 重新登录以使更改生效
安装 Docker Compose
# 下载 Docker Compose 二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version
tips: 建议不要用上述方法, 因为下载非常慢. 建议直接上github下载, 传到云服务器上

2. 创建工作目录

在宿主机上创建用于存放普罗米修斯和相关配置文件的目录:

mkdir -p ~/prometheus_monitoring/{prometheus,node_exporter,grafana}
cd ~/prometheus_monitoring

二、配置被监控机器(使用 Docker 容器)

我们将使用 Node Exporter 来收集被监控机器的系统指标。Node Exporter 是一个普罗米修斯的 exporter,用于收集主机的各种指标,如 CPU、内存、磁盘等。

1. 编写 Docker Compose 文件(docker-compose-nodes.yml

version: '3'
services:
  node-exporter-1:
    image: prom/node-exporter:v1.5.0
    container_name: node-exporter-1
    restart: always
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'

  node-exporter-2:
    image: prom/node-exporter:v1.5.0
    container_name: node-exporter-2
    restart: always
    ports:
      - "9101:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'

  node-exporter-3:
    image: prom/node-exporter:v1.5.0
    container_name: node-exporter-3
    restart: always
    ports:
      - "9102:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'

2. 启动被监控节点容器

docker-compose -f docker-compose-nodes.yml up -d

三、配置监控机器(宿主机)

1. 配置普罗米修斯

创建普罗米修斯配置文件(prometheus/prometheus.yml
global:
  scrape_interval: 15s # 每隔 15 秒收集一次指标
  evaluation_interval: 15s # 每隔 15 秒评估一次告警规则

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'nodes'
    static_configs:
      - targets: ['localhost:9100', 'localhost:9101', 'localhost:9102']
tips: 不能写localhost, 建议改为真实IP地址
编写 Docker Compose 文件(docker-compose-prometheus.yml
version: '3'
services:
  prometheus:
    image: prom/prometheus:v2.45.0
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/data:/prometheus
tips: volumnes的磁盘映射文件, 一定要写对yml文件的地址
启动普罗米修斯容器
docker-compose -f docker-compose-prometheus.yml up -d

2. 配置 Grafana(可选,用于可视化监控数据)

编写 Docker Compose 文件(docker-compose-grafana.yml
version: '3'
services:
  grafana:
    image: grafana/grafana:9.5.8
    container_name: grafana
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/data:/var/lib/grafana
启动 Grafana 容器
docker-compose -f docker-compose-grafana.yml up -d

四、验证监控配置

1. 验证普罗米修斯

打开浏览器,访问 http://宿主机IP:9090,进入普罗米修斯的界面。点击 Status -> Targets,检查 nodes 任务下的三个目标(localhost:9100localhost:9101localhost:9102)是否状态为 UP。如果状态为 UP,说明普罗米修斯已经成功连接到被监控节点并开始收集指标。

2. 配置 Grafana(如果安装了 Grafana)

  • 打开浏览器,访问 http://宿主机IP:3000,使用默认用户名 admin 和密码 admin 登录 Grafana。
  • 登录后,点击左侧菜单栏的 Configuration -> Data Sources,然后点击 Add data source,选择 Prometheus
  • URL 字段中输入 http://宿主机IP:9090,然后点击 Save & Test,确保连接成功。
  • 点击左侧菜单栏的 Create -> Import,在 Import via grafana.com 字段中输入 1860(这是一个常用的 Node Exporter 仪表盘 ID),然后点击 Load,选择之前配置的普罗米修斯数据源,最后点击 Import,即可看到可视化的监控图表。

五、其他注意事项

  • 防火墙设置:确保云服务器的防火墙允许外部访问普罗米修斯(9090 端口)和 Grafana(3000 端口)的端口。
  • 数据持久化:上述配置中已经为普罗米修斯和 Grafana 配置了数据持久化目录,避免容器重启后数据丢失。
  • 告警配置:可以进一步配置普罗米修斯的告警规则和 Alertmanager 来实现告警功能。例如,当 CPU 使用率超过 80% 时发送告警通知。

六、遇到的问题

  1. docker安装镜像源失效
  2. 普罗米修斯yml文件格式写错
  3. 普罗米修斯监控机器无法访问被监控机器

七、解决问题

1. docker镜像源问题

建议去网上寻找最新可用的镜像源,
我使用的是: https://docker.1panel.live/ (2025-3-7可用)

2. yml文件格式问题

在windows上复制的配置, 粘贴到云服务器上后, 格式会乱. 所以先在windows上写好, 然后传过去

3. 无法访问被监控机器的原因是机器的网络ip解析失败

如果没有特定的配置, 直接写localhost 或 127.0.0.1 都是无法解析的. 所以需要在Prometheus.yml里面协商真实的ip地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值