inmanage-tools

陆伍
昨天发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

InManage Tools 是面向AI服务器的带内遥测与监控工具,围绕资产管理、组件监控、性能采集和数据上报等功能,构建计算节点统一的实时监控与管理能力,能有效地帮助用户掌握设备运行状态、提高运维效率、保障集群稳定运行。

项目详情

InManage Tools

介绍

InManage Tools 是面向AI服务器的带内遥测与监控工具,围绕资产管理、组件监控、性能采集和数据上报等功能,构建计算节点统一的实时监控与管理能力,能有效地帮助用户掌握设备运行状态、提高运维效率、保障集群稳定运行。

该服务实现对计算节点的全方位数据采集,提供对服务器的资产清点、组件健康度监控、性能指标采集、设备自动发现等全生命周期的监控能力。通过 WebSocket 实时推送和 Prometheus 指标导出双通道,将采集数据高效、可靠地上报至管理平台,所有数据支持一站式获取,实时可视,精准运维。

InManage Tools 可广泛应用于智算中心、AI 训练集群和高性能计算场景,能够在互联网、金融、电信等众多行业领域中,帮助用户快速完成服务器资源纳管、GPU 组件状态监控和性能指标采集等工作。

传统监控方案通常只关注运行时性能指标,缺乏对硬件资产信息和组件健康状态的深入感知。面对大规模 GPU 集群运维场景,仅靠性能数据无法满足精细化管理的需求。因此,InManage Tools 从资产清点、组件监控、性能采集三个维度出发,构建了完整的计算节点遥测体系,支撑AI服务器集群的高效运维。

软件架构

InManage Tools 架构图

产品功能

InManage Tools 是面向AI服务器计算设备全生命周期的带内遥测监控工具。

资产管理

轻量级资产管理,支持服务器硬件资源的自动发现和清点,为资源纳管和调度提供数据支持。

采集范围包括:服务器整机信息、CPU、内存、GPU、网卡、网口、硬盘、分区等全部核心硬件资产。

管理功能包括:

  • 服务器资产:厂商、型号、序列号、BIOS 版本、主板信息、UUID 等
  • 系统资产:操作系统、内核版本、架构、主机名、GPU 驱动版本、计算库版本等
  • CPU 资产:型号、厂商、核心数、线程数、主频、缓存信息、插槽等
  • 内存资产:厂商、型号、容量、频率、类型、序列号、插槽位置等
  • GPU 资产:型号、UUID、显存、架构、频率、功耗限制、ECC 模式、总线地址等
  • 网卡资产:型号、厂商、驱动、总线、端口数、InfiniBand 识别等
  • 网口资产:速率、双工模式、连接状态等
  • 硬盘资产:型号、厂商、类型、容量、序列号、固件版本、温度阈值等
  • 分区资产:挂载点、文件系统类型、容量等

操作系统监控

提供操作系统运行态信息的采集,掌握系统层的用户、进程、服务和网络连接状态。

  • 用户信息:用户名、用户组、家目录、Shell 类型等
  • 进程信息:PID、用户、CPU/内存占用、启动时间、命令行等(支持数量限制)
  • 服务信息:Systemd 服务单元名称、加载状态、运行状态、子状态、描述等
  • 端口信息:协议、收发队列、本地/远程地址、连接状态、关联进程等

组件监控

针对 GPU 集群核心组件进行健康度监控,实时感知组件运行状态变化并自动上报。

当前支持的 NVIDIA 组件监控范围:

  • 驱动(Driver):NVIDIA GPU 驱动版本与状态
  • 运行时(Runtime):CUDA 运行时版本与可用性
  • 库(Library):NVML 库、NCCL 通信库版本与状态
  • 服务(Service):nvidia-persistenced、nvidia-fabricmanager、nvidia-imex 服务状态
  • 硬件(Hardware):NVLink 连接状态
    后续将扩展其他厂商 GPU 组件监控。

组件状态变化时,自动通过 WebSocket 向管理平台推送实时告警通知。

性能监控

提供计算节点全维度的实时性能指标采集,支撑容量规划和异常检测。

  • CPU 性能:使用率、空闲率、IO 等待、系统/用户态占比等
  • 内存性能:总量、已用、缓存、缓冲、Swap 使用情况等
  • 系统负载:1/5/15 分钟平均负载及归一化负载
  • 网络性能:TCP/UDP 连接统计、重传率、收发速率、包统计等
  • 磁盘 IO:读写速率、IOPS、等待延迟、队列深度、利用率等
  • SMART 健康:温度、可用备用空间、剩余寿命、通电时间、 power cycles 等
  • 分区使用:总量、已用、可用、使用率等
  • 逻辑卷:卷组使用率
  • 文件句柄:当前打开数、最大限制、使用率
  • 系统运行:进程总数、僵尸进程数、运行时长

设备发现

支持带内设备自动发现接口,管理平台可通过该接口自动获取设备序列号、型号、厂商和主机名等信息,实现设备的自动注册和纳管。

关键技术特性

  • 多维度遥测采集,覆盖设备全生命周期
    从资产清点、组件健康、性能指标三个维度构建完整的计算节点遥测体系,为精细化运维提供全面的数据支撑。
  • WebSocket 实时上报,状态变更即时感知
    通过 WebSocket 长连接实现心跳保活、指标定时推送和组件状态变更实时通知,确保管理平台第一时间感知设备异常。
  • 双通道数据导出,灵活适配监控体系
    同时支持 Prometheus /metrics 端点和 RESTful JSON API,兼容主流监控系统,满足不同场景的数据消费需求。
  • 配置热更新,采集策略动态调整
    内置 Web 配置管理页面,支持在线修改指标采集策略(启停、采集模式、采集间隔、字段过滤),无需重启服务即可生效。
  • GPU 深度监控,聚焦智算场景
    针对大规模 GPU 集群场景,提供 GPU 资产清点、NVIDIA 全组件健康监控、组件状态变更告警等能力,保障 AI 训练任务稳定运行。
  • 多层安全认证,保障数据传输安全
    采用 RSA 非对称加密传输凭据 + JWT Token 认证机制,支持 TLS 1.3 强制加密,使用常数时间比较防御时序攻击,确保接口访问安全可靠。
  • 多架构编译,支持主流硬件平台
    提供 Linux AMD64/ARM64、Windows AMD64、macOS AMD64 多平台交叉编译能力,适配异构算力集群部署需求。
  • 容器化部署,K8s 原生支持
    提供开箱即用的 Dockerfile 和 Kubernetes DaemonSet 部署模板,支持一键部署至整个集群,安全上下文遵循最小权限原则。

安装部署

系统依赖

  • Linux 操作系统(推荐 Anolis OS / Ubuntu / CentOS)
  • 如需 GPU 监控,需安装厂商驱动与工具包(如 NVIDIA 驱动和 CUDA 工具包)
  • Go 1.21 或更高版本(源码编译)

源码编译

# 克隆代码
git clone 
cd snap-telemetry

# 安装依赖
make deps

# 构建当前平台二进制
make build

# 构建多平台版本
make build-all

构建产物位于 bin/ 目录下。

直接运行

# 使用编译好的二进制运行
make run

# 或直接运行
./bin/driver

Docker 部署

# 构建 Docker 镜像
make docker-build

# 运行容器
make docker-run

Kubernetes 部署

项目提供了开箱即用的 DaemonSet 部署模板,可将 Driver 以 DaemonSet 方式部署至集群中的每个计算节点:

# 部署至 Kubernetes 集群
kubectl apply -f deployments/driver_daemonset.yaml

# 使用部署脚本(如需自定义)
bash deployments/deploy-k8s.sh

部署特性:

  • 创建专用 Namespace 和 ServiceAccount,禁用自动挂载 API Token
  • 遵循最小权限原则,使用 capabilities 替代特权模式
  • 配置 Seccomp Profile(RuntimeDefault)增强安全性
  • 挂载 /sys/class/dmi、/dev、/etc/os-release 等宿主机路径以采集硬件信息
  • 内置 Liveness/Readiness 探针,保障服务可用性

配置说明

主配置文件

主配置文件位于 configs/config.yaml:

server:
  resource_id: ""
  host: ""                    # OS IP地址,用于WebSocket注册
  serial: ""                  # 设备序列号(留空则自动获取)
  port: :31018                # 服务监听端口
  readTimeout: 10s
  writeTimeout: 10s

log:
  level: debug                # 日志级别:debug/info/warn/error
  format: json                # 日志格式:json/text
  output: stdout              # 日志输出:stdout/file

export:
  enablePrometheus: true      # 启用 Prometheus 指标导出
  enableJSON: true            # 启用 JSON API
  authToken: ''               # 静态认证Token(可选)

websocket:
  enabled: true               # 启用 WebSocket 客户端
  url: "ws://host:port/path"  # WebSocket 服务器地址
  reconnectDelay: "5s"        # 重连延迟
  maxReconnect: -1            # 最大重连次数(-1表示无限)
  heartbeatInterval: 30s      # 心跳间隔
  metricsInterval: 60s        # 指标推送间隔

discovery:
  enabled: true               # 启用设备发现接口
  identity: ""                # 认证标识(建议通过环境变量配置)

auth:
  username: admin             # 登录用户名
  password: Manage1!          # 登录密码
  tokenTTL: 24h               # Token 有效期

指标采集配置

指标采集配置位于 configs/metrics_config.yaml,支持按模块和子项粒度独立控制:

  • 采集开关:每个模块和子项可独立启用/禁用
  • 采集模式:once(仅采集一次,适用于资产类)或 loop(循环采集)
  • 采集间隔:按秒配置各子项的独立采集周期
  • 数量限制:进程、服务、端口等支持返回数量上限
  • 字段过滤:精细化控制每个字段的输出

环境变量覆盖

支持通过环境变量覆盖配置项,避免敏感信息硬编码:

环境变量说明
SERVER_PORT服务监听端口
LOG_LEVEL日志级别
AUTH_USERNAME认证用户名
AUTH_PASSWORD认证密码
AUTH_TOKEN_TTLToken 有效期
DISCOVERY_IDENTITY设备发现认证标识
WEBSOCKET_HEADERSWebSocket 自定义请求头

API 接口

认证流程

# 1. 获取 RSA 公钥
curl http://localhost:31018/api/v1/auth/public-key

# 2. 使用公钥加密用户名密码,请求 Token
curl -X POST http://localhost:31018/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"data": ""}'

核心接口

接口方法说明认证
/healthGET健康检查是
/api/v1/metrics/jsonGET指标数据(JSON 格式)是
/api/v1/discoveryPOST设备发现Identity 认证
/metricsGETPrometheus 指标是
/configGET配置管理页面是
/api/v1/auth/public-keyGET获取 RSA 公钥否
/api/v1/auth/tokenPOST登录获取 Token否

访问示例

# 使用 Token 访问指标接口
curl -H "Authorization: Bearer " \
  http://localhost:31018/api/v1/metrics/json?pretty=true

# Prometheus 抓取配置示例
scrape_configs:
  - job_name: 'super-node-driver'
bearer_token: ''
static_configs:
  - targets: ['localhost:31018']

目录结构

.
├── cmd/driver/               # 主程序入口
├── internal/
│   ├── collector/            # 指标采集器
│   │   ├── asset/            # 资产采集(CPU/GPU/内存/磁盘/网卡等)
│   │   ├── component/        # 组件监控(如NVIDIA驱动/CUDA/NVML等)
│   │   ├── os/               # 操作系统信息(用户/进程/服务/端口)
│   │   ├── performance/      # 性能指标(CPU/内存/网络/磁盘IO/SMART等)
│   │   ├── collector.go      # 采集器核心调度
│   │   └── prometheus.go     # Prometheus 指标转换
│   ├── config/               # 配置管理(热更新支持)
│   ├── exporter/             # HTTP 导出服务(含认证/配置管理页面)
│   ├── models/               # 数据模型定义
│   ├── monitor/              # 组件状态监控器
│   ├── prometheus/           # Prometheus 注册表与处理器
│   └── websocket/            # WebSocket 客户端(实时上报)
├── pkg/utils/                # 公共工具(日志/YAML)
├── api/                      # OpenAPI 接口定义
├── configs/                  # 配置文件
├── deployments/              # 部署文件(Docker/K8s)
├── scripts/                  # 构建脚本
├── Dockerfile                # Docker 构建文件
└── Makefile                  # 构建管理脚本

开发

常用命令

make run            # 编译并运行
make test           # 运行测试
make test-coverage  # 生成测试覆盖率报告
make fmt            # 代码格式化
make lint           # 代码静态检查
make help           # 查看所有可用命令

贡献

欢迎提交 Issue 和 Pull Request!

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告