Appearance
4. 集群监控搭建案例
INFO
基于 PODsys 搭建的集群可以方便的配置并行环境。本节以基于 Docker 的集群监控环境为例。
基于 Docker 的集群监控搭建存在以下优点:
- 环境一致性
- 快速部署
- 资源隔离
- 易于扩展更新和维护
4.1 集群环境
| Docker 镜像 | 管理节点 | 计算节点 | 作用 | 端口号 |
|---|---|---|---|---|
| grafana | ✓ | 负责展示prometheus监控界面 | 3000 | |
| Prometheus | ✓ | prometheus的主服务器 | 9090 | |
| dcgm-exporter | ✓ | ✓ | 负责收集 GPU 硬件信息和操作系统信息 | 9400 |
| node-exporter | ✓ | ✓ | 负责收集 Host 硬件信息和操作系统信息 | 9100 |
将 nexus 用户加入 docker 用户组
在后续使用docker的过程中,为了避免权限问题,需要将 nexus 用户加入 docker 用户组。
shell
# 在管理节点运行
sudo usermod -aG docker nexus
newgrp dockershell
# 在管理节点运行
pdsh -l root -R ssh -w ^hosts.txt "usermod -aG docker nexus"TIP
hosts.txt 记录了所有能够访问的计算节点的节点的IP地址。
需要通过 sudo ./config_server.sh -pre 生成。
4.2 安装配置 node-exporter
node-exporter 介绍
在 Prometheus 监控系统中,node_exporter 是一个用于收集和暴露机器系统数据的监控服务。它通过暴露一个接口,让 Prometheus 可以定期抓取和获取机器的各种指标数据。node_exporter 可以收集包括 CPU 利用率、内存使用量、磁盘空间、网络流量等在内的各种系统级别的指标数据。
node_exporter 的工作原理是通过在机器上运行一个独立的进程,该进程会定期采集系统的各种指标数据,并将其暴露给 Prometheus。Prometheus 会定期向 node_exporter 的接口发送请求,获取最新的指标数据。这些数据可以被 Prometheus 用于监控、报警、分析和可视化等用途。
通过使用 node_exporter,可以方便地收集和监控机器的系统级别指标数据,帮助用户了解机器的运行状态和性能状况。同时,由于node_exporter是一个开源的项目,用户可以根据自己的需求进行定制和扩展,以满足特定的监控需求。
管理节点执行命令:
- 管理节点拉取镜像并保存
shell
docker pull prom/node-exporter
docker save -o /home/nexus/podsys-2404/node-exporter.tar prom/node-exporter- 计算节点镜像分发
shell
pdcp -R ssh -w ^hosts.txt /home/nexus/podsys-2404/node-exporter.tar /podsys/node-exporter.tar- 计算节点镜像加载
shell
pdsh -R ssh -w ^hosts.txt "docker load -i /podsys/node-exporter.tar"- 启动容器
shell
# 在管理节点执行
docker run -d --name=node_exporter --net="host" --pid=host -v "/:/host:ro,rslave" prom/node-exporter:latest --path.rootfs=/hostshell
# 在管理节点执行
pdsh -R ssh -w ^hosts.txt "docker run -d --name=node_exporter --net="host" --pid=host -v "/:/host:ro,rslave" prom/node-exporter:latest --path.rootfs=/host"4.3 安装配置 dcgm-exporter
dcgm-exporter 介绍
DCGM(Data Center GPU Manager)是一套用于在数据中心集群环境中管理 和监视 NVIDIA GPU 的工具。它提供了主动健康监控、全面诊断、系统 警报以及电源和时钟管理等功能,帮助管理员实时地监控 GPU 的性能和健康状态,并及时采取措施进行管理和优化。
- 在管理节点拉取镜像并保存
shell
docker pull nvidia/dcgm-exporter:4.4.2-4.7.1-ubuntu22.04
docker save -o /home/nexus/podsys-2404/dcgm-exporter.tar nvidia/dcgm-exporter:4.4.2-4.7.1-ubuntu22.04- 计算节点镜像分发
shell
pdcp -R ssh -w ^hosts.txt /home/nexus/podsys-2404/dcgm-exporter.tar /podsys/dcgm-exporter.tar- 计算节点镜像加载
shell
pdsh -R ssh -w ^hosts.txt "docker load -i /podsys/dcgm-exporter.tar"- 启动容器
shell
# 在管理节点执行
docker run -d --gpus all --cap-add SYS_ADMIN --rm --name=dcgm-exporter -p 9400:9400 nvidia/dcgm-exporter:4.4.2-4.7.1-ubuntu22.04shell
# 在管理节点执行
pdsh -R ssh -w ^hosts.txt "docker run -d --gpus all --cap-add SYS_ADMIN --rm --name=dcgm-exporter -p 9400:9400 nvidia/dcgm-exporter:4.4.2-4.7.1-ubuntu22.04"4.4 安装配置 Prometheus
- 在管理节点拉取镜像
shell
docker pull prom/prometheus- 创建 prometheus.yml
shell
sudo mkdir -p /data/prometheus
sudo touch /data/prometheus/prometheus.yml
sudo chmod 777 -R /data/prometheusprometheus.yml
yaml
# 全局配置,定义了默认的抓取间隔和超时时间
global:
scrape_interval: 60s
scrape_timeout: 30s
# 抓取配置列表,用于定义需要抓取的指标作业
scrape_configs:
# Prometheus自身指标抓取作业配置
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.1.1:9090']
# DCGM Exporter抓取作业配置
- job_name: 'dcgm_export'
static_configs:
- targets: ['192.168.1.1:9400','192.168.1.2:9400']
# Node Exporter抓取作业配置
- job_name: 'node_export'
static_configs:
- targets: ['192.168.1.1:9100','192.168.1.2:9100']- 管理节点启动容器
shell
docker run -d --restart=always -p 9090:9090 --name=prometheus -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus- 检查端口
shell
sudo lsof -nP -i:9090
# 通过输入以下地址访问网页:
# 输入 http://localhost:9090/graph 访问页面
# 输入 http://localhost:9090/targets 访问页面4.5 安装配置 grafana
- 管理节点拉取镜像
shell
docker pull grafana/grafana- 管理节点启动容器
shell
sudo mkdir -p /data/grafana-storage
sudo chmod 777 -R /data/grafana-storageshell
docker run -d --restart=always -p 3000:3000 --name=grafana -v /data/grafana-storage/:/var/lib/grafana grafana/grafanashell
sudo lsof -nP -i:3000Grafana 配置
- 打开网页 Grafana(
http://localhost:3000)。使用默认账号密码登录 admin/admin. - 选择 Connections -> Data Sources -> Add Data Source -> Prometheus(输入 Prometheus server URL)-> Save & Test.
- 选择 Dashboards -> New Dashboard -> Import -> ...(参考 ID 16098:node-exporter,15117:dcgm-exporter) -> Load.