项目介绍
InManage Tools 是面向AI服务器的带内遥测与监控工具,围绕资产管理、组件监控、性能采集和数据上报等功能,构建计算节点统一的实时监控与管理能力,能有效地帮助用户掌握设备运行状态、提高运维效率、保障集群稳定运行。
项目详情
InManage Tools
介绍
InManage Tools 是面向AI服务器的带内遥测与监控工具,围绕资产管理、组件监控、性能采集和数据上报等功能,构建计算节点统一的实时监控与管理能力,能有效地帮助用户掌握设备运行状态、提高运维效率、保障集群稳定运行。
该服务实现对计算节点的全方位数据采集,提供对服务器的资产清点、组件健康度监控、性能指标采集、设备自动发现等全生命周期的监控能力。通过 WebSocket 实时推送和 Prometheus 指标导出双通道,将采集数据高效、可靠地上报至管理平台,所有数据支持一站式获取,实时可视,精准运维。
InManage Tools 可广泛应用于智算中心、AI 训练集群和高性能计算场景,能够在互联网、金融、电信等众多行业领域中,帮助用户快速完成服务器资源纳管、GPU 组件状态监控和性能指标采集等工作。
传统监控方案通常只关注运行时性能指标,缺乏对硬件资产信息和组件健康状态的深入感知。面对大规模 GPU 集群运维场景,仅靠性能数据无法满足精细化管理的需求。因此,InManage Tools 从资产清点、组件监控、性能采集三个维度出发,构建了完整的计算节点遥测体系,支撑AI服务器集群的高效运维。
软件架构

产品功能
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/driverDocker 部署
# 构建 Docker 镜像
make docker-build
# 运行容器
make docker-runKubernetes 部署
项目提供了开箱即用的 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_TTL | Token 有效期 |
DISCOVERY_IDENTITY | 设备发现认证标识 |
WEBSOCKET_HEADERS | WebSocket 自定义请求头 |
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": ""}'核心接口
| 接口 | 方法 | 说明 | 认证 |
|---|---|---|---|
/health | GET | 健康检查 | 是 |
/api/v1/metrics/json | GET | 指标数据(JSON 格式) | 是 |
/api/v1/discovery | POST | 设备发现 | Identity 认证 |
/metrics | GET | Prometheus 指标 | 是 |
/config | GET | 配置管理页面 | 是 |
/api/v1/auth/public-key | GET | 获取 RSA 公钥 | 否 |
/api/v1/auth/token | POST | 登录获取 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!