背景
需要支持获取SAS/NVMe SSD盘延时数据用于慢盘告警,需要新增用于触发收集和反馈收集数据的资源协作接口
关联ISSUE
支持获取RAID卡管理的华为SAS SSD盘的访问延时统计及传递
整体方案
1.首先由故障管理根据自己的算法触发收集硬盘访问延时数据,延时数据由storage进行收集;
2.故障管理识别到数据收集完成之后,通过资源协作接口,向storage请求获取已收集到的硬盘延时数据;
3.故障管理根据算法计算的结果,返回给storage用于判断是否触发慢盘告警。
评审点
新增资源协作接口方法:CollectDiagnoseData, GetDiagnoseData
详细描述
资源path: “/bmc/kepler/Systems/:SystemId/Storage/Drives/:Id”
资源interface: “bmc.kepler.Systems.Storage.Drive.Diagnose” (新增)
变化类型:新增接口,新增方法
应用场景:用于触发收集硬盘访问延时数据以及返回收集到的硬盘延时数据
| 方法名称 | 变化类型 | 请求签名 | 请求参数说明 | 响应签名 | 响应参数说明 | 访问权限 | 说明 | 约束 |
|---|---|---|---|---|---|---|---|---|
| CollectDiagnoseData | 新增方法 | as | 如表1所示 | u | TaskId:创建的任务Id | BasicSetting | 通过指定信息收集硬盘诊断数据 | 无 |
| GetDiagnoseData | 新增方法 | as | 如表2所示 | a{ss} | 如表3所示 | BasicSetting | 根据指定信息获取不同的硬盘诊断数据 | 无 |
表1:CollectDiagnoseData请求参数信息详细说明:
| 请求参数 | 请求参数取值 | 描述 |
|---|---|---|
| DiagnoseDataType | 字符串数组,当前支持“VendorDefinedIOLatency”:表示厂商自定义硬盘IO延时数据 | 用于指定收集的具体诊断数据类型 |
表2:GetDiagnoseData请求参数参数信息详细说明
| 请求参数 | 请求参数取值 | 描述 |
|---|---|---|
| DiagnoseDataType | 字符串数组,当前支持“VendorDefinedIOLatency”:表示厂商自定义硬盘IO延时数据 | 用于指定获取的具体诊断数据类型 |
表3:GetDiagnoseData响应参数信息详细说明
| 响应参数 | 响应参数取值 | 描述 |
|---|---|---|
| DiagnoseData | 字典,当前支持如表4 | 获取到的诊断数据 |
表4:响应参数取值示例
| 字典key值 | 字典value值 | 描述 |
|---|---|---|
| VendorDefinedIOLatency | 码流字符串 | 厂商自定义硬盘IO延时数据:如果获取不到则返回空字符,延时数据第1个字节表示版本号(只针对NVMe盘有效,其他盘为0xFF) |
评审结论
同意新增资源协作接口 bmc.kepler.Systems.Storage.Drive.Diagnose并新增方法,具体如下:
path: /bmc/kepler/Systems/:SystemId/Storage/Drives/:Id
新增interface: bmc.kepler.Systems.Storage.Drive.Diagnose
新增方法:
| 方法名称 | 变化类型 | 请求签名 | 请求参数说明 | 响应签名 | 响应参数说明 | 访问权限 | 说明 | 约束 |
|---|---|---|---|---|---|---|---|---|
| CollectDiagnoseData | 新增方法 | as | 如详细描述表1所示 | u | TaskId:创建的任务Id | BasicSetting | 通过指定信息收集硬盘诊断数据 | 无 |
| GetDiagnoseData | 新增方法 | as | 如详细描述表2所示 | a{ss} | 如详细描述表3所示 | BasicSetting | 根据指定信息获取不同的硬盘诊断数据 | 无 |
遗留问题
问题1:CollectDiagnoseData必选参数不能放在数组参数中,要显式放在接口参数签名中,非必选参数放在数组参数中。
结论:已修改成对指定硬盘(interface归属到具体的硬盘对象路径)进行诊断数据收集,需要收集的数据类型/指标类型通过必选参数指定