Skip to content

wangfeng2016/api-adapter

Repository files navigation

HISO API适配器

智算平台API适配器服务,将用户期望的API格式转换为智算平台的标准API格式。

🚀 功能特性

  • API格式转换:统一的响应格式 {code, msg, data}
  • 智算平台集成:完整支持智算平台API
  • 错误处理:统一的错误响应格式
  • 安全中间件:Helmet安全防护
  • CORS支持:跨域请求处理
  • 日志记录:详细的访问日志
  • 健康检查:服务状态监控
  • 优雅关闭:信号处理和资源清理

📋 API映射关系

用户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数据 驾驶舱资源监控统一接口

🛠️ 快速开始

1. 安装依赖

cd api-adapter
npm install

2. 配置环境变量

# 复制环境配置文件
cp .env.example .env

# 编辑配置文件
notepad .env

关键配置项:

  • PORT: 服务器端口 (默认: 3002)
  • HISO_BASE_URL: 智算平台API基础URL
  • ALLOWED_ORIGINS: CORS允许的源

3. 启动服务

# 生产环境
npm start

# 开发环境(自动重启)
npm run dev

📚 API文档

响应格式

所有API响应都采用统一格式:

{
  "code": 0,        // 0: 成功, 1: 失败
  "msg": "",        // 错误信息或提示信息
  "data": {}        // 响应数据
}

1. 健康检查

请求

GET /health

响应

{
  "code": 0,
  "msg": "",
  "data": {
    "status": "healthy",
    "timestamp": "2024-01-01T00:00:00.000Z"
  }
}

2. 获取模型任务数量

请求

GET /aim/api/report/getModelTaskCnt
Authorization: Bearer your_token
x-navicloud-dept-path: your_dept_path

响应

{
  "code": 0,
  "msg": "",
  "data": [5]
}

3. 获取算力中心列表

请求

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
    }
  ]
}

4. 获取算力中心详情

请求

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
  }
}

5. 获取算力中心分区列表

请求

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"
    }
  ]
}

📊 资源监控API

6. 驾驶舱资源监控统一接口

请求

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部署

# 安装PM2
npm install -g pm2

# 启动服务
pm2 start server.js --name "api-adapter"

# 查看状态
pm2 status

# 查看日志
pm2 logs api-adapter

方案三:Docker部署

# 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"}}

🔍 故障排除

常见问题

  1. 服务无法启动

    • 检查端口是否被占用
    • 确认Node.js版本 >= 16.0.0
    • 检查环境变量配置
  2. 智算平台连接失败

    • 检查HISO_BASE_URL配置
    • 确认网络连通性
    • 检查防火墙设置
  3. 认证失败

    • 确认Bearer token有效
    • 检查x-navicloud-dept-path头部
    • 验证智算平台权限

调试模式

# 启用详细日志
LOG_LEVEL=debug npm start

# 使用nodemon开发模式
npm run dev

🔒 安全注意事项

  1. 环境变量:不要将.env文件提交到版本控制
  2. CORS配置:生产环境请限制允许的源
  3. 请求验证:确保传递正确的认证头
  4. 错误信息:避免泄露敏感的系统信息

🚧 开发和测试

添加新的API映射

  1. server.js中添加新的路由
  2. 实现数据格式转换逻辑
  3. 添加错误处理
  4. 更新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

📝 更新日志

v1.3.0

  • ✅ 优化驾驶舱API返回数据结构
  • ✅ 简化 cardCount 节点,仅保留 totalCardsusedCards
  • ✅ 简化 totalCores 节点,仅保留 totalCores
  • ✅ 简化 memory.usage 节点,仅保留 overallUsage
  • ✅ 移除 storage.total.breakdown 详细分类信息
  • ✅ 简化 storage.usage 节点,仅保留 overallUsage
  • ✅ 减少数据传输量,提升API响应性能
  • ✅ 更新API文档,反映优化后的数据结构

v1.2.0

  • ✅ 重构资源监控API架构
  • ✅ 合并9个独立接口为统一的驾驶舱接口
  • ✅ 新增 /aim/api/dashboard/resources 统一接口
  • ✅ 优化数据结构,提供完整的资源监控数据
  • ✅ 简化前端集成,一次请求获取所有资源数据
  • ✅ 保持Mock数据格式,便于开发测试

v1.1.0

  • ✅ 新增资源监控API(9个接口)
  • ✅ GPU总算力查询接口
  • ✅ GPU卡数统计接口
  • ✅ GPU使用率监控接口
  • ✅ CPU总核数查询接口
  • ✅ CPU使用率监控接口
  • ✅ 内存总量查询接口
  • ✅ 内存使用率监控接口
  • ✅ 存储总量查询接口
  • ✅ 存储使用率监控接口
  • ✅ 支持Mock数据返回,便于集成测试

v1.0.0

  • ✅ 初始版本发布
  • ✅ 支持算力中心相关API转换
  • ✅ 统一响应格式
  • ✅ 完整的错误处理
  • ✅ 健康检查功能

技术支持:HISO开发团队
更新时间:2024年1月

About

api-adapter for zhong lv project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published