智算平台API适配器服务,将用户期望的API格式转换为智算平台的标准API格式。
- ✅ API格式转换:统一的响应格式
{code, msg, data} - ✅ 智算平台集成:完整支持智算平台API
- ✅ 错误处理:统一的错误响应格式
- ✅ 安全中间件:Helmet安全防护
- ✅ CORS支持:跨域请求处理
- ✅ 日志记录:详细的访问日志
- ✅ 健康检查:服务状态监控
- ✅ 优雅关闭:信号处理和资源清理
| 用户API | 智算平台API | 功能描述 |
|---|---|---|
GET /aim/api/report/getModelTaskCnt |
GET /datacenters |
获取模型任务数量(算力中心数量) |
GET /aim/api/datacenters/list |
GET /datacenters |
获取算力中心列表 |
GET /aim/api/datacenters/:id |
GET /datacenters/:id |
获取算力中心详情 |
GET /aim/api/datacenters/:id/namespaces |
GET /datacenters/:id/namespaces |
获取算力中心分区列表 |
GET /aim/api/dashboard/resources |
Mock数据 | 驾驶舱资源监控统一接口 |
cd api-adapter
npm install# 复制环境配置文件
cp .env.example .env
# 编辑配置文件
notepad .env关键配置项:
PORT: 服务器端口 (默认: 3002)HISO_BASE_URL: 智算平台API基础URLALLOWED_ORIGINS: CORS允许的源
# 生产环境
npm start
# 开发环境(自动重启)
npm run dev所有API响应都采用统一格式:
{
"code": 0, // 0: 成功, 1: 失败
"msg": "", // 错误信息或提示信息
"data": {} // 响应数据
}请求
GET /health响应
{
"code": 0,
"msg": "",
"data": {
"status": "healthy",
"timestamp": "2024-01-01T00:00:00.000Z"
}
}请求
GET /aim/api/report/getModelTaskCnt
Authorization: Bearer your_token
x-navicloud-dept-path: your_dept_path响应
{
"code": 0,
"msg": "",
"data": [5]
}请求
GET /aim/api/datacenters/list?name=test&type=GPU
Authorization: Bearer your_token
x-navicloud-dept-path: your_dept_path响应
{
"code": 0,
"msg": "",
"data": [
{
"id": 1,
"name": "kubernetes-admin",
"type": ["GPU"],
"nodeCount": 1,
"cpuUsage": 17.5,
"memoryUsage": 3.4,
"gpuUsage": 150.0
}
]
}请求
GET /aim/api/datacenters/1
Authorization: Bearer your_token
x-navicloud-dept-path: your_dept_path响应
{
"code": 0,
"msg": "",
"data": {
"id": 1,
"name": "kubernetes-admin",
"type": ["GPU"],
"masterUrl": "https://k8s.example.com",
"clusterType": "Self",
"alias": "k8s-cluster-1",
"nodeCount": 1,
"resources": {
"cpu": {
"total": 48000,
"request": 8400,
"usage": 17.5
},
"memory": {
"total": 405486624768,
"request": 13824425984,
"usage": 3.4
},
"gpu": {
"total": 2,
"request": 3,
"usage": 150.0,
"memory": {
"total": 120259084288,
"request": 0
}
}
},
"lastUpdated": 1712732116
}
}请求
GET /aim/api/datacenters/1/namespaces
Authorization: Bearer your_token
x-navicloud-dept-path: your_dept_path响应
{
"code": 0,
"msg": "",
"data": [
{
"name": "default",
"displayName": "default"
},
{
"name": "kube-system",
"displayName": "kube-system"
}
]
}请求
GET /aim/api/dashboard/resources响应
{
"code": 0,
"msg": "获取资源监控数据成功",
"data": {
"gpu": {
"totalCompute": 1250.5,
"cardCount": {
"totalCards": 128,
"usedCards": 39
},
"usage": {
"overallUsage": 68.5
}
},
"cpu": {
"totalCores": {
"totalCores": 2048
},
"usage": {
"overallUsage": 45.8
}
},
"memory": {
"total": {
"totalMemory": 16384
},
"usage": {
"overallUsage": 62.3
}
},
"storage": {
"total": {
"totalStorage": 2048
},
"usage": {
"overallUsage": 73.2
}
}
}
}数据结构说明
gpu.totalCompute: GPU总算力(TFLOPS)gpu.cardCount.totalCards: GPU卡总数gpu.cardCount.usedCards: GPU已使用卡数gpu.usage.overallUsage: GPU整体使用率(%)cpu.totalCores.totalCores: CPU总核数cpu.usage.overallUsage: CPU整体使用率(%)memory.total.totalMemory: 内存总量(GB)memory.usage.overallUsage: 内存整体使用率(%)storage.total.totalStorage: 存储总量(TB)storage.usage.overallUsage: 存储整体使用率(%)
# 安装依赖
npm install --production
# 配置环境变量
cp .env.example .env
# 启动服务
npm start# 安装PM2
npm install -g pm2
# 启动服务
pm2 start server.js --name "api-adapter"
# 查看状态
pm2 status
# 查看日志
pm2 logs api-adapter# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3002
CMD ["npm", "start"]# 构建镜像
docker build -t hiso-api-adapter .
# 运行容器
docker run -d -p 3002:3002 --env-file .env hiso-api-adapter服务使用Morgan中间件记录访问日志:
127.0.0.1 - - [01/Jan/2024:00:00:00 +0000] "GET /aim/api/report/getModelTaskCnt HTTP/1.1" 200 45
# 检查服务状态
curl http://localhost:3002/health
# 预期响应
{"code":0,"msg":"","data":{"status":"healthy","timestamp":"2024-01-01T00:00:00.000Z"}}-
服务无法启动
- 检查端口是否被占用
- 确认Node.js版本 >= 16.0.0
- 检查环境变量配置
-
智算平台连接失败
- 检查
HISO_BASE_URL配置 - 确认网络连通性
- 检查防火墙设置
- 检查
-
认证失败
- 确认Bearer token有效
- 检查
x-navicloud-dept-path头部 - 验证智算平台权限
# 启用详细日志
LOG_LEVEL=debug npm start
# 使用nodemon开发模式
npm run dev- 环境变量:不要将
.env文件提交到版本控制 - CORS配置:生产环境请限制允许的源
- 请求验证:确保传递正确的认证头
- 错误信息:避免泄露敏感的系统信息
- 在
server.js中添加新的路由 - 实现数据格式转换逻辑
- 添加错误处理
- 更新API文档
# 测试健康检查
curl http://localhost:3002/health
# 测试API转换(需要有效token)
curl -H "Authorization: Bearer your_token" \
-H "x-navicloud-dept-path: your_dept" \
http://localhost:3002/aim/api/report/getModelTaskCnt- ✅ 优化驾驶舱API返回数据结构
- ✅ 简化
cardCount节点,仅保留totalCards和usedCards - ✅ 简化
totalCores节点,仅保留totalCores - ✅ 简化
memory.usage节点,仅保留overallUsage - ✅ 移除
storage.total.breakdown详细分类信息 - ✅ 简化
storage.usage节点,仅保留overallUsage - ✅ 减少数据传输量,提升API响应性能
- ✅ 更新API文档,反映优化后的数据结构
- ✅ 重构资源监控API架构
- ✅ 合并9个独立接口为统一的驾驶舱接口
- ✅ 新增
/aim/api/dashboard/resources统一接口 - ✅ 优化数据结构,提供完整的资源监控数据
- ✅ 简化前端集成,一次请求获取所有资源数据
- ✅ 保持Mock数据格式,便于开发测试
- ✅ 新增资源监控API(9个接口)
- ✅ GPU总算力查询接口
- ✅ GPU卡数统计接口
- ✅ GPU使用率监控接口
- ✅ CPU总核数查询接口
- ✅ CPU使用率监控接口
- ✅ 内存总量查询接口
- ✅ 内存使用率监控接口
- ✅ 存储总量查询接口
- ✅ 存储使用率监控接口
- ✅ 支持Mock数据返回,便于集成测试
- ✅ 初始版本发布
- ✅ 支持算力中心相关API转换
- ✅ 统一响应格式
- ✅ 完整的错误处理
- ✅ 健康检查功能
技术支持:HISO开发团队
更新时间:2024年1月