-
卷积神经网络(CNN)相比传统机器学习方法在图像和空间数据处理中具有显著优势 1. 自动特征提取能力传统方法:依赖人工设计特征(如SIFT、HOG或颜色直方图),需专业领域知识且特征泛化性差。CNN:通过卷积层自动学习图像中的局部特征(如边缘、纹理、形状),无需人工干预。例如:低层卷积核识别简单边缘和角点。高层卷积核组合基础特征,形成复杂语义(如物体部件)。优势:适应复杂数据(如遮挡、光照变化),提升模型泛化能力。 2. 参数效率与计算优化局部连接与权重共享:传统全连接网络(如MLP)需每个神经元连接所有输入像素,参数量巨大(如1000×1000像素图像需1亿参数)。CNN通过卷积核局部滑动和参数复用,大幅减少参数。例如:3×3卷积核仅需9个权重,与输入尺寸无关。池化层(Pooling):压缩特征图尺寸(如最大池化保留显著特征),降低计算量并增强平移不变性。 3. 空间不变性与分层特征学习平移不变性:卷积核在不同位置重复使用,使模型对物体位置变化不敏感(如猫在图像左侧或右侧均能识别)。层次化特征抽象:底层:提取基础视觉特征(边缘、颜色)。中层:组合为纹理或部件(如车轮、车窗)。高层:整合为完整物体(如汽车)。与传统方法对比:传统算法(如SVM、随机森林)无法建模这种层级结构,导致复杂场景识别能力弱。 4. 性能优势与硬件适配性计算效率:卷积操作高度并行化,适合GPU加速,训练速度远超传统方法。实验表现:在Fashion MNIST数据集上,CNN准确率达89%,显著高于逻辑回归(80%)、随机森林(77%)和SVM(77%)。大规模任务(如ImageNet)中,CNN模型(ResNet、EfficientNet)Top-5错误率降至5%以下,远超传统方法。 5. 应用场景的广泛性与灵活性图像相关任务:图像分类(如AlexNet、VGG)。目标检测(YOLO、Mask R-CNN)。图像分割(U-Net)。跨领域扩展:自然语言处理(文本分类、情感分析)。视频分析(动作识别)。医学影像(病灶检测)。传统方法局限:依赖固定特征工程,难以适应多模态或高维数据。 局限性及应对策略虽然CNN优势显著,但仍需注意:数据依赖性:需大量标注数据,可通过数据增强(旋转、裁剪)或迁移学习缓解。旋转与尺度敏感性:对物体旋转和缩放变化较敏感,可通过空间变换网络(STN)改进。计算资源需求:轻量化设计(如MobileNet)可适配移动端部署。总结:核心优势对比特性传统机器学习方法卷积神经网络(CNN)特征提取方式依赖人工设计特征自动学习层级特征参数效率参数量巨大,扩展性差权重共享,参数少且高效空间不变性需额外处理(如数据增强)内置平移不变性计算适配性并行优化困难高度并行化,GPU加速优势明显复杂任务表现高维数据(如图像)表现弱在图像、视频等任务中领先CNN通过端到端学习、参数共享和分层抽象机制,解决了传统方法在高维数据上的瓶颈,成为计算机视觉领域的核心工具,并持续推动跨领域应用创新。
-
在训练卷积神经网络(CNN)时,学习率(Learning Rate, LR)是影响模型性能的核心超参数之一。它决定了参数更新的步长:过大会导致模型震荡、不收敛;过小则会使训练缓慢、陷入局部最优。合理调节学习率能显著加速收敛、提高模型精度。以下是具体的调节策略和实践技巧:一、学习率的核心作用与影响学习率通过优化器(如SGD、Adam)控制参数更新幅度:参数更新公式:是损失函数的梯度。影响:过⼤LR:参数更新步长过大,可能跳过最优解,导致损失震荡甚至发散(Loss上升)。过⼩LR:参数更新缓慢,训练耗时增加,易陷入局部极小值(验证集精度停滞)。二、基础调节策略:学习率调度(Learning Rate Scheduling)实际训练中,固定学习率难以兼顾“快速收敛”和“精细优化”,通常采用动态调整策略(学习率调度),根据训练进程(如epoch数、损失变化)自动调整LR。1. 阶段性衰减(Step Decay)原理:预设训练阶段,每经过一定epoch后按固定比例降低学习率(如每10个epoch衰减为原来的1/10)。适用场景:训练初期需要较大LR快速收敛,后期减小LR精细优化。示例:初始LR=0.01,每15个epoch乘以0.1(即0.01→0.001→0.0001…)。实现(PyTorch):import torch.optim as optim from torch.optim.lr_scheduler import StepLR optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9) # 每15个epoch,学习率乘以0.1 scheduler = StepLR(optimizer, step_size=15, gamma=0.1) for epoch in range(100): train(...) scheduler.step() # 每个epoch后更新学习率 2. 指数衰减(Exponential Decay)原理:学习率随epoch呈指数级衰减,公式为。特点:衰减速度比阶段性衰减更平滑,适合需要缓慢精细调整的场景(如训练后期)。注意:( \gamma )需接近1(如0.95~0.99),否则LR会快速趋近于0导致训练停滞。3. 余弦退火(Cosine Annealing)原理:学习率随epoch按余弦函数曲线衰减,公式为:其中( T_{\text{max}} )为衰减周期,( \text{LR}_{\text{min}} )为最小学习率。特点:后期LR缓慢下降,避免陷入局部最优,尤其适合深层CNN(如ResNet、DenseNet)。扩展:带重启的余弦退火(Cosine Annealing with Restarts),定期将LR重置为较大值,帮助模型跳出局部最优(适合复杂任务)。4. 自适应衰减(ReduceLROnPlateau)原理:当验证集指标(如损失、准确率)停止提升时,自动降低学习率(如当验证损失连续3个epoch不下降时,LR乘以0.5)。优点:无需预设衰减时机,完全基于训练动态调整,适合数据分布复杂、难以预判衰减点的场景。实现(PyTorch):scheduler = optim.lr_scheduler.ReduceLROnPlateau( optimizer, mode='min', # 监控"最小化验证损失" factor=0.5, # 衰减系数 patience=3, # 连续3个epoch无改善则衰减 verbose=True ) for epoch in range(100): train_loss = train(...) val_loss = validate(...) scheduler.step(val_loss) # 基于验证损失更新LR 三、自适应学习率优化器除了手动调度,还可使用自带学习率调整机制的优化器,它们会根据梯度的历史信息动态调整每个参数的学习率,适合难以手动调参的场景。优化器特点适用场景Adam结合动量和RMSProp,对学习率敏感低,收敛快数据少、训练初期快速收敛RMSprop自适应调整学习率,抑制梯度震荡,适合非平稳目标函数递归神经网络(如CNN+LSTM)AdamWAdam的改进版,加入权重衰减(Weight Decay),泛化能力更强深层CNN(如ViT、ResNet-50+)注意:自适应优化器仍需设置初始学习率(如Adam通常用0.001),且可结合学习率调度(如余弦退火)进一步提升性能。四、学习率初始化:找到合适的起点初始学习率设置不当会导致训练失败(如发散),可通过以下方法确定初始值:1. 经验值参考简单CNN(如LeNet、小型自定义网络):SGD用0.01~0.1,Adam用0.001~0.0001。深层CNN(如ResNet、VGG):SGD用0.1(配合动量0.9),Adam用0.0001~0.0005。预训练模型微调:初始LR需更小(如0.0001),避免破坏预训练权重。2. 学习率范围测试(LR Range Test)通过逐步增大学习率,观察损失变化,找到“最大有效学习率”:从极小LR(如1e-7)开始,每个batch按指数级增大LR(如乘以1.1)。绘制“学习率-损失”曲线,选择损失开始快速下降且未发散的LR作为初始值(通常是曲线最低点LR的1/10)。工具:FastAI库的lr_find()函数可自动实现该测试。五、训练阶段的动态调整技巧预热(Warmup):训练初期用小LR(如初始值的1/10),逐渐增加到目标LR(如前5个epoch线性升温)。作用:避免初始大LR破坏参数分布(尤其对批归一化(BN)层,初期统计量不稳定)。适用场景:大batch训练(如1024+)、深层CNN(如EfficientNet)。分段调整:训练前期(0~50% epoch):用较大LR快速收敛(如0.01)。中期(50%~80% epoch):减小LR(如0.001),精细优化。后期(80%~100% epoch):用极小LR(如0.0001),微调参数至最优。六、诊断与调优:通过损失曲线判断学习率是否合适训练过程中,可通过损失曲线(训练/验证损失)判断学习率是否合理:现象可能原因解决方案损失持续上升(发散)初始LR过大降低初始LR(如除以10)损失下降极慢,长期不变LR过小或陷入局部最优增大LR或用余弦退火重启训练损失低但验证损失高(过拟合)LR过大导致参数过拟合减小LR+增加正则化(如Dropout)损失震荡剧烈(忽高忽低)LR过大或batch size过小降低LR或增大batch size七、总结:调节学习率的核心原则动态性:避免固定LR,结合调度策略(如分段衰减、余弦退火)或自适应优化器。阶段性:初期用较大LR快速收敛,后期用小LR精细优化,必要时预热。数据驱动:通过损失曲线、LR范围测试等工具,而非完全依赖经验。协同优化:学习率需与batch size、正则化(如权重衰减)、优化器动量等参数协同调整(如增大batch size时,LR可适当增大)。通过以上策略,可有效提升CNN的训练效率和最终性能。实际应用中需结合具体任务(如分类、检测)和数据特点,通过多次实验迭代优化。
-
一、自动化工具辅助迁移SQLShift:异构存储过程智能转换核心能力:SQL Server → GaussDB:支持 T-SQL 到 PL/pgSQL 的精准转换,覆盖 300+ 语法点(如临时表、系统函数、数据类型)。示例:SELECT ... INTO #temp → CREATE TEMP TABLE ... AS非标语法修复:自动重构表别名作用域(如 UPDATE a SET ... FROM tableA a → UPDATE tableA a SET ...)。Oracle → GaussDB:通过 PL/SQL 到 PL/pgSQL 转换(需间接利用 PostgreSQL 兼容性),支持函数定义、事务控制等重构。批量处理:单次支持上百个存储过程转换,自动识别兼容性风险并生成报告。华为 DRS(Data Replication Service):负责数据全量+增量迁移,但不处理存储过程逻辑,需与 SQLShift 配合使用。支持实时同步期间的业务验证,减少停机时间。 二、手动调整与适配关键点即使使用工具,仍需人工干预以下场景:语法差异深度适配:Oracle 特有语法:ROWNUM → ROW_NUMBER() OVER()CONNECT BY → WITH RECURSIVESQL Server 特性:@@IDENTITY → LASTVAL()游标逻辑需改写为 GaussDB 的 FOR ... IN 循环。函数与错误处理重构:函数替换:SYSDATE → CURRENT_TIMESTAMP,NVL() → COALESCE()。异常处理:Oracle 的 PRAGMA EXCEPTION_INIT 需转为 GaussDB 的 EXCEPTION WHEN ... 块。分布式事务优化:GaussDB 的分布式架构需避免跨节点事务锁竞争,例如将 SELECT ... FOR UPDATE 替换为 SKIP LOCKED。手动适配关键语法:-- Oracle PL/SQL → GaussDB SQL示例 -- 1. 游标处理 -- Oracle DECLARE CURSOR c_emp IS SELECT empno, ename FROM emp; v_empno emp.empno%TYPE; v_ename emp.ename%TYPE; BEGIN OPEN c_emp; LOOP FETCH c_emp INTO v_empno, v_ename; EXIT WHEN c_emp%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_empno || ' ' || v_ename); END LOOP; CLOSE c_emp; END; -- GaussDB适配 DO $$ DECLARE rec record; BEGIN FOR rec IN SELECT empno, ename FROM emp LOOP RAISE INFO '% %', rec.empno, rec.ename; END LOOP; END $$; -- 2. 异常处理 -- Oracle BEGIN UPDATE emp SET sal = sal * 1.1 WHERE empno = 7369; IF SQL%NOTFOUND THEN RAISE_APPLICATION_ERROR(-20001, '员工不存在'); END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('错误: ' || SQLERRM); END; -- GaussDB适配 DO $$ BEGIN UPDATE emp SET sal = sal * 1.1 WHERE empno = 7369; IF NOT FOUND THEN RAISE EXCEPTION '员工不存在'; END IF; EXCEPTION WHEN OTHERS THEN RAISE INFO '错误: %', SQLERRM; END $$; 三、迁移全流程最佳实践评估与规划:兼容性扫描:使用 SQLShift 预检存储过程,标记不兼容对象(如示例中 SP_TSA_WAR 被标记为不兼容)。首先需要评估现有存储过程的迁移难度,识别兼容性问题: #存储过程语法差异分析工具(伪代码) def analyze_procedures(source_db_type, procedure_files): compatibility_map = { 'oracle': { 'plsql_syntax': ['ROWNUM', 'START WITH CONNECT BY', 'PACKAGE BODY'], 'functions': ['TO_CHAR', 'NVL', 'DECODE'], 'datatypes': ['NUMBER', 'VARCHAR2', 'DATE'] }, 'sqlserver': { 't_sql_syntax': ['BEGIN TRANSACTION', 'RAISERROR', '@@ROWCOUNT'], 'functions': ['GETDATE()', 'ISNULL', 'LEN'], 'datatypes': ['INT', 'VARCHAR', 'DATETIME'] } } issues = [] for file in procedure_files: content = open(file, 'r').read() for feature, patterns in compatibility_map[source_db_type].items(): for pattern in patterns: if pattern in content: issues.append(f"发现不兼容语法:{pattern}") return issues issues = analyze_procedures('oracle', ['procedure1.sql', 'procedure2.sql']) print(issues)关键差异点包括:语法差异:PL/SQL vs. SQL Server T-SQL vs. GaussDB SQL数据类型映射:如NUMBER→DECIMAL,VARCHAR2→VARCHAR函数替换:如TO_DATE→TO_TIMESTAMP系统变量:如ROWNUM→ROW_NUMBER()事务处理:如COMMIT WORK→COMMIT版本适配:明确 GaussDB 版本限制(如 V2.0-3.x 不支持 uuid_generate_v4())。分阶段迁移:建议采用 "先数据后逻辑" 的策略:数据模型迁移使用 GaussDB Migration Toolkit 进行表结构迁移处理外键、索引、约束的差异存储过程转换优先迁移基础功能的存储过程采用 "翻译 + 适配" 的方式处理复杂逻辑增量迁移验证灰度发布部分业务,对比迁移前后结果使用数据比对工具验证数据一致性 测试与验证:数据一致性:通过 DRS 校验全表记录数及关键字段抽样。性能压测:使用 TPC-C/TPC-H 对比迁移前后 TPS 及响应延迟。使用 Git 管理存储过程代码,建立版本控制编写自动化测试脚本,确保每次变更的质量设计回滚方案,在出现问题时能快速恢复# 自动化测试脚本 #!/bin/bash # 1. 执行迁移脚本 psql -U username -d dbname -f migrate_procedures.sql # 2. 运行测试用例 psql -U username -d dbname -f test_cases.sql > test_results.txt # 3. 检查测试结果 if grep -q "FAILED" test_results.txt; then echo "测试失败,开始回滚..." psql -U username -d dbname -f rollback_script.sql exit 1 else echo "所有测试通过" exit 0 fi 四、常见风险与规避策略临时表堆积:工具自动将 ON COMMIT DROP 重构为显式清理链(DELETE ROWS + DROP),避免内存溢出。业务逻辑断裂:如 SQL Server 的 NEWID() 无直接等价函数时,工具建议重构为应用层生成 UUID。事务中断:自动标记需外部控制的 COMMIT 语句,防止存储过程内提交导致连接终止。 总结优先使用 SQLShift 实现 70%-90% 的自动化转换,结合 DRS 保障数据同步。人工重点攻关:分布式事务、递归查询、非标函数等复杂逻辑。分阶段验证:从非核心业务到关键系统逐步推进,通过灰度发布控制风险。参考 华为 DRS 迁移指南 部署数据同步。
-
1、场景说明客户已有CMDB系统管理云内外资源,需要将HCS的资源也统一纳管管理,ManageOne提供北向接口可以查询HCS相关资源数据,客户获取数据后看匹配到自己CMDB系统的模型和字段,完成数据录入 2、使用流程ManageOne资源管理系统为各种资源进行建模,包括为物理实体建立了物理资源模型,以及建立在物理资源模型上进行抽象形成的逻辑资源模型。资源模型主要分为两大类:系统资源、租户资源:1) 系统资源主要包含: 1.物理设备(如服务器、存储、网络设备等) 2.管理节点虚拟机(如ManageOne、云服务节点等,区别于租户申请的虚拟机) 3.虚拟化物理主机(宿主机) 4.逻辑位置 5.上述物理资源间的关系2) 租户资源主要包含: 1.租户侧的组织结构(包含各级VDC、用户、project信息) 2.租户申请的计算、存储、网络等资源 3.上述租户资源间的关系 文档说明:1. 《ManageOne运维面API参考》2. 《ManageOne 租户资源北向模型》3. 《ManageOne 系统资源北向模型》(注:从8.1.0版本起,文档2、3合并为《ManageOne资源北向模型》)ManageOne北向API参考文档各版本汇总获取:cid:link_0 接口说明:1.接口和参数:系统资源和租户资源及其对应的关系模型分别需要使用不同接口来查询,一共涉及到4个接口。接口参数需查询文档。如下表所示。2.资源模型:1中接口参数class-name或relation-name的值需参考文档《ManageOne 系统/租户资源北向模型》,参考下表。序号接口含义接口URL路径参数说明1查询租户资源模型或视图GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/{class-name}class-name:CI类名,参考《ManageOne 租户资源北向模型》中前缀为“CLOUD、TENANT、V”的资源。2查询租户资源关系模型GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/relations/{relation-name}relation-name:关系类名,参考《ManageOne 租户资源北向模型》中前缀为“R”的资源。3查询系统资源模型GET https://{OC北向接口域名}/rest/cmdb/v1/instances/{className}class-name:CI类名,参考《ManageOne 系统资源北向模型》中前缀为“SYS”的资源。4查询系统资源关系模型GET https://{OC北向接口域名}/rest/cmdb/v1/instances/relations/{relationName}relationName:关系类名,参考《ManageOne 系统资源北向模型》中前缀为“M”的资源。备注:OC北向接口域名非xx.xx.xx.xx:31943,获取方法请参考cid:link_3请求头:(token的获取方法请参考cid:link_1)Accept:application/json Content-Type:application/json;charset=UTF-8X-Auth-Token:xxxxxxxxxxxx查询参数:(4个接口通用)参数说明pageNo页码,默认值:1,取值范围:1~65535。非必选。pageSize页大小,默认值20。取值范围:1~1000。非必选。contentSelector要返回的字段,默认返回所有字段,格式:["attr1","attr2"]。非必选。orderBy排序方式,格式:[{"field":"attr1","asc":true}]。非必选。condition查询条件,受Http Header最大81920字符限制。条件示例:{"constraint":[{"simple":{"name":"incharger","value":"ManageOne","operator":"equal"}},{"logOp":"and","simple":{"caseSensitive":false,"name":"name","value":"B080-Cabinet01","operator":"equal"}}]}。字段说明:Condition(关键字),Constraint(关键字),Simple(关键字),logOp(条件连接符,可取的值有"and","or"),name(资源的属性名称),value(属性值),operator(运算符,可取的值有"equal","not equal","contain","not contain","in","not in","is null","not null"等)。条件说明:{"simple":{"name":"incharger","value":"ManageOne","operator":"equal"}}表示incharger="ManageOne"。{"logOp":"and","simple":{"caseSensitive":false,"name":"name","value":"B080-Cabinet01","operator":"equal"}}表示name="B080-Cabinet01",加上"caseSensitive":false则表示属性值"B080-Cabinet01"不区分大小写,"logOp":"and"表示这个查询条件与上一个条件是and关系。注:查询关系时(表中第2、4个链接),不需要加最外层的{"constraint":xxxx}。如:[{"simple":{"name":"source_Instance_Id","value":"C726DF8E2E8446FDA17D6D3B7C495DFF","operator":"equal"}}] 常用查询:注:以下接口的响应体请参考文档《ManageOne 租户/系统资源北向模型.xlsx》。租户资源(IaaS)弹性云服务器(ECS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VM裸金属服务器(BMS)(BMS实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_BMS(BMS节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_BMS_NODE弹性IP(EIP)(EIP实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_EIP(带宽)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_BANDWIDTHS弹性云硬盘(EVS)(EVS实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VOLUME(快照)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_SNAPSHOT(备份)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_BACKUP镜像(IMS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_IMAGE路由/VPCGET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_ROUTER网络GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_NETWORK子网GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_SUBNET端口/网卡(PORT)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_PORT安全组(SG)(条件不可省略)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_SECURITY_GROUP?condition={"constraint":[{"simple":{"name":"regionId","value":"C4CA4238A0B933828DCC509A6F75849B","operator":"equal"}}]}(安全组规则,条件不可省略)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_SECURITY_GROUP_RULE?condition={"constraint":[{"simple":{"name":"regionId","value":"C4CA4238A0B933828DCC509A6F75849B","operator":"equal"}}]}弹性负载均衡器(ELB)(ELB实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_ELB(监听器)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_LISTENER虚拟防火墙/网络ACL/vFW(vFW实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VFW(vFW策略)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VFW_POLICY(vFW规则)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VFW_RULE租户资源(PaaS)关系型数据库(RDS)(RDS实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_RDS_INSTANCE(RDS节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_RDS_NODE云容器引擎(CCE)(CCE集群)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_CCE_CLUSTER(CCE节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_CCE_NODE(CCE容器)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_CCE_CONTAINER云数据库 GaussDB(for openGauss、mysql)(数据库实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_RDS_INSTANCE(数据库节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_RDS_NODE文档型数据库(DDS)(DDS实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DDS_INSTANCE(DDS节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DDS_NODE数据复制服务(DRS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DRS_INSTANCE分布式数据库中间件(DDM)(DDM实例)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DDM_INSTANCE(DDM节点)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DDM_NODE应用与数据集成平台(ROMA)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_ROMA_CONNECT_INSTANCE应用管理与运维平台(CSE/ServiceStage)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_CSE_ENGINES数据湖治理中心(DGC)(云数据迁移)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DAYU_CDM_CLUSTER(数据服务)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DAYU_DLM_GATEWAY(数据湖治理中心)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DAYU_INSTANCEMapReduce服务(MRS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_MRS_CLUSTER数据仓库服务(DWS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DWS_CLUSTER分布式缓存服务(DCS)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_DCS_INSTANCEWeb应用防火墙(WAF)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_WAF_ENGINE云堡垒机(CBH)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_CBH_INSTANCE图引擎服务(GES)GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_GES_GRAPH租户信息项目/资源集GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/TENANT_PROJECT_VDC租户/VDCGET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/TENANT_VDC租户用户GET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/TENANT_USER系统资源服务器GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_X86Server主机组GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_Cluster宿主机GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_PhysicalHost存储设备GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_StorDevice网络设备GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_NetworkDevice(根据class_Name区分:SYS_Switch-交换机、SYS_Router-路由器、SYS_Firewall-防火墙、SYS_LoadBalancer-负载均衡、SYS_FCSwitch-FC交换机、SYS_ThirdpartyNetWorkDevice-其他网络设备)管理面虚拟机GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_VM其他 区域/RegionGET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_BusinessRegion可用分区GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_Azone资源池GET https://{OC北向接口域名}/rest/cmdb/v1/instances/SYS_ResourcePool资源关系和接口调用示例可参考附件“北向资源查询参考.xlsx”。 其他相关资料:1资源接口查询条件书写说明cid:link_4说明使用查询条件查询资源(如虚拟机、物理机)数据2物理资源查询cid:link_5说明物理资源模型、如何通过API查询服务器、存储设备、网络设备,宿主机等3租户资源查询cid:link_6说明如何查询租户资源,如何通过API查询租户虚拟机、云磁盘、弹性IP等4虚拟资源关系查询cid:link_7说明如何查询区域、资源池、宿主机、虚拟机之间的关系5管理虚拟机查询cid:link_8说明如何查询管理虚拟机详情6租户维度资源查询cid:link_9说明如何按照VDC、project维度查询租户资源7管理节点宿主机查询https://bbs.huaweicloud.com/forum/thread-71325-1-1.html说明如何判断宿主机是否属于管理节点8获取虚拟资源到物理资源的拓扑关系cid:link_2说明如何获取虚拟资源到物理资源的拓扑关系
-
1、场景说明ManageOne运维侧支持对外提供资源池容量,可按照区域、可用分区的维度提供容量信息,可供客户上层系统作统一数据展示,如大屏报表等容量信息包括:cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)、bms(裸金属)、租户虚拟机总数、物理机总数(此处的物理机指宿主机)7个指标 2、使用流程如果您需要获取ManageOne中资源池的总容量,您需要:1、查询运维侧所有的区域2、查询每个区域的cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)容量、bms(裸金属),一般的使用超分后的容量3、查询每个区域下的虚拟机,物理机总数4、将所有区域的容量按照类型进行叠加,从而获得cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)、bms(裸金属)、虚拟机总数、物理机总数的总容量需要说明的是,这里获得的是所有区域的总容量,包括云平台管理分区和租户分区的容量,管理分区与租户分区是隔离的,二者相对独立,租户分区为租户申请资源使用的分区,管理分区为华为云Stack管理虚拟机所在分区。如果您希望将管理分区的容量与租户分区的容量区分开,您需要分别查询管理分区和租户分区的容量,步骤如下:1、查询运维侧所有的可用分区2、查询每可用分区的cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)、GPU卡容量,一般的使用超分后的容量3、查询每个可用分区下的虚拟机,物理机总数4、按照可用分区类型,将容量指标按类型进行叠加,从而获得cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)、租户虚拟机总数、物理机总数的总容量区域、资源池、可用分区关系说明:区域是地理位置,每个区域下关联多个资源池,每个资源池包含多个可用分区 2.1 查询资源池总容量步骤1: 获取Token后面的步骤都需要在请求的header里面加上X-Auth-Token参数。接口调用示例如下:调用方法:PUT调用URL:https://{运维侧对外访问域名}/rest/plat/smapp/v1/oauth/token请求头:Accept:application/json Content-Type:application/json;charset=UTF-8请求body:{ "grantType": "password", "userName": "XXX", "value": "***"}响应示例:{ "accessSession": "xxxxxxxxxxxxxxx", "roaRand": "xxxxxxxxxxxxxxx", "expires": 1800, "additionalInfo": null}accessSession的值即为token值步骤2 获取区域列表调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/cmdb/v1/instances/SYS_BusinessRegion请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxxxx响应示例: { "objList": [ { "mgmtNodeCpuArch": "unknown", "timezone": "Asia/Shanghai", "businessModel": "BusinessModelOne", "language": "zh_CN", "type": "private_cloud", "storTypeOfMgmt": "fusionstorage", "manufacturer": "华为", "serviceScale": "200pm_2000vm", "businessNetworkType": "ipv4v6", "last_updated_by": "system", "solutionVersion": "8.5.0", "networkNodeType": "vm", "regionType": "master", "cloudPlatformType": "HCS_MANAGE", "id": "853FFE094A6D339E97E84AD6BF06A531", "last_Modified": 1741088802130, "solutionType": "type_i", "supportRegionDr": false, "supportAzHa": false, "last_update_date": 1741088802130, "externalGlobalDomainNamePostfix": "in-horizontal-integ-verif.com", "globalServiceScale": "200pm_2000vm", "class_Id": 1232, "globalId": "sa-fb-1", "mgmtNetworkType": "ipv4", "globalDomainNamePostfix": "in-horizontal-integ-verif.com", "resId": "853FFE094A6D339E97E84AD6BF06A531", "is_Local": true, "locales": "{\"en_us\":\"东莞\",\"zh_cn\":\"东莞\"}", "solutionScense": "hcs", "class_Name": "SYS_BusinessRegion", "ocRegionLevel": "normal_center", "historyVersionList": "[\"8.2.0\",\"8.2.0.SPC10\",\"8.2.1\",\"8.2.1.SPH30\",\"8.3.0\",\"8.3.0.SPC010\",\"8.3.1\"]", "name": "东莞", "nativeId": "sa-fb-1", "threeDCInTwoPlaces": false, "status": "normal" } ], "totalNum": 1, "pageSize": 20, "totalPageNo": 1, "currentPage": 1}这可以获得各个region的resId,用于后续查询region容量的入参步骤3 查询每个区域的cpu、memory(内存)、storage-pool(存储池)、eip(公网Ip)、bms(裸金属)、obs(对象存储)容量注:obs容量需HCS 8.3.0及以上版本支持查询。调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/capacity/v1/capbase/regions/{region_id}/resource-types/cpu,memory,storage-pool,eip,bms/current-capacities,region_id由步骤2获取请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxxxx响应示例:{ "cpu": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 3.7697449, "totalCapacity": { "unit": "核", "capacityValue": "42862", "displayCapacity": "42862 核" }, "allocatedCapacity": { "unit": "核", "capacityValue": "19870", "displayCapacity": "19870 核", "ratio": 46.358078 }, "freeCapacity": { "unit": "核", "capacityValue": "22992", "displayCapacity": "22992 核", "ratio": 53.641922 } }, "actualCapacity": { "totalCapacity": { "unit": "核", "capacityValue": "11370", "displayCapacity": "11370 核" }, "usedCapacity": { "ratio": 20.725105, "unit": "核", "capacityValue": "0", "displayCapacity": "0 核" }, "freeCapacity": { "ratio": 79.274895, "unit": "核", "capacityValue": "0", "displayCapacity": "0 核" } }, "collectTime": "", "updateTime": -1 }, "memory": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 0.9999996, "totalCapacity": { "unit": "GB", "capacityValue": "85597.70896911621", "displayCapacity": "85597.70896911621 GB" }, "allocatedCapacity": { "unit": "GB", "capacityValue": "56084.628160476685", "displayCapacity": "56084.628160476685 GB", "ratio": 65.52118 }, "freeCapacity": { "unit": "GB", "capacityValue": "29513.080971717834", "displayCapacity": "29513.080971717834 GB", "ratio": 34.47882 } }, "actualCapacity": { "totalCapacity": { "unit": "GB", "capacityValue": "85597.744140625", "displayCapacity": "85597.744140625 GB" }, "usedCapacity": { "ratio": 56.800365, "unit": "GB", "capacityValue": "48619.830875396455", "displayCapacity": "48619.830875396455 GB" }, "freeCapacity": { "ratio": 43.199635, "unit": "GB", "capacityValue": "36977.913265228545", "displayCapacity": "36977.913265228545 GB" } }, "collectTime": "", "updateTime": -1 }, "storagePool": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 203.3243, "totalCapacity": { "unit": "TB", "capacityValue": "1824.6783294677734", "displayCapacity": " 1824.6783294677734 TB" }, "allocatedCapacity": { "unit": "TB", "capacityValue": "1387.3134765625", "displayCapacity": "1387.3134765625 TB", "ratio": 76.03058 }, "freeCapacity": { "unit": "TB", "capacityValue": "437.36483573913574", "displayCapacity": "437.36483573913574 TB", "ratio": 23.969421 } }, "actualCapacity": { "totalCapacity": { "unit": "TB", "capacityValue": "897.4226493835449", "displayCapacity": "897.4226493835449 TB" }, "usedCapacity": { "unit": "TB", "capacityValue": "347.8443183898926", "displayCapacity": "347.8443183898926 TB", "ratio": 38.76037 }, "freeCapacity": { "unit": "TB", "capacityValue": "549.5783405303955", "displayCapacity": "549.5783405303955 TB", "ratio": 61.23963 } }, "collectTime": "", "updateTime": -1 }, "eip": null, "bms": { "cpu": { "isDataEmpty": "false", "actualCapacity": { "totalCapacity": { "unit": "核", "capacityValue": "824", "displayCapacity": "824 核" }, "usedCapacity": { "unit": "核", "capacityValue": "696", "displayCapacity": "696 核", "ratio": 84.46602 }, "freeCapacity": { "unit": "核", "capacityValue": "128", "displayCapacity": "128 核", "ratio": 15.53398 } }, "collectTime": "", "updateTime": -1 }, "memory": { "isDataEmpty": "false", "actualCapacity": { "totalCapacity": { "unit": "GB", "capacityValue": "5760", "displayCapacity": "5760 GB" }, "usedCapacity": { "unit": "GB", "capacityValue": "5376", "displayCapacity": "5376 GB", "ratio": 93.333336 }, "freeCapacity": { "unit": "GB", "capacityValue": "384", "displayCapacity": "384 GB", "ratio": 6.6666665 } }, "collectTime": "", "updateTime": -1 }, "disk": { "isDataEmpty": "false", "actualCapacity": { "totalCapacity": { "unit": "TB", "capacityValue": "92.7099609375", "displayCapacity": "92.7099609375 TB" }, "usedCapacity": { "unit": "TB", "capacityValue": "92.7099609375", "displayCapacity": "92.7099609375 TB", "ratio": 100.0 }, "freeCapacity": { "unit": "TB", "capacityValue": "0", "displayCapacity": "0 TB", "ratio": 0.0 } }, "collectTime": "", "updateTime": -1 } }, "gpu": null, "npu": null, "obs": { "physicalCluster": [ { "regionName": "贵安水平集成验证环境", "regionId": "853FFE094A6D339E97E84AD6BF06A531", "clusterName": "obscluster", "type": "hdd", "physicalTotal": "120.86 TB", "physicalUsed": "83.1549 TB", "physicalLeft": "37.7051 TB", "physicalRatio": "68.8027%", "businessTotal": "66.8759 TB", "businessUsed": "46.0124 TB", "businessLeft": "20.8635 TB", "businessRatio": "68.8027%" } ], "tenant": [ { "tenantName": "测试租户", "tenantId": "457141b1e227426fa9e710c1a1fb7e96", "regionName": "东莞", "regionId": "853FFE094A6D339E97E84AD6BF06A531", "bucketName": "obs-48a3", "bucketUsed": "4.4342 MB" }, { "tenantName": "测试租户", "tenantId": "457141b1e227426fa9e710c1a1fb7e96", "regionName": "东莞", "regionId": "853FFE094A6D339E97E84AD6BF06A531", "bucketName": "obs-7afb", "bucketUsed": "0 MB" } ], "collectTime": null, "updateTime": -1 }}针对每个指标,取超分后的容量值即可,如CPU这一指标,我们选取超分的值,即:oversubscriptionCapacity的值,包括总容量(totalCapacity),已分配容量(allocatedCapacity),剩余容量(freeCapacity)注:其中CPU的used和free没有返回具体核数,是因为这块actualCapacity指的是实际容量,就是超分前的物理核数,只提供使用率,不提供使用量。因为使用量会计算出小数,可能会出现使用量为0.X核数,这不是一个正常CPU的数据,是不合理的,所以当前不提供实际物理的使用量和剩余量。步骤4 查询每个区域虚拟机、物理机总数调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/capacity/v1/capbase/regions/{region_id}/statistics,region_id由步骤2获取请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例:{ "host": { "isDataEmpty": "false", "normal": 12, "poweroff": 0, "fault": 0, "other": 0, "collectTime": "2020-02-04 16:04:53 CST", "updateTime": 1580803493996 }, "vm": { "isDataEmpty": "false", "running": 24, "stopped": 0, "hibernated": 1, "other": 0, "collectTime": "2020-02-04 16:04:53 CST", "updateTime": 1580803493996 }}host代表物理主机,vm代表租户虚拟机,您可以按照状态进行统计如果有多个region,您需要逐一查询每个region的资源容量,租户虚拟机,物理主机总数,然后按照指标类型相加获得资源池的总容量2.2 查询可用分区容量步骤1: 获取Token后面的步骤都需要在请求的header里面加上X-Auth-Token参数。接口调用示例如下:调用方法:PUT调用URL:https://{运维侧对外访问域名}/rest/plat/smapp/v1/oauth/token请求头:Accept:application/json Content-Type:application/json;charset=UTF-8请求body:{ "grantType": "password", "userName": "XXX", "value": "***"}响应示例:{ "accessSession": "xxxxxxxxxxxxx", "roaRand": "xxxxxxxxxxxxx", "expires": 1800, "additionalInfo": null}accessSession的值即为token值步骤2 获取可用分区列表调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/cmdb/v1/instances/SYS_Azone请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例: "currentPage": 1}{ "objList": [ { "ownerType": "compute", "backendStorIps": "{\"murano\":\"160.132.61.2,160.132.62.2\"}", "backendStorName": "[\"murano\"]", "reuseStorage": false, "virtualizeType": "kvm", "regionName": "Global", "ownerId": "48CA71E447BE3CFE8E260A4CD9DB5BEF", "deviceName": "manage-az", "azLayer": "tiled", "ownerName": "nova_az7.dc7_FUSION_CLOUD_sa-fb-1", "confirmStatus": "unconfirmed", "id": "BC833A0095A63C988A79E52F6CC18029", "last_Modified": 1568754332671, "state": "", "vncPort": 8008, "manager": true, "manageAz": "na", "class_Id": 1058, "cpuArch": "x86", "resId": "BC833A0095A63C988A79E52F6CC18029", "resourcePoolName": "OpenStack_sa-fb-1", "keystoneId": "8E3B2BBADF433102BB566CD571C74882", "logicalRegionId": "853FFE094A6D339E97E84AD6BF06A531", "class_Name": "SYS_Azone", "heterogeneousStorage": false, "regionId": "C4CA4238A0B933828DCC509A6F75849B", "resourcePoolId": "25216A596C493169B7D106ECB32E83F8", "backendStorType": "ip_san", "name": "manage-az", "nativeId": "manage-az" }, { "ownerType": "compute", "backendStorIps": "{\"Business_Pool\":\"160.132.61.3,160.132.62.3\"}", "backendStorName": "[\"Business_Pool\"]", "globalName": "生态集成", "reuseStorage": false, "virtualizeType": "kvm", "regionName": "Global", "ownerId": "48CA71E447BE3CFE8E260A4CD9DB5BEF", "deviceName": "az7.dc7", "azLayer": "tiled", "ownerName": "nova_az7.dc7_FUSION_CLOUD_sa-fb-1", "confirmStatus": "unconfirmed", "id": "97122CC306D53D6584278F5D04210618", "last_Modified": 1572222270932, "state": "", "vncPort": 8008, "manager": false, "manageAz": "na", "class_Id": 1058, "cpuArch": "x86", "resId": "97122CC306D53D6584278F5D04210618", "resourcePoolName": "OpenStack_sa-fb-1", "tags": "{\"cloud_location\":[\"1\"],\"virtual_capability\":[\"KVM\"],\"arch_type\":[\"x86_64\"],\"storage_capability\":[\"OceanStor V3\"],\"display_name\":[\"生态集成\"],\"network_capability\":[\"neutron\"]}", "keystoneId": "8E3B2BBADF433102BB566CD571C74882", "logicalRegionId": "853FFE094A6D339E97E84AD6BF06A531", "class_Name": "SYS_Azone", "heterogeneousStorage": false, "regionId": "C4CA4238A0B933828DCC509A6F75849B", "resourcePoolId": "25216A596C493169B7D106ECB32E83F8", "backendStorType": "ip_san", "name": "生态集成", "nativeId": "az7.dc7" } ], "totalNum": 2, "pageSize": 20, "totalPageNo": 1, "currentPage": 1}这可以获得各个azone的resId,用于后续查询azone容量的入参,azone名称为“manage-az”的为管理分区,azone名称为其他的为租户分区步骤3 查询每个可用分区的cpu、memory(内存)、storage-pool(存储池)、bms(裸金属)容量调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/capacity/v1/capbase/azones/{azone_id}/resource-types/cpu,memory,storage-pool,bms/current-capacities,azone_id由步骤2获取可用分区的容量指标不包含公网IP(eip),支持查询裸金属服务器(bms)容量请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例:{ "cpu": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 1.8688525, "totalCapacity": { "unit": "核", "capacityValue": "228", "displayCapacity": "228 核" }, "allocatedCapacity": { "unit": "核", "capacityValue": "32", "displayCapacity": "32 核", "ratio": 14.035088 }, "freeCapacity": { "unit": "核", "capacityValue": "196", "displayCapacity": "196 核", "ratio": 85.96491 } }, "actualCapacity": { "totalCapacity": { "unit": "核", "capacityValue": "122", "displayCapacity": "122 核" }, "usedCapacity": { "ratio": 0.69101924, "unit": "核", "capacityValue": "0", "displayCapacity": "0 核" }, "freeCapacity": { "ratio": 99.30898, "unit": "核", "capacityValue": "0", "displayCapacity": "0 核" } }, "collectTime": "", "updateTime": -1 }, "memory": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 1, "totalCapacity": { "unit": "GB", "capacityValue": "733.044921875", "displayCapacity": "733.044921875 GB" }, "allocatedCapacity": { "unit": "GB", "capacityValue": "41.181640625", "displayCapacity": "41.181640625 GB", "ratio": 5.6178875 }, "freeCapacity": { "unit": "GB", "capacityValue": "691.86328125", "displayCapacity": "691.86328125 GB", "ratio": 94.38211 } }, "actualCapacity": { "totalCapacity": { "unit": "GB", "capacityValue": "733.044921875", "displayCapacity": "733.044921875 GB" }, "usedCapacity": { "ratio": 3.8166666, "unit": "GB", "capacityValue": "27.977881326739", "displayCapacity": "27.977881326739 GB" }, "freeCapacity": { "ratio": 96.183334, "unit": "GB", "capacityValue": "705.067040548261", "displayCapacity": "705.067040548261 GB" } }, "collectTime": "", "updateTime": -1 }, "storagePool": { "isDataEmpty": "false", "oversubscriptionCapacity": { "oversubscriptionRatio": 300, "totalCapacity": { "unit": "TB", "capacityValue": "6.4072265625", "displayCapacity": " 6.4072265625 TB" }, "allocatedCapacity": { "unit": "TB", "capacityValue": "0.3447265625", "displayCapacity": "0.3447265625 TB", "ratio": 5.3802776 }, "freeCapacity": { "unit": "TB", "capacityValue": "6.0625", "displayCapacity": "6.0625 TB", "ratio": 94.61972 } }, "actualCapacity": { "totalCapacity": { "unit": "TB", "capacityValue": "2.1357421875", "displayCapacity": "2.1357421875 TB" }, "usedCapacity": { "unit": "TB", "capacityValue": "0.34735107421875", "displayCapacity": "0.34735107421875 TB", "ratio": 16.263718 }, "freeCapacity": { "unit": "TB", "capacityValue": "1.78839111328125", "displayCapacity": "1.78839111328125 TB", "ratio": 83.73628 } }, "collectTime": "", "updateTime": -1 }, "eip": null, "bms": null, "gpu": null, "npu": null}针对每个指标,取超分后的容量值即可,如CPU这一指标,我们选取超分的值,即:oversubscriptionCapacity的值,包括总容量(totalCapacity),已分配容量(allocatedCapacity),剩余容量(freeCapacity)注:其中CPU的used和free没有返回具体核数,是因为这块actualCapacity指的是实际容量,就是超分前的物理核数,只提供使用率,不提供使用量。因为使用量会计算出小数,可能会出现使用量为0.X核数,这不是一个正常CPU的数据,是不合理的,所以当前不提供实际物理的使用量和剩余量。步骤4 查询每个可用分区虚拟机、物理机总数调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/capacity/v1/capbase/azones/{azone_id}/statistics,azone_id由步骤2获取请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例:{ "host": { "isDataEmpty": "false", "normal": 4, "poweroff": 0, "fault": 0, "other": 0, "collectTime": "2020-02-04 16:34:53 CST", "updateTime": 1580805293995 }, "vm": { "isDataEmpty": "false", "running": 1, "stopped": 0, "hibernated": 1, "other": 0, "collectTime": "2020-02-04 16:34:53 CST", "updateTime": 1580805293995 }}host代表物理主机,vm代表租户虚拟机,您可以按照状态进行统计如果有多个azone,您需要逐一查询每个azone的资源容量,租户虚拟机,物理主机总数,然后按照指标类型相加获得管理分区、租户分区的总容量
-
1、场景说明客户已经有成熟的统一性能监控平台,需要HCS将各类云资源、物理资源等相关性能数据上报完成统一监控管理2、使用流程能监控通过采集监控对象性能指标,帮助运维人员发现潜在风险,并及时通知。ManageOne运维侧支持服务器、存储、网络设备的性能集中监控,系统可以周期的从服务器、虚拟机采集各类性能指标并进行统计分析。ManageOne运维侧还支持对于性能指标还可以设置阈值告警,当指标超过阈值时,系统会产生告警。ManageOne运维侧对外开放性能查询的RESTful接口,第三方可以通过调用这些接口获取所需要的监控指标值。查询性能数据有如下约束:不是所有资源类型都支持性能查询,首先要通过查询监控对象类型来确认资源的类型是否支持。性能查询接口一次只能查询一种类型的性能数据,而且所有的指标必须都属于这个类型。对于每个ManageOne平台,通过北向接口查询获取到的监控对象类型id(obj_type_id),以及每个监控对象类型所支持的监控指标(indicators)和指标Id是固定的,获取到这些Id之后可以存储在本地,不需要再调运维侧接口获取流程如下:具体步骤如下:首先查询监控对象类型,只有在这些类型里面的资源才可以查询性能数据。根据查出的监控类型查询资源数据,获取资源ID。 根据监控类型查询此类型支持的指标,查询结果为指标的ID列表。根据资源ID和指标ID查出该资源的指定指标的具体数值。查询出的结果只显示指标ID,因此还要调用根据指标ID查询指标描述的接口。 组合指标数值和指标描述,得到完整的性能信息。查询最新性能:查询最新性能数据,返回最近60分钟内的一条最新数据(包含第60分钟)。接口详细描述参考《ManageOne 6.5.1 运维面北向API参考》。接口调用约束:l 每次传入的监控对象(obj_ids)数*监控指标(indicator_ids)数不大于100。l 指标ID列表(indicator_ids)必须属于监控类型(obj_type_id)。l 资源ID列表(obj_ids)必须属于监控类型(obj_type_id)。查询步骤: 步骤1: 获取Token后面的步骤都需要在请求的header里面加上X-Auth-Token参数。接口调用示例如下:调用方法:PUT调用URL:https://{运维侧对外访问域名}/rest/plat/smapp/v1/oauth/token请求头:Accept:application/json Content-Type:application/json;charset=UTF-8请求body:{ "grantType": "password", "userName": "XXX", "value": "***"}响应示例:{ "accessSession": "xxxxxxxxxxxxx", "roaRand": "xxxxxxxxxxxxx", "expires": 1800, "additionalInfo": null}accessSession的值即为token值步骤2 获取监控类型列表 此处以CLOUD_VM为例,获取obj_type_id,接口调用示例如下:调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/performance/v1/mgr-svc/obj-types请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例(部分示例):{ "status_code": 200, "error_code": 0, "error_msg": "Successful", "data": [ { "obj_type_id": 562958543355904, "parent_obj_type_id": 1407379178520576, "resource_category": "CLOUD_VM", "resource_provider": "ict-resource", "en_us": "Elastic Cloud Server", "zh_cn": "弹性云服务器", "group_en_us": "Cloud Resource", "group_zh_cn": "云资源" }, { "obj_type_id": 562967133290496, "parent_obj_type_id": 0, "resource_category": "CLOUD_VOLUME", "resource_provider": "ict-resource", "en_us": "Elastic Volume", "zh_cn": "云硬盘", "group_en_us": "Cloud Resource", "group_zh_cn": "云资源" } ] }在响应体中找到 resource_category": "CLOUD_VM", 的类型项,查询到CLOUD_VM对应的obj_type_id为562958543355904。步骤3 查询监控类型支持的指标ID列表此处列出了CLOUD_VM所有支持的指标ID,接口调用示例如下:调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/performance/v1/mgr-svc/obj-types/562958543355904/indicators,562958543355904为上一步查询所得的CLOUD_VM的监控类型Id请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例:{ "status_code": 200, "error_code": 0, "error_msg": "Successful", "data": { "indicator_ids": [ 562958543421441, 562958543486979, 562958543552537, 562958543552538, 562958543552539, 562958543552550, 562958543618052, 562958543618061, 562958543618062, 562958543618067, 562958543618068, 562958543618071, 562958543618072, 562958543618073, 562958543618074, 562958543618075, 562958543618076, 562958543618077, 562958543618078, 562958543618079, 562958543618080, 562958543618081, 562958543618082 ] } }返回的indicator_ids的值即为CLOUD_VM所有支持的指标ID步骤4 查询指标含义调用方法:POST调用URL:https://{运维侧对外访问域名}/rest/performance/v1/mgr-svc/indicators请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx请求体:[562958543421441,562958543618075]响应示例:{ "status_code": 200, "error_code": 0, "error_msg": "Successful", "data": { "562958543618075": { "kpi": 0, "data_type": "float", "data_unit": "KB/s", "en_us": "Outband Outgoing Rate", "zh_cn": "带外网络流出速率", "group_en_us": null, "group_zh_cn": null, "tag": "", "alarm_id": null, "alarm_desc_en_us": null, "alarm_desc_zh_cn": null, "indicator_name": "network_outgoing_bytes_aggregate_rate" }, "562958543421441": { "kpi": 1, "data_type": "float", "data_unit": "%", "en_us": "CPU Usage", "zh_cn": "CPU使用率", "group_en_us": null, "group_zh_cn": null, "tag": "CLOUD_VM_USAGE", "alarm_id": null, "alarm_desc_en_us": null, "alarm_desc_zh_cn": null, "indicator_name": "cpuUsage" } }}注:租户资源来源系统基本上都为FSP,物理资源大多为eSight,少数为ZOHO系统,请根据实际环境对接系统过滤性能指标统一模型参考文档中'Source System Type'列,获取支持的指标ID,其中指标ID在ManageOne各版本均为固定值不会随版本变动。步骤5 查询资源列表此处随机查询1台租户虚拟机(类型名称为CLOUD_VM)记录,获取其ID。接口调用示例如下:调用方法:GET调用URL:https://{运维侧对外访问域名}/rest/tenant-resource/v1/instances/CLOUD_VM?pageNo=1&pageSize=1000请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx响应示例:{ "objList": [ { "ownerType": "compute", "extraSpecs": "{\"ips\":\"@192.168.0.129@\",\"cpuCoreNum\":4}", "azoneName": "az7.dc7", "privateIps": "@192.168.0.129@", "regionName": "Global", "flavorId": "8776AA3F93593999A48DC545CCB03E30", "clusterId": "5B16AC1483F634BAA0F040EB08D708BA", "ownerId": "0D9ECCF86FF337C08E5DB07FA5CFE2C7", "cloudLocationName": "华为", "createdAt": "2019-05-29T09:30:02Z", "powerState": "1", "taskState": "", "tenantName": "", "cloudType": "localcloud", "clusterName": "HostGroup1", "id": "D912DA2B8D0639708A7D5726DD66C4CD", "last_Modified": 1559122262393, "vdcId": "fc9b5ace-5650-481f-9c24-060140e9ca16", "podId": "27A0BDF03E1E3A56A6C6F0775A977553", "bizRegionId": "853FFE094A6D339E97E84AD6BF06A531", "imageId": "AC5AE9DB90A43041B6249711FD7B0DA4", "floatingIp": "", "hostId": "D3711A402B753D23A1D058EF203007B9", "hypervisorType": "kvm", "resId": "D912DA2B8D0639708A7D5726DD66C4CD", "userId": "6354cbc75cd14acab09307a8d78d1622", "resourcePoolName": "OpenStack_sa-fb-1", "tags": "", "class_Name": "CLOUD_VM", "azoneId": "97122CC306D53D6584278F5D04210618", "physicalHostId": "D3711A402B753D23A1D058EF203007B9", "regionId": "C4CA4238A0B933828DCC509A6F75849B", "resourcePoolId": "25216A596C493169B7D106ECB32E83F8", "name": "ecs-5aa6-wp", "tenantId": "", "vdcName": "wp_vdc", "nativeId": "162cf72b-4dab-45cf-84e6-5e4b87ca0783", "launchedAt": "2019-05-29T09:30:12.000000", "cloudLocationId": "85E0C89C436633E48292592CFE55B7BB", "projectId": "e711f3cb1be84d87934123b94f2198e7", "vmState": "active", "bizRegionName": "华南地区", "cpuCoreNum": "4", "status": "active" } ], "totalNum": 47, "pageSize": 1, "totalPageNo": 47, "currentPage": 1 }获取租户虚拟机的资源ID(resId字段)。此处为:"resId": "D912DA2B8D0639708A7D5726DD66C4CD"步骤6 查询性能查询性能数据,根据传入参数中的"range"字段所取的枚举值或从开始到结束时间范围内的查询数据。有汇聚数据情况下,返回结果序列是平均值序列,并包含最大值、最小值以及对应时间戳。接口详细描述参考《ManageOne 6.5.X/8.X 运维面API参考 》。约束:l 每次传入的监控对象(obj_ids)数*监控指标(indicator_ids)数不大于100。l 指标ID列表(indicator_ids)必须属于监控类型(obj_type_id)。l 资源ID列表(obj_ids)必须属于监控类型(obj_type_id)。请求示例:调用方法:POST调用URL:https://{运维侧对外访问域名}/rest/performance/v1/data-svc/history-data/action/query请求头:Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxx请求体:(obj_type_id从步骤2获取;indicator_ids从步骤3获取;obj_ids从步骤5获取){ "obj_type_id": "562958543355904", "indicator_ids": ["562958543421441"], "obj_ids": ["D912DA2B8D0639708A7D5726DD66C4CD"], "range": "LAST_1_HOUR", "interval": "MINUTE"}响应体:{ "data": { "D912DA2B8D0639708A7D5726DD66C4CD": { "562958543421441": { "avg": { "1468483570000": "5.97" }, "min": { "1468483570000": "5.72" }, "max": { "1468483630000": "6.509" }, "series": [{ "1468483570000": "5.72" }, { "1468483575000": "5.72" }, { "1468483630000": "6.509" }, { "1468483635000": "6.509" }, { "1468483690000": "5.80" }, { "1468483695000": "5.80" }] } } }, "errorCode": 0, "errorMsg": "Successful.", "statusCode": 200}至此,我们查询得到了对应指标的最新采集值。结合步骤4,可以得知响应体中每个指标的含义。下面对历史性能查询接口中时间范围的取值进行说明,首先我们对其中几个关键参数的含义进行说明,如下表:参数名类型值域参数含义intervalStringMINUTE(分钟)HOUR(小时)DAY(天)WEEK(星期)MONTH(月)代表历史性能数据的采样间隔,该参数需要配合range参数使用,interval的值需要是range中支持的采样间隔,比如:range选择LAST_5MINUTE(最近5分钟),interval就只能是MINUTE(分钟);如果range选择LAST_1_HOUR,interval也只能选择MINUTE,而不能是HOUR等其他参数rangeStringLAST_5_MINUTE(最近5分钟,返回数据粒度为分钟,由于底座和ManageOne的时间可能存在误差,最近5分钟可能查询不到数据,此情况下建议取最近1小时的数据)LAST_1_HOUR(最近1小时,返回数据粒度为分钟)LAST_1_DAY(最近1天,返回数据粒度支持分钟、小时,默认按小时返回)LAST_1_WEEK(最近1星期,返回数据支持分钟、小时、天,默认按天返回)LAST_1_MONTH(最近1个月,返回数据支持分钟、小时、天、星期默认按星期返回)LAST_1_QUARTER(最近一个季度,返回数据支持分钟、小时、天、星期、月,默认按月返回)HALF_1_YEAR(最近半年,返回数据支持分钟、小时、天、星期、月、季度,默认按季度返回)LAST_1_YEAR(最近1年,返回数据支持分钟、小时、天、星期、月、季度、半年,默认按半年返回)BEGIN_END_TIME(自定义时间段)INVALID(无效时间)默认值:INVALID代表历史性能数据的时间范围,支持您查询最近5分钟、1小时到最近1年的数据,返回数据的粒度,最低为1分钟,最大为半年;range参数取值为BEGIN_END_TIME时,支持您自定义时间范围去获取数据,需配合begin_time、end_time两个参数使用。begin_timeint64无,取值为毫秒格式表示的时间查询开始时刻,必须比 end_time 小,仅 range 为 BEGIN_END_TIME 时生效end_timeint64无,取值为毫秒格式表示的时间查询结束时刻,必须比 begin_time大,仅 range 为 BEGIN_END_TIME 时生效补充说明:分钟粒度的性能数据保存7天,小时粒度的性能数据,保存2年下面给出常用的几种查询指定时间段历史性能数据的方式:1、如果您需要定时采集历史性能数据并入库,建议您设置采集周期为1小时,每次采集最近1小时的数据,这样您每次可以获取到指定资源在最近一小时内的数据,每天只需要采集24次,粒度为分钟,示例如下:{ "obj_type_id": "562958543355904", //监控对象类型Id "indicator_ids": ["562958543421441"], //指标Id,支持多个 "range": "LAST_1_HOUR", "interval": "MINUTE", "obj_ids": ["7786B94E1DC7374FBEB4DBDF9D7384F0"]//资源Id,支持多个}2、如果您需要补采指定时间段内的性能数据,您可参考如下方式:{ "obj_type_id": "562958543355904", //监控对象类型Id "indicator_ids": ["562958543421441"], //指标Id,支持多个 "range": "BEGIN_END_TIME", //固定值 "interval":"MINUTE", //根据指定的时间段范围确定,比如,begin_time为2020-02-20 00:00:00,end_time为2020-02-25 00:00:00共5天,那么我们可以设置采样粒度为分钟、小时、天 "begin_time":1582163984000, //采集开始时间,毫秒串格式,必须比begin_time小 "end_time":1582682384000, //采集结束时间,毫秒串格式,必须比begin_time大 "obj_ids": ["7786B94E1DC7374FBEB4DBDF9D7384F0"] //资源Id,支持多个}
-
1、场景说明客户已有统一告警管理平台,需要HCS的告警上报实现统一管理流程 2、使用流程2.1准备工作第三方运维系统需要通过SNMP方式与ManageOne运维面对接时,需要做一些准备工作,才能完成与ManageOne运维面进行对接。2.1.1 获取接口文档接口文档可联系华为工程师从华为官网下载,下载链接参考: cid:link_1 第5章节。请结合现网具体交付的版本下载接口文档,若需要英文版接口文档,点击浏览器右上角切换语言,即可获得。下载得到的华为云Stack解决方案的完整接口文档,我们打开压缩包,提取ManageOne API参考文档包,然后打开该文档包,找出下图红框标注的文档(以6.5.1接口文档接口为例,适用于8.x版本):各文档作用说明如下:《ManageOne-NBI-Alarm-MIB-V1.mib》:运维侧SNMP Trap上报告警的MIB文件,采用SMI(Structure of Management Information)V1描述《ManageOne-NBI-Alarm-MIB-V2.mib》:运维侧SNMP Trap上报告警的MIB文件,采用SMI(Structure of Management Information)V2描述《ManageOne 6.5.1 北向告警SNMP接口开发指南 03.doc》:SNMP Trap对接开发指南,讲述了ManageOne 6.5.1运维侧的SNMP接口能力和OID描述(实时告警的OID描述,参考该文档的3.1章节)说明:《ManageOne-NBI-Alarm-MIB-V1.mib》和《ManageOne-NBI-Alarm-MIB-V2.mib》需要提供给第三方网管系统,以便解析ManageOne 运维侧上报的告警信息,一般提供V2版本即可2.1.2 获取第三方网管系统SNMP配置信息ManageOne 6.5.x/8.x运维侧支持SNMPv1、SNMPv2C、SNMPv3协议,安全起见,建议对接时第三方网管使用SNMPv3版本与ManageOne运维侧进行对接。如果现网需要使用SNMPv1、SNMPv2C,请在征得客户同意后,联系ManageOne维护接口人,修改ManageOne支持的SNMP协议范围。以SNMPv3协议为例,需要第三方网管提供的信息有:配置项示例第三方网管的IP地址192.168.1.1第三方网管SNMP服务监听的端口号162协议版本号SNMPv3安全用户名thirdSnmpServer授权认证密码 数据加密密码 发送告警Trap的编码(第三方网管为接收方)UTF-8鉴权协议SHA加密协议AES-1282.1.3网络预配置为保证运维侧告警能顺利推送给第三方网管,需要确保ManageOne运维侧以下节点IP可以访问第三方网管的SNMP监听端口,访问关系如下:源端(可从LLD中获取以下节点的IP)源端口目的端(第三方网管提供)目的端口(第三方网管提供)ManageOne-Service0127318第三方网管浮动IP,例如:192.168.1.1第三方网管的SNMP服务监听端口,如162ManageOne-Service0227318第三方网管浮动IP,例如:192.168.1.1第三方网管的SNMP服务监听端口,如162正式配置对接前,请联系客户完成网络打通。可参考以下方式获取SNMP上报的源端IP和端口联系华为现场工程师,获取ManageOne运维侧登录地址和账号。登录ManageOne运维面,进入“系统->系统设置->北向接口->基本配置”获取“发送Trap地址”和“发送Trap端口”(没有勾选的地址建议同步打通网络)2.2 对接配置获取到第三方网管系统的SNMP配置信息之后,需要在ManageOne上配置上层网管对接信息,步骤如下:联系华为现场工程师,获取ManageOne运维侧登录地址和账号。登录ManageOne运维面,进入“系统->系统设置->北向接口->第三方系统配置”,点击”创建“,将第2.2章节中获取的第三方网管SNMP配置信息填写到对应的选项中,如下图所示:配置完成后,点击“创建”,完成网管SNMP参数和告警过滤条件的配置(不配置过滤条件默认上报全部告警)。从上图中可以看到,我们可以根据需要配置上报的指定设备类型产生的告警,上报指定级别的告警,并且按照告警分类上报针对第三方网管的一些特殊需求,我们还可以调整SNMP Trap上报告警的时区、时间格式、编码格式等,方法如下:登录ManageOne运维面,进入“系统->系统设置->北向接口->基本配置”,可配置时区、编码格式、鉴权协议、加密协议等参数,如下图:请注意,此处的协议参数配置需要与第三方网管相同(EngineID一般可忽略),否则第三方网管将无法正常解析SNMP报文。在此处勾选需要上报的字段。需要注意,扩展字段默认未勾选,如果有需要的字段,请在此处勾选,否则第三方网管将无法接收到这些字段。扩展字段对应的说明如下:(8.x以上版本)字段描述说明RootAlarm根因告警 AssociateAlarmGroup关联告警组 ArrivedEMSTime告警到达网管时间 GroupID告警分组ID ExtendProductItem5扩展字段5告警所影响的业务名称。ExtendProductItem6扩展字段6告警标识 (字符串类型AlarmID)。ExtendProductItem7扩展字段7告警名称。ExtendProductItem8扩展字段8告警RCA分析结果信息。说明:一般的,SNMP Trap是发送给SNMP 服务端的通知网络状况等的警告消息,而Inform是需要SNMP 服务端确认接收的Trap。与Inform 相比较,Trap通知方式为不可靠传输,因为SNMP 服务端在收到一条Trap通知后无需回复任何确认信息,所以SNMP agent无法知道Trap通知是否已经被snmp管理端正确接收其中:1、CSN(告警的网络流水号)唯一标识一条告警,同一条告警的清除、确认、反确认、变更告警网络流水号相同。2、AlarmID(告警ID)是告警类型的唯一标识符,全量的告警类型列表可通过以下方法获取:OC主页->"集中监控"->“告警管理”->"告警扩展",选择左侧菜单列表的“告警扩展”,选择“告警信息导出”。单击“导出”后,可获得如下excel文件:2.3 示例程序Java语言:(使用任意华为公有云帐号登录即可)cid:link_0Python语言:暂无示例程序,可使用net-snmp、pysnmp 等第三方库进行对接。5 附录5-1 页面告警与OID的对应关系示例:(注:1.下图中x表示"1.3.6.1.4.1.2011.2.15.2.4.3.3"。2. 未标注的字段表示暂无与之对应的OID。3. x.39以键值对格式存放可选拓展字段,示例可参考5-3)5-2 SNMP报文示例(对应5-1的告警,实际上报的Trap中OID末尾会带有“.0”作为该OID的实例。)1.3.6.1.2.1.1.3.0 = 4 days, 7:11:53.701.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.0.11.3.6.1.4.1.2011.2.15.2.4.3.3.1.0 = 171304711.3.6.1.4.1.2011.2.15.2.4.3.3.2.0 = 91.3.6.1.4.1.2011.2.15.2.4.3.3.3.0 = 2022-10-08 00:49:021.3.6.1.4.1.2011.2.15.2.4.3.3.4.0 = 28d5aff847ee411b87241b68183da9bcin011.3.6.1.4.1.2011.2.15.2.4.3.3.5.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.6.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.7.0 = DefaultMedn1.3.6.1.4.1.2011.2.15.2.4.3.3.8.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.9.0 = 50124161.3.6.1.4.1.2011.2.15.2.4.3.3.10.0 = 71.3.6.1.4.1.2011.2.15.2.4.3.3.11.0 = 21.3.6.1.4.1.2011.2.15.2.4.3.3.12.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.13.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.14.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.15.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.16.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.17.0 = 2785615221.3.6.1.4.1.2011.2.15.2.4.3.3.18.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.19.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.20.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.21.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.22.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.23.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.24.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.25.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.26.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.27.0 = Identity=Toggling Alarm, system:DBS:Service:mysqlBackupService,module:startLobBackup,instance:28d5aff847ee411b87241b68183da9bcin011.3.6.1.4.1.2011.2.15.2.4.3.3.28.0 = action=startLobBackup,instanceId=28d5aff847ee411b87241b68183da9bcin01,projectId=063094e04ef94614a74191c15bd02f0d,reason="failed to startLobBackup, cause when change log backup method, failed to access obs service, instanceId=28d5aff847ee411b87241b68183da9b1.3.6.1.4.1.2011.2.15.2.4.3.3.29.0 = Please refer to the alarm help1.3.6.1.4.1.2011.2.15.2.4.3.3.30.0 = 1.The agent is abnormal.2.OBS service is abnormal and incremental backup upload failed.1.3.6.1.4.1.2011.2.15.2.4.3.3.31.0 = 10.10.4.1241.3.6.1.4.1.2011.2.15.2.4.3.3.32.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.33.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.34.0 = 2022-10-08 00:49:021.3.6.1.4.1.2011.2.15.2.4.3.3.35.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.36.0 = 50124161.3.6.1.4.1.2011.2.15.2.4.3.3.37.0 = failed to startLobBackup1.3.6.1.4.1.2011.2.15.2.4.3.3.38.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.39.0 = 7b:22:6d:6f:63:22:3a:22:4e:45:57:44:42:53:22:2c:22:73:70:65:63:69:61:6c:41:6c:61:72:6d:53:74:61:74:75:73:22:3a:30:2c:22:6c:6f:67:69:63:61:6c:52:65:67:69:6f:6e:4e:61:6d:65:22:3a:22:e4:b8:9c:e8:8e:9e:22:2c:22:61:7a:6f:6e:65:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:61:64:64:72:65:73:73:22:3a:22:31:30:2e:31:30:2e:34:2e:31:32:34:22:2c:22:6d:65:54:79:70:65:22:3a:6e:75:6c:6c:2c:22:6f:72:69:67:69:6e:53:79:73:74:65:6d:4e:61:6d:65:22:3a:22:52:44:53:5f:73:6f:6c:75:74:69:6f:6e:2d:61:64:76:61:6e:63:65:2d:31:22:2c:22:72:65:73:50:6f:6f:6c:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:6f:72:69:67:69:6e:53:79:73:74:65:6d:54:79:70:65:22:3a:22:43:6c:6f:75:64:53:65:72:76:69:63:65:22:2c:22:61:6c:61:72:6d:47:72:6f:75:70:49:64:22:3a:22:32:37:38:35:36:31:35:32:32:22:2c:22:6d:61:74:63:68:4b:65:79:22:3a:22:62:31:38:39:64:61:30:62:2d:63:38:38:38:2d:34:65:34:30:2d:62:31:33:31:2d:63:65:63:36:33:31:63:37:38:37:66:62:22:2c:22:6d:61:6e:75:66:61:63:74:75:72:65:72:22:3a:22:68:75:61:77:65:69:22:2c:22:6c:6f:67:69:63:61:6c:52:65:67:69:6f:6e:49:64:22:3a:22:35:44:45:44:43:36:33:33:43:38:38:39:33:41:43:39:38:46:43:35:45:32:31:42:38:38:35:38:33:41:30:45:22:2c:22:72:65:61:73:6f:6e:49:64:22:3a:30:2c:22:64:63:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:64:6f:6d:61:69:6e:22:3a:6e:75:6c:6c:2c:22:72:75:6c:65:4e:61:6d:65:22:3a:22:5b:49:6e:74:65:72:6d:69:74:74:65:6e:74:2f:54:6f:67:67:6c:69:6e:67:20:41:6c:61:72:6d:20:48:61:6e:64:6c:69:6e:67:20:52:75:6c:65:5d:50:72:65:73:65:74:2d:49:6e:74:65:72:6d:69:74:74:65:6e:74:20:6f:72:20:54:6f:67:67:6c:69:6e:67:20:52:75:6c:65:20:66:6f:72:20:41:6c:6c:20:41:6c:61:72:6d:73:2c:20:5b:49:64:65:6e:74:69:66:69:63:61:74:69:6f:6e:20:52:75:6c:65:5d:75:70:67:72:61:64:65:5f:61:6c:61:72:6d:5f:69:64:65:6e:74:69:66:69:63:61:74:69:6f:6e:5f:72:75:6c:65:22:2c:22:63:6f:6d:6d:65:6e:74:22:3a:6e:75:6c:6c:2c:22:76:64:63:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:6e:61:74:69:76:65:4d:65:44:6e:22:3a:22:32:38:64:35:61:66:66:38:34:37:65:65:34:31:31:62:38:37:32:34:31:62:36:38:31:38:33:64:61:39:62:63:69:6e:30:31:22:2c:22:69:6e:76:61:6c:69:64:61:74:65:64:22:3a:30:2c:22:76:64:63:49:64:22:3a:6e:75:6c:6c:7d1.3.6.1.4.1.2011.2.15.2.4.3.3.40.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.41.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.42.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.43.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.44.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.45.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.46.0 = 1.3.6.1.4.1.2011.2.15.2.4.3.3.47.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.48.0 = 11.3.6.1.4.1.2011.2.15.2.4.3.3.49.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.50.0 = 01.3.6.1.4.1.2011.2.15.2.4.3.3.51.0 = Toggling time=214, userName=op_svc_appcube_1f48972c3ddf49048a7b9012e5d27dc8_solution-advance-1, instanceName=rds-instance-appcube23ec5a05bb5fc41b2ac8723d462159dff, CloudService=RDS,Service=DBS-MySQL-Server,MicroService=DBS-mysql-backupmanager, NativeMeDn=8.98.132.200;5-3 SNMP报文解码部分告警Trap可能需要解码才能够正常解析,例如5-2中的1.3.6.1.4.1.2011.2.15.2.4.3.3.39.0:解码前:1.3.6.1.4.1.2011.2.15.2.4.3.3.39.0 = 7b:22:6d:6f:63:22:3a:22:43:4c:4f:55:44:5f:52:4f:4d:41:5f:49:4e:53:54:41:4e:43:45:22:2c:22:73:70:65:63:69:61:6c:41:6c:61:72:6d:53:74:61:74:75:73:22:3a:30:2c:22:6c:6f:67:69:63:61:6c:52:65:67:69:6f:6e:4e:61:6d:65:22:3a:22:e4:b8:9c:e8:8e:9e:22:2c:22:61:7a:6f:6e:65:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:61:64:64:72:65:73:73:22:3a:22:38:2e:39:38:2e:31:33:32:2e:32:33:31:22:2c:22:6d:65:54:79:70:65:22:3a:6e:75:6c:6c:2c:22:6f:72:69:67:69:6e:53:79:73:74:65:6d:4e:61:6d:65:22:3a:22:52:4f:4d:41:43:6f:6e:6e:65:63:74:5f:73:6f:6c:75:74:69:6f:6e:2d:61:64:76:61:6e:63:65:2d:31:22:2c:22:72:65:73:50:6f:6f:6c:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:6f:72:69:67:69:6e:53:79:73:74:65:6d:54:79:70:65:22:3a:22:43:6c:6f:75:64:53:65:72:76:69:63:65:22:2c:22:61:6c:61:72:6d:47:72:6f:75:70:49:64:22:3a:22:32:37:38:35:36:31:35:33:32:22:2c:22:6d:61:74:63:68:4b:65:79:22:3a:22:66:35:31:63:35:38:62:33:2d:63:35:30:31:2d:34:37:33:33:2d:38:61:36:35:2d:65:36:37:63:35:33:63:38:37:62:38:33:22:2c:22:6d:61:6e:75:66:61:63:74:75:72:65:72:22:3a:22:68:75:61:77:65:69:22:2c:22:6c:6f:67:69:63:61:6c:52:65:67:69:6f:6e:49:64:22:3a:22:35:44:45:44:43:36:33:33:43:38:38:39:33:41:43:39:38:46:43:35:45:32:31:42:38:38:35:38:33:41:30:45:22:2c:22:72:65:61:73:6f:6e:49:64:22:3a:30:2c:22:64:63:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:64:6f:6d:61:69:6e:22:3a:6e:75:6c:6c:2c:22:72:75:6c:65:4e:61:6d:65:22:3a:22:5b:49:6e:74:65:72:6d:69:74:74:65:6e:74:2f:54:6f:67:67:6c:69:6e:67:20:41:6c:61:72:6d:20:48:61:6e:64:6c:69:6e:67:20:52:75:6c:65:5d:50:72:65:73:65:74:2d:49:6e:74:65:72:6d:69:74:74:65:6e:74:20:6f:72:20:54:6f:67:67:6c:69:6e:67:20:52:75:6c:65:20:66:6f:72:20:41:6c:6c:20:41:6c:61:72:6d:73:2c:20:5b:49:64:65:6e:74:69:66:69:63:61:74:69:6f:6e:20:52:75:6c:65:5d:75:70:67:72:61:64:65:5f:61:6c:61:72:6d:5f:69:64:65:6e:74:69:66:69:63:61:74:69:6f:6e:5f:72:75:6c:65:22:2c:22:63:6f:6d:6d:65:6e:74:22:3a:6e:75:6c:6c:2c:22:76:64:63:4e:61:6d:65:22:3a:6e:75:6c:6c:2c:22:6e:61:74:69:76:65:4d:65:44:6e:22:3a:22:30:36:35:66:38:66:36:65:2d:61:30:32:33:2d:34:63:61:65:2d:62:37:32:64:2d:61:31:34:34:39:39:38:35:62:65:61:38:22:2c:22:69:6e:76:61:6c:69:64:61:74:65:64:22:3a:30:2c:22:76:64:63:49:64:22:3a:6e:75:6c:6c:7d解码后:1.3.6.1.4.1.2011.2.15.2.4.3.3.39.0 = {"moc":"CLOUD_ROMA_INSTANCE","specialAlarmStatus":0,"logicalRegionName":"东莞","azoneName":null,"address":"8.98.132.231","meType":null,"originSystemName":"ROMAConnect_solution-advance-1","resPoolName":null,"originSystemType":"CloudService","alarmGroupId":"278561532","matchKey":"f51c58b3-c501-4733-8a65-e67c53c87b83","manufacturer":"huawei","logicalRegionId":"5DEDC633C8893AC98FC5E21B88583A0E","reasonId":0,"dcName":null,"domain":null,"ruleName":"[Intermittent/Toggling Alarm Handling Rule]Preset-Intermittent or Toggling Rule for All Alarms, [Identification Rule]upgrade_alarm_identification_rule","comment":null,"vdcName":null,"nativeMeDn":"065f8f6e-a023-4cae-b72d-a1449985bea8","invalidated":0,"vdcId":null}解码方式如下(以Java为例):1. 添加以下Maven依赖2. 解码代码:(完整使用场景可参考示例程序)//1.判断报文是否需要解码private boolean isHexString(String hex) { return Pattern.compile("^([a-zA-Z0-9]{2}:)+[a-zA-Z0-9]{2}$").matcher(hex).find();}//2.解码报文(编码需根据配置调整)private String hexStr2Str(String hexStr) { try { if (!StringUtils.isEmpty(hexStr)) { hexStr = hexStr.replace(":", ""); return new String(Hex.decodeHex(hexStr.toCharArray()), StandardCharsets.UTF_8); } } catch (Exception e) { LOGGER.error("hexStr2Str error : {}", e.getMessage()); } return hexStr;}
-
1、场景说明ManageOne运营侧支持新增菜单功能,部分客户需要新增菜单跳转到第三方系统,可以通过调用北向接口实现此功能。 2、使用流程约束条件:ManageOne 8.0.0 及以上版本准备工作:北向接口对接准备工作参考:cid:link_01、获取系统管理员Token,用户名和密码需要环境管理员提供,默认为vdc_adminPOST https://{IAM对外域名}/v3/auth/tokens Accept:application/json Content-Type:application/json;charset=UTF-8 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "vdc_admin", "password": "xxxxxx", "domain": { "name": "op_service" } } } }, "scope": { "domain": { "name": "op_service" } } }}2、调用北向接口新增菜单参数说明:名称说明key区分租户侧和管理侧,租户侧:custom_menu_vdc,管理侧:custom_menu_mgrtype一级菜单值为title,二级下拉菜单传数字,数值表示展示顺序text仅支持string格式,区分中英文菜单名称需传json格式的字符串租户侧新增菜单报文如下,header中需要携带Token:a)新增定制一级菜单注意:一级菜单作为功能分类说明,不能点击跳转,跳转链接功能在二级菜单上实现POST https://{ManageOne运营侧API对外域名}/silvan/rest/v1.0/links Accept:application/json X-Auth-Token:xxxxxxxxxxxxxxxxxxx Content-Type:application/json;charset=UTF-8 { "key": "custom_menu_vdc", "text": "{\"zh-cn\":\"百度\",\"en-us\":\"BaiDu\"}", "iconName": "list", "href": "", "type": "title", "domainType": "SC"}b)新增定制二级下拉菜单POST https://{ManageOne运营侧API对外域名}/silvan/rest/v1.0/links Accept:application/json X-Auth-Token:xxxxxxxxxxxxxxxxxxx Content-Type:application/json;charset=UTF-8 { "key": "custom_menu_vdc", "text": "{\"zh-cn\":\"百度\",\"en-us\":\"BaiDu\"}", "iconName": "list", "href": "https://www.baidu.com", "type": "1", "domainType": "SC"}效果如下: 注意:通常新增菜单后都希望点击能够直接进入第三方系统而不需再次输入用户名和密码登录,可配套单点登录定制能力使用,cid:link_13、调用北向接口删除菜单a)查询已经注册的链接GET https://{ManageOne运营侧API对外域名}/silvan/rest/v1.0/linksAccept:application/json X-Auth-Token:xxxxxxxxxxxxxxxxxxx Content-Type:application/json;charset=UTF-8 响应示例:{ "links": [ { "seqId": 626, "key": "custom_menu_vdc", "text": "{\"zh-cn\":\"百度\",\"en-us\":\"BaiDu\"}", "iconName": "list", "href": "https://www.baidu.com", "type": "1", "domainType": "SC", "regionId": "" } ...... ], "total": 521}b)删除已经注册的链接其中,{seq_id}从上面的响应结果中获取DELETE https://{ManageOne运营侧API对外域名}/silvan/rest/v1.0/links/{seq_id}Accept:application/json X-Auth-Token:xxxxxxxxxxxxxxxxxxxContent-Type:application/json;charset=UTF-8
-
1、场景说明ManageOne对接的各个云服务以离线话单的形式上报计量信息,然后ManageOne按照统一的规则解析得到计量数据,然后根据设置的计量因子单价,汇总计算得到最终的计费信息。第三方计费系统需要获取各云服务的计量信息时,可以通过直接获取离线话单的形式,离线话单为各云服务通过SFTP上传的文件,第三方计费系统获取文件后按照规则解析即可 2、使用流程 约束条件:ManageOne的离线话单文件会定时删除一个月前的数据,第三方需要在此期间内正确获取到全量的话单文件。不同的云服务具体解析规则不同,第三方需要严格按照规则解析文件获取计量数据。通过开发适配程序获取SFTP中离线话单文件,然后根据规则解析出每个云服务的计量数据,最后上报到第三方计费系统。示意图如下: 2.1获取文件所有云服务将话单文件上传到指定的SFTP目录。(/opt/meterfiles/uploads)所有云服务共用一个SFTP账号和密码,内部对接的云服务可以通过接口查询,第三方系统对接需要找管理员获取SFTP服务器IP、SFTP账户和密码信息。方法如下:需获取项获取方式服务器IP联系华为工程师,获取环境LLD导出表(FusionCloud安装工具FCD导出的环境详情),打开“2.1 工具生成的ip参数”工作表,搜索“ManageOne-Tenant-Float-IP”的参数值,即为SFTP服务器的IP地址。账户名称固定为"meteradmin"密码联系华为工程师,在support网站上下载"华为云Stack 8.x 帐户一览表"(与ManageOne版本配套),页签选择"B类(ManageOne)",在其中搜索"meteradmin",即可找到该用户的默认密码。2.2.解析话单从SFTP服务器获取的话单文件为zip格式,解压后最终文件为csv格式。注意:解压zip文件前需要校验文件完整性。话单文件最大为10M,如果超过容量会拆分多个文件。话单文件的名称带有时间戳,根据时间戳确定增量文件。如需查看详细解析规则,请登录后下载附件《华为 ManageOne 6.5.1-8.x 运营侧话单对接定制开发指南》。2.3.实例代码ManageOne提供示例代码供开发参考,该程序完成了以下功能:从SFTP服务器获取指定时间段内的话单文件将话单文件解析为类对象,并提供按各维度(项目id、规格等)筛选和统计的方法通过ManageOne北向接口获取vdc和项目间的关系,将最终的计量结果按vdc和规格的维度输出报表文件。项目地址:cid:link_0项目结构及介绍:输出样例:虚拟机计量报表:vm_meter.xls云硬盘计量报表:volume_meter.xls
-
1、场景说明客户需要合理分配资源给各个不同的业务部门,既要做到各部门自助管理资源,又要管控各部门的使用量,做到合理分配,避免过度使用浪费资源等问题ManageOne通过VDC配额控制各部门可以使用的资源数量,确保各部门对资源的使用不超出预算范围。配额限制了VDC可使用云资源的最大限额,支持限制和不限两种方式,当配额不限时可使用云平台或所属VDC的所有资源。当前云平台支持按照区域、资源池、可用区、SLA四个维度管控配额。 2、使用流程注意:适用于ManageOne 8.1.1及以上版本步骤0:获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。使用运营管理员账号可管理全部租户的VDC配额,使用VDC管理员账号可管理本级VDC和子级VDC的配额。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token步骤1:查询VDC列表URLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs?start=0&limit=1000其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-1000之间,默认值为20。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询VDC列表“接口。)参数类型描述namestringVDC名称,长度在0-128之间。upper_vdc_idstring上级VDC id。domain_idstring所属租户id。levelint32VDC级别,取值在1-5之间。sort_keystring排序字段,支持按create_at、name字段排序。默认值:name。sort_dirstring排序方向,取值范围asc,desc。默认值:asc。is_domainstring是否为租户,1代表是,0代表不是。query_namestring过滤字段。取值范围domainName,upperVdcName,extraquery_valuestring过滤字段值。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "total": 4, "vdcs": [ { "id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "name": "hzp_vdc", "tag": "vdc", "description": null, "upper_vdc_id": "0", "upper_vdc_name": null, "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 2, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 1, "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed", "create_user_name": "bss_admin", "create_at": 1650350228000, "utc_create_at": "2022-04-19 06:37:08.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null }, { "id": "bf588c5a-8d05-49bd-a93d-e937286893e5", "name": "hzp_vdc2", "tag": "vdc", "description": "", "upper_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "upper_vdc_name": "hzp_vdc", "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 1, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 2, "create_user_id": "d0cc23141778469f82854c5269d3d9ee", "create_user_name": "hzp_admin", "create_at": 1651040610000, "utc_create_at": "2022-04-27 06:23:30.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null } ]}部分响应体字段说明如下: id:VDC idname:vdc名称level:vdc级别,取值在1-5之间。description:描述domain_id:租户iddomain_name:租户名create_at/utc_create_at:创建时间upper_vdc_id:上级VDC idupper_vdc_name:上级VDC 名称project_count:project数量top_vdc_id:所在的一级VDC id。步骤2:查询VDC配额注:8.1.1及以上版本可使用此接口。URLGET https://{SC北向接口域名}/rest/vdc/v3.2/vdcs/{vdc_id}/quotas?start=0&limit=3其中,start为分页查询的起始位置,默认为0。limit为每页显示的条目数量,最小值:1,最大值:3。分页查询时,start为limit的整数倍,例如:limit取值为3,分页查询时,start取值为0,3,6,9......等。其他查询参数:service_id:服务id,如ecs、evs、vpc等region_id:区域idcloud_infra_id:资源池idaz_id:可用分区id请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "total": 23, "services": [ { "service_id": "ecs", "service_name": "{\"en_us\":\"Elastic Cloud Server\",\"zh_cn\":\"弹性云服务器\"}", "quotas": [ { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "instances", "resource_id": "instances", "resource_name": "{\"en_us\":\"Instances\",\"zh_cn\":\"实例\"}", "unit": "{\"en_us\":\"\",\"zh_cn\":\"台\"}", "quota_limit": 10000, "quota_allocated": 0, "quota_used": 7.0, "quota_left": 9993 }, { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "cores", "resource_id": "cores", "resource_name": "{\"en_us\":\"vCPU\",\"zh_cn\":\"vCPU\"}", "unit": "{\"en_us\":\"cores\",\"zh_cn\":\"核\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 9.0, "quota_left": -1 }, { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "ram", "resource_id": "ram", "resource_name": "{\"en_us\":\"Memory\",\"zh_cn\":\"内存\"}", "unit": "{\"en_us\":\"GB\",\"zh_cn\":\"GB\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 18.0, "quota_left": -1 }, { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "instance_snapshot", "resource_id": "instance_snapshot", "resource_name": "{\"en_us\":\"Instance Snapshot\",\"zh_cn\":\"整机快照\"}", "unit": "{\"en_us\":\"\",\"zh_cn\":\"个\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 0.0, "quota_left": -1 } ] }, { "service_id": "evs", "service_name": "{\"en_us\":\"Elastic Volume Service\",\"zh_cn\":\"弹性云硬盘\"}", "quotas": [ { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "gigabytes", "resource_id": "SSD", "resource_name": "{\"zh_cn\":\"业务卷1\",\"en_us\":\"业务卷1\"}", "unit": "{\"zh_cn\":\"GB\",\"en_us\":\"GB\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 1140.0, "quota_left": -1 }, { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "gigabytes", "resource_id": "gigabytes", "resource_name": "{\"zh_cn\":\"磁盘容量\",\"en_us\":\"Disk Capacity\"}", "unit": "{\"zh_cn\":\"GB\",\"en_us\":\"GB\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 1451.0, "quota_left": -1 }, { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "az_id": "az0.dc0", "az_name": "华为技术有限公司", "parent_id": "volumes", "resource_id": "volumes", "resource_name": "{\"zh_cn\":\"磁盘数\",\"en_us\":\"Disk\"}", "unit": "{\"zh_cn\":\"个\",\"en_us\":\"\"}", "quota_limit": -1, "quota_allocated": 0, "quota_used": 28.0, "quota_left": -1 } ] } ]}响应体字段说明如下:total:总量。services:配额详情。对象数组。services包含以下字段:service_id:服务ID。service_name:服务名称。quotas:配额详情。对象数组。quotas包含以下字段:region_id:地域ID。region_name:地域名称。cloud_infra_id:资源池标识。cloud_infra_name:资源池名称。az_id:可用区 ID,长度在1-128之间。如果此字段为null,表示该配额挂在资源池下。az_name:可用区名称。parent_id:父配额项ID。当parent_id不等于resource_id时,指标项为SLA配额。resource_id:配额项ID。resource_name:配额项名称。unit:资源单位。quota_limit:配额阈值。取值为-1时,表示不限配额。quota_allocated:配额分配量。quota_used:配额已使用量。quota_left:剩余可用配额。取值为-1时,表示不限配额。步骤3:修改VDC配额注:8.1.1及以上版本可使用此接口。URLPUT https://{SC北向接口域名}/rest/vdc/v3.2/vdcs/{vdc_id}/quotas请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体示例:{ "services": [ { "service_id": "ecs", "quotas": [ { "region_id": "solution-advance-1", "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "az_id": "az0.dc0", "resource_id": "cores", "quota_limit": 1000, "parent_id": "cores" } ] } ]}其中,service_id为服务id;region_id为区域id;cloudInfraId为资源池id;az_id为可用分区id;resource_id为资源id;parent_id父配额资源 ID,以上参数均从“查询VDC配额”接口获取。quota_limit为配额限量,值为-1时表示不限制。注:当指标为SLA配额时(resource_id不等于parent_id时),所有SLA配额限制之和不能大于父配额限制;若父配额为“不限”,则SLA配额也必须设置为“不限”。例如:“磁盘容量”配额下可能有SAS、SSD等SLA配额,若“磁盘容量”配额限制为100G,则SAS配额+SSD配额不得超过100G。若“磁盘容量”配额为“不限”,则SAS配额和SSD配额也必须设置为“不限”。附录 配额指标清单截止至HCS 8.2.0版本,FUSION_CLOUD资源池下的云资源支持如下配额指标:服务名display单位配额控制范围弹性云服务器实例台可用分区弹性云服务器vCPU核可用分区弹性云服务器内存GB可用分区弹性云服务器NPU个可用分区弹性云服务器GPU个可用分区弹性云服务器vGPU个可用分区弹性云服务器整机快照个可用分区弹性云硬盘磁盘容量GB可用分区弹性云硬盘磁盘数个可用分区裸金属服务器实例台可用分区裸金属服务器CPU核可用分区裸金属服务器内存GB可用分区镜像服务镜像个资源池虚拟私有云VPC个资源池虚拟私有云弹性IP个资源池虚拟私有云弹性负载均衡个资源池虚拟私有云网络ACL个资源池虚拟私有云云专线个资源池虚拟私有云共享带宽个资源池虚拟私有云终端节点个资源池虚拟私有云终端节点服务个资源池弹性文件服务文件系统个资源池弹性文件服务总容量GB资源池应用魔方 AppCube应用魔方套资源池应用魔方 AppCube大屏可视化服务套资源池应用服务网格ASM网格个资源池区块链服务 BCS实例数个资源池云堡垒机实例台资源池云容器引擎CCE集群个资源池数据治理中心数据服务 - 专享版APP(按工作空间区分)个资源池数据治理中心数据服务 - 专享版API个资源池数据治理中心数据开发 - 作业数个资源池数据治理中心数据资产 - 对象数量个资源池数据治理中心数据服务 - 专享版集群个资源池数据治理中心数据服务 - 专享版流控(按工作空间区分)个资源池数据库审计服务代理个资源池分布式缓存服务 DCS实例个资源池分布式缓存服务 DCS内存GB资源池分布式数据库中间件 DDM实例数个资源池分布式数据库中间件 DDM虚拟机数个资源池分布式数据库中间件 DDMRAM容量(GB)GB资源池分布式数据库中间件 DDM核心数个资源池分布式数据库中间件 DDM磁盘数个资源池分布式数据库中间件 DDM磁盘容量(GB)GB资源池文档数据库服务 DDS实例数个资源池文档数据库服务 DDS虚拟机数个资源池文档数据库服务 DDSRAM容量(GB)GB资源池文档数据库服务 DDS核心数个资源池文档数据库服务 DDS磁盘数个资源池文档数据库服务 DDS磁盘容量(GB)GB资源池数据复制服务 DRS虚拟机数个资源池数据复制服务 DRS磁盘容量(GB)GB资源池数据复制服务 DRS弹性ip数量个资源池数据仓库服务节点个数个资源池数据仓库服务vCPU核资源池数据仓库服务集群手动快照个资源池数据仓库服务内存GB资源池数据仓库服务磁盘大小GB资源池云数据库 GaussDB SQL实例数个资源池云数据库 GaussDB SQL虚拟机数个资源池云数据库 GaussDB SQLRAM容量(GB)GB资源池云数据库 GaussDB SQL核心数个资源池云数据库 GaussDB SQL磁盘数个资源池云数据库 GaussDB SQL磁盘容量(GB)GB资源池图引擎服务图个资源池图引擎服务元数据个资源池图引擎服务边万边资源池ModelArts推理cpu核数个资源池ModelArts推理gpu个数个资源池ModelArts推理npu个数个资源池ModelArts训练cpu核数个资源池ModelArts训练gpu个数个资源池ModelArts训练npu个数个资源池MapReduce 服务vCPU核资源池MapReduce 服务内存GB资源池MapReduce 服务纳管集群个资源池云数据库 RDS实例数个资源池云数据库 RDS虚拟机数个资源池云数据库 RDSRAM容量(GB)GB资源池云数据库 RDS核心数个资源池云数据库 RDS磁盘数个资源池云数据库 RDS磁盘容量(GB)GB资源池应用与数据集成平台 ROMA Connect实例数个资源池应用管理与运维平台 ServiceStage微服务引擎个资源池Web应用防火墙独享引擎个资源池
-
1、场景说明如果您公司购买了并部署了华为云Stack产品,您希望通过自动化工具实现云服务资源的自动化发放,从而提高资源申请效率;如果您购买了并部署了华为云Stack产品,公司围绕IT资产的运营运维有一整套流程,您希望已有的流程平台(如ITSM、BOSS等)能够与华为云Stack进行对接,实现现有流程与云服务的整合,在简化服务的申请周期,提高应用上线效率的同时,还能够实现云资源的全流程监控;如果您是云服务提供商,将华为云Stack提供的云服务,按照租户的形式租售给了客户,客户希望实现云服务的自动化发放,需要您提供对接接口;如果您是云服务提供商,希望现有运营平台能够与华为云Stack对接,实现租户的自动化创建,并为每个租户预置指定类型的云资源,租户的日常运维由运维部门通过ManageOne进行运维。 2、使用流程HCS对外开放ManageOne运营面接口和云服务接口,支持通过API对云资源进行管理: 使用订单的方式对云资源进行申请、变更、释放操作,实现对云资源生命周期的管理,订单接口具有以下特点:订单支持关联审批流程(可以关联外部审批系统,详情可参考:链接),用户完成资源配置并提交后,如果审批通过,Manageone会自动完成订单实施;通过订单接口申请、释放云资源时,会同步扣除、恢复租户配额,当租户配额不够时,会导致订单实施失败;(8.1.1版本后,云服务接口亦支持此特性)订单接口只提供部分IaaS资源的申请,延期,变更,释放功能,不提供云服务的查询和操作(如虚拟机查询、开关机等),相关操作需要调用云服务接口。订单接口具体支持的资源操作如下,不在此列表中的云服务,也需要通过云服务接口创建,如高阶服务(CCE等):操作弹性云服务器(ECS)申请、克隆、离线变更、在线变更、重装/切换操作系统、删除、软删除、还原、延期裸金属服务器(BMS)申请、延期、软删除、删除镜像服务(IMS)申请、延期、软删除、删除、还原弹性云硬盘(EVS)申请、延期、软删除、删除、还原、扩容、变更云硬盘快照申请、删除虚拟私有云(VPC)申请、删除、延期弹性IP(EIP)申请、延期、软删除、删除、还原弹性负载均衡(ELB)申请、删除、延期虚拟防火墙/网络ACL(VFW)申请、删除、延期VPN申请、删除、延期弹性文件服务(SFS)申请、变更、软删除
-
1、场景说明本文档用于指导开发者获取租户和用户信息,便于第三方系统同步ManageOne的组织架构以及用户信息(如用户名、电话、email等)。主要场景:①ManageOne运营面作为单点登录服务端时,第三方服务需要获取登录用户的用户信息。了解更多②ManageOne运营面作为单点登录客户端时,客户有自己的统一认证中心,需要将统一认证中心的用户信息和组织架构同步至ManageOne。了解更多③客户有自己的监控平台,需要同步ManageOne的用户信息。 2、执行流程1)准备工作 a、获取管理员token 2)租户/VDC 查询VDC列表 查询VDC详情 3)用户 查询用户列表 查询用户详情 4) Project(资源集/项目) 查询VDC关联的Project 查询用户关联的Project 2.1 获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token2.2 租户/VDC1. 查询VDC列表URLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs?start=0&limit=1000其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-1000之间,默认值为20。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询VDC列表“接口。)参数类型描述namestringVDC名称,长度在0-128之间。upper_vdc_idstring上级VDC id。domain_idstring所属租户id。levelint32VDC级别,取值在1-5之间。sort_keystring排序字段,支持按create_at、name字段排序。默认值:name。sort_dirstring排序方向,取值范围asc,desc。默认值:asc。is_domainstring是否为租户,1代表是,0代表不是。query_namestring过滤字段。取值范围domainName,upperVdcName,extraquery_valuestring过滤字段值。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "total": 4, "vdcs": [ { "id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "name": "hzp_vdc", "tag": "vdc", "description": null, "upper_vdc_id": "0", "upper_vdc_name": null, "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 2, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 1, "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed", "create_user_name": "bss_admin", "create_at": 1650350228000, "utc_create_at": "2022-04-19 06:37:08.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null }, { "id": "bf588c5a-8d05-49bd-a93d-e937286893e5", "name": "hzp_vdc2", "tag": "vdc", "description": "", "upper_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "upper_vdc_name": "hzp_vdc", "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 1, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 2, "create_user_id": "d0cc23141778469f82854c5269d3d9ee", "create_user_name": "hzp_admin", "create_at": 1651040610000, "utc_create_at": "2022-04-27 06:23:30.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null } ]}响应体字段说明如下:id:VDC idname:vdc名称level:vdc级别,取值在1-5之间。description:描述domain_id:租户iddomain_name:租户名create_at/utc_create_at:创建时间upper_vdc_id:上级VDC idupper_vdc_name:上级VDC 名称project_count:project数量top_vdc_id:所在的一级VDC id。2. 查询VDC详情URLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs/{vdc_id}请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "vdc": { "id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "name": "hzp_vdc", "tag": "vdc", "description": null, "upper_vdc_id": "0", "upper_vdc_name": null, "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "ecs_used": 0.0, "evs_used": 0.0, "project_count": 0, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 1, "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed", "create_user_name": "bss_admin", "create_at": 1650321428000, "utc_create_at": null, "domain_name": "hzp_vdc", "ldap_id": null, "process_id": null, "regions": [ { "region_id": "solution-advance-1", "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}", "region_type": "private_cloud", "cloud_infras": [ { "cloud_infra_id": "FUSION_CLOUD_solution-advance-1", "cloud_infra_name": "OpenStack_solution-advance-1", "cloud_infra_status": "normal", "cloud_infra_type": "FUSION_CLOUD", "azs": [ { "available_zone": "az0.dc0", "az_name": "华为技术有限公司", "az_status": "normal", "extend_param": "{\"cloud_location\":\"localcloud\"}" } ] } ] } ], "third_type": null, "enterprise_id": null, "mfa_status": "0", "enterprise_project_id": null, "cloud_federation_rate": {}, "cloud_federation_status": false }}响应体字段说明如下:id:VDC idname:vdc名称level:vdc级别,取值在1-5之间。description:描述domain_id:租户iddomain_name:租户名create_at/utc_create_at:创建时间upper_vdc_id:上级VDC idupper_vdc_name:上级VDC 名称project_count:project数量top_vdc_id:所在的一级VDC id。region:区域详情。类型:对象数组。region包含以下字段:region_id:区域idregion_name:区域名称region_type:区域类型cloud_infras:资源池详情。对象类型。cloud_infras包含以下字段:cloud_infra_id:资源池idcloud_infra_name:资源池名称cloud_infra_status:资源池状态cloud_infra_type:资源池类型azs:可用分区详情。类型:对象数组。azs包含以下字段:available_zone:可用分区idaz_name:可用分区名称az_status:可用分区状态。extend_param:拓展参数。2.3 用户1. 查询用户列表接口约束:运营管理员token可查询全量用户。VDC管理员仅可查询本VDC以及子级VDC的用户。URLGET https://{SC北向接口域名}/rest/vdc/v3.0/users?limit=100&start=0URL常用参数:(完整参数请参考《ManageOne 运营面API参考》)start:分页查询的起始位置,最小值:0 ,最大值:2147483647 ,默认值:0。可选。limit:限制每页显示的条目数量,最小值:1,最大值:100 ,默认值:10。可选。tenant_id:用户归属的VDC ID。可选。name:按照名称或显示名字段模糊搜索。长度:1到128个字符。可选。exact:是否精确匹配,枚举值:true和false,默认值:false。可选。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{ "total": 1, "users": [ { "enabled": "true", "description": "", "email": "", "areacode": "", "phone": "", "vdc_name": "hzp_vdc", "resource_tenant_id": null, "level": null, "roles": [ { "id": "00000000-0000-0000-0000-000000000001", "name": "vdcServiceManager", "display_name": "VDC Admin", "user_role_type": "0" } ], "display_name": "", "vdc_id": "8c3e288e-49a5-4eab-90a0-47916dac8589", "domain_id": "9b01faf18f454c59a6fd157f0c82e556", "domain_name": "hzp_vdc", "user_type": "0", "name": "hzp_admin", "login_at": "2022-04-18 01:24:27.0", "id": "b7f8bc098f4f4891b93eeff5dcdfc6b5", "create_at": "2022-02-23 06:55:53.0" } ]}其中,id为用户Id,name为用户名称,domain_id为租户Id,vdc_id为所属的VDC Id。2. 查询用户详情接口约束:运营管理员token可查询全量用户。VDC管理员仅可查询本VDC以及子级VDC的用户。URLGET https://{SC北向接口域名}/rest/vdc/v3.0/users/{user_id}其中,user_id为用户id。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{ "limit_access": "false", "lock_period": null, "login_config": null, "whiteList": null, "user": { "enabled": "true", "description": "", "email": "", "areacode": null, "phone": "", "projects": [], "ldap_id": null, "level": "1", "resource_tenant_id": null, "roles": [ { "id": "00000000-0000-0000-0000-000000000001", "name": "vdcServiceManager", "display_name": "VDC Admin", "user_role_type": null, "description": "role_role_view_para_desc_content_vdcServiceManager_value" } ], "groups": [ { "id": "8afb852688194e408f4edf4bf8c8a690", "name": "SC_289yUXfSpzD", "description": "", "domain_id": "7111b7a59bff48fa983a6309fae3d7f7", "role_name": null, "vdc_name": "SC_289OHFUVQdL", "role_id": null, "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444" }, { "id": "cdafab1cfe2e4c129d4878b13e171333", "name": "admin_bc0366f0-3b60-486f-a88e-2a38266dd444", "description": "Default VDC administrator group, having the permission to manage services in the VDC that the user group belongs to and its lower-level VDCs.", "domain_id": "7111b7a59bff48fa983a6309fae3d7f7", "role_name": "vdcServiceManager", "vdc_name": "SC_289OHFUVQdL", "role_id": "00000000-0000-0000-0000-000000000001", "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444" } ], "display_name": null, "second_verify": "false", "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444", "domain_id": "7111b7a59bff48fa983a6309fae3d7f7", "domain_name": "SC_289OHFUVQdL", "user_type": "0", "name": "SC_289yUXfSpzD", "login_at": null, "id": "b76fc5607bff4ec094891c930cf3b0de", "tag": "vdc", "top_vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444", "ldap_name": null }, "federation_regions": []}其中,id为用户Id,name为用户名称,domain_id为租户Id,vdc_id为所属的VDC Id。groups为用户绑定的用户组。2.4 Project(资源集/项目)1. 查询VDC关联的ProjectURLGET https://{SC北向接口域名}/rest/vdc/v3.1/vdcs/{vdc_id}/projects?start=0&limit=100其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-100之间,默认值为10。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询指定VDC中资源集集合“接口。)参数类型描述inheritboolean是否查询VDC下所有可见VDC关联的资源集。默认值:falsenamestring模糊搜索所使用的名称字段,长度在1-64之间。sort_dirstring排序方向,取值范围asc,desc。默认值:asc请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{ "total": 1, "projects": [ { "id": "6aa4d449d6fe4ea68c7cacb1a9803959", "name": "cn-global-205_hzp_project", "description": "", "domain_id": "e1fcb3ba48a64cb2acb5894bcd6d892d", "enabled": true, "tenant_id": "d8e2a487-843b-4309-9d14-e845f593411f", "is_shared": false, "tenant_name": "hzp_vdc", "create_user_id": "b9fd4029af7a4b71a085048b9bbe9072", "create_user_name": "bss_admin", "regions": [ { "region_id": "cn-global-205", "region_name": { "zh_cn": "西安", "en_us": "西安" }, "region_type": null, "region_status": "normal" } ] } ]}其中,id为project Id,name为project名称,domain_id为project所在的租户Id,tenant_id为project所属的VDC Id;tenant_name为project所属的VDC名称;description为project描述;regions为project关联的region信息。2. 查询用户关联的ProjectURLGET https://{SC北向接口域名}/rest/vdc/v3.1/users/{user_id}/projects?start=0&limit=100其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-100之间,默认值为10。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询指定VDC中资源集集合“接口。)参数类型描述inheritboolean是否查询VDC下所有可见VDC关联的资源集。默认值:falsenamestring模糊搜索所使用的名称字段,长度在1-64之间。sort_dirstring排序方向,取值范围asc,desc。默认值:asc请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{ "total": 1, "projects": [ { "regions": [ { "region_id": "cn-global-205", "region_status": "normal", "region_name": { "zh_cn": "西安", "en_us": "西安" } } ], "id": "6aa4d449d6fe4ea68c7cacb1a9803959", "name": "cn-global-205_hzp_project", "iam_project_name": "cn-global-205_hzp_project", "display_name": "cn-global-205_hzp_project", "description": "", "enabled": true, "domain_id": "e1fcb3ba48a64cb2acb5894bcd6d892d", "tenant_id": "d8e2a487-843b-4309-9d14-e845f593411f", "tenant_name": "hzp_vdc", "level": "1", "role_id": null, "role_name": null, "is_shared": "false" } ]}其中,id为project Id,name为project名称,domain_id为project所在的租户Id,tenant_id为project所属的VDC Id;tenant_name为project所属的VDC名称;description为project描述;regions为project关联的region信息。
-
一、VDC模型介绍VDC(Virtual Data Center)是ManageOne运营面进行资源分配的单位,适用于分级运营的场景。例如,对于跨国运营商或跨省公司,包含多个省公司或子公司(一级VDC),省公司或子公司又包含多个下级部门(下级VDC)。在进行资源分配时,每个省公司或子公司使用的所有虚拟资源划分为一个一级VDC进行统一管理,每个下级部门使用的资源可以划分为一个下级VDC。每个VDC可以包含多个下级VDC。目前支持最多划分五级VDC。如果不需要分级运营,则只需创建一个一级VDC,将一级VDC管理员作为全局管理员。VDC租户模型如下图所示 功能描述租户匹配企业或子公司,独立使用云平台资源的边界,不同租户间的数据,操作,网络完全隔离。VDC匹配企业或子公司的部门,最多支持五级满足企业的组织结构。企业项目匹配企业中的项目,云资源配额的载体,具有时效性。资源集云平台管理资源的最小单位,通过资源集可以隔离资源、解决用户授权等复杂性问题。配额可使用云资源的最大限额,支持限制和不限两种方式,当配额不限时可使用云平台或所属VDC的所有资源。用户组具有相同权限的一组用户集合,通过将用户加入用户组,用户组和资源集授权的方式,提高授权便捷性。VDC租户模型描述:1)多级VDC多级VDC组成一个VDC树。VDC是由一个一级VDC为根节点和多个下级VDC组成的具有层次关系的集合;一个VDC中最多可包含五级VDC。一级VDC由运营管理员管理,二级及二级以下VDC由上级VDC管理;二级及二级以下VDC中每一级可以有多个VDC。图中用户1——用户n可以是VDC管理员、VDC业务员或自定义角色的用户。运营管理员可以创建多个VDC,一个VDC中可以包含多个下级VDC、Project、VDC管理员、VDC业务员。每一级VDC中的用户角色除了VDC管理员和VDC业务员,还可以有多个由用户自定的角色。支持代维管理员跨一级VDC代维,便于委托第三方管理运营,代维帐号可以进入被代维的一个或多个一级VDC进行代维。跨一级VDC代维,支持创建、删除、修改代维管理员。代维管理员可以进入被代维的多个一级VDC,代替VDC管理员进行VDC、用户及资源等的管理。代维管理说明如下。代维管理员根据企业组织结构设置各部门,设置各部门资源配额。代维营管理员通过部门切换,为各部门申请资源,并通过线下方式将资源信息通知最终使用者。资源最终使用者并不登录云管平台。代维管理员代维申请的资源,占用申请部门的配额。说明:在ManageOne中,每个租户下有且只有一个一级VDC,可将一级VDC与租户等同看待;VDC是ManageOne运营面进行资源分配的单位,是虚拟的概念,主要作用是在分级运营的场景下,起到控制配额、用户权限的作用;VDC下包含project和用户,project与OpenStack中的project相对应,是资源实体,用户在申请使用各种云资源时,均需要指定到具体的project而非VDC2)企业项目(8.0.3版本新特性)企业项目,云资源配额的载体,具有时效性。提供统一的云资源管理单位,以及企业项目内的配额管理。通过企业项目,可以查看项目概览、管理配额、查看已申请资源、管理授权资源集、查看资源计量信息。创建租户或VDC时默认创建与租户或VDC同名的企业项目。租户或VDC下创建的资源集自动关联默认创建的企业项目。一个企业项目可以关联多个资源集。企业项目共享所属VDC配额。3)资源集(Project/8.0.2及之前版本的项目)Project是对所使用资源的分组,相当于实际中的项目组,各个Project之间资源相互隔离,同一Project中资源共享。一个VDC可以包含多个Project,一个Project只能属于一个VDC。用户在申请资源时,在界面左上角切换到与其关联的某个Project,则用户申请的资源就属于该Project,从而实现资源分组。用户只有和Project关联了同一个用户组,才可以申请或管理对应Project的资源,其中用户申请的资源就属于该Project,从而实现资源分组。例如,用户VDCuser1,在界面左上角切换到与其关联的Project1,并申请ECS1;用户VDCuser2,在界面左上角切换到与其关联的Project2,并申请ECS2;ECS1和ECS2分别属于不同的Project,从而实现了资源的分组。4)配额管理VDC和企业项目的配额均支持限制和不限两种设置方式,配额不限时可使用所属VDC的所有可用配额。属于同一VDC下的企业项目与下级VDC共享此VDC的配额。注:8.0.3版本不支持VDC配额,只支持企业项目配额。8.1.0版本支持通过页面配置VDC配额,但不支持通过API配置。8.0.2及之前版本与8.1.1及之后版本支持通过API配置VDC配额。5)用户组(8.0.3版本新特性)ManageOne通过用户组实现权限管理和授权。基于用户组管理用户权限。提供系统预置用户组和用户自定义用户组的能力。支持以服务为粒度,提供服务相关的角色用于授权。支持基于策略授权,包括系统策略和用户自定义策略。对于VDC管理员,加入用户组后,在该VDC管理员所在的VDC和下级VDC,仍然具备VDC管理权限。系统包含三种预置用户组,分别为:“VDC管理员”、“VDC业务员”、“VDC只读管理员”用户组。但会在每个VDC中预置“VDC管理员”用户组,预置VDC业务员用户组和预置VDC只读管理员用户组需用户手动创建。系统涉及的4种类型用户组权限如下表所示。用户组权限VDC管理员具有所属VDC及下级VDC的管理权限,以及对所有资源具有管理权限。VDC业务员VDC业务员在其关联的资源集内,对所有资源具有管理权限。VDC只读管理员VDC只读管理员对本VDC及其下级VDC中资源、用户、自运维等具有查看权限。自定义权限用户组在自定义时为该用户组赋予相应的操作权限。说明:预置用户组权限不能修改。运营管理员和代维管理员无需关联用户组,创建好即具有相应权限,具体权限如下:运营管理员,具有运营管理类的所有权限。代维管理员,代理一级VDC管理员对本级VDC及下级VDC的管理权限,以及对所有资源具有管理权限。在创建用户时,根据需要选择相应的用户组。运营管理员可以管理所有用户组,VDC管理员或代维管理员只能管理本级和下级VDC的用户组。6)模型实例以XX公司为例,按照VDC租户模型,说明该公司各组织对应的配额、用户组以及资源集情况,如下图所示。案例描述: - 运营管理侧创建了两个企业(租户)分别为成都公司和深圳公司,并为成都公司创建了一级VDC(A产品部)和管理员(VDC_admin_A),为深圳公司创建了一级VDC(B产品部)和管理员(VDC_admin_B)。 - 分配给成都公司A产品部的资源配额为100个CPU和50G内存,为深圳公司B产品部分配的资源配额为200个CPU和100G内存。 - 深圳公司B产品部下设两个部门分别是服务部(二级VDC)和市场部(二级VDC),深圳公司的管理员(VDC_admin_B)为服务部的资源配额为100个CPU和50G内存,同时分配的员工有员工1、员工2和员工3,分配的版本项目有维护项目1和维护项目2,分别关联资源集1和资源集2,用户组为操作员组1;为市场部的资源配额为100CPU和50G内存,同时分配的员工有员工4、员工5和员工6,分配的版本项目有创新项目1和创新项目2,分别关联资源集3和资源集4,用户组为操作员组2。 - 深圳公司B产品部的管理员(VDC_admin_B)可以为各部门的各用户和资源集进行授权。 7)基线规格ManageOne的租户模型存在基线规格限制,如果客户的组织架构规模较大,对接时需考虑横向扩展。序号指标(私有云)数值(个)1最大租户数量10002单租户下VDC的总数量503单租户下用户的数量10004单租户下project的数量10005单租户下的企业项目的数量10006单租户下用户组的数量1507用户组关联的project的数量208用户组关联的用户数100 二、资源池模型资源池模型如下如所示:基本概念:基本概念说明云一种通过Internet以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。区域从物理位置的维度划分资源池。例如:华南Region、华东Region等。资源池指云计算数据中心中所涉及到的各种硬件和软件的集合,根据底层虚拟化技术或者业务使用场景划分资源的集合。ManageOne支持的资源池类型如下,不同使用场景下由于接入资源池的要求和能力不同,将涉及一个或多个不同资源池。私有云:FusionSphere OpenStack资源池、IaaS OpenStack资源池、FusionCompute资源池、FusionManager资源池、VMware资源池、Hyper-V资源池、PowerVM资源池、FusionInsight资源池。说明:FusionSphere OpenStack资源池特指华为云Stack场景下的OpenStack资源池,IaaS OpenStack资源池特指HCS Online场景下的OpenStack资源池。公有云:华为云资源池、华为云Stack Online资源池(云联邦)。两级云:两级云资源池。可用分区不同的可用分区具有独立的风火水电,物理隔离,是最终租户可见的资源池划分,包含可用的计算资源和存储资源。一个可用分区可包含一个或多个主机组。通常可用分区按照计算资源架构划分,如:X86分区、ARM分区、裸金属分区等。主机组(集群)对计算节点进行的逻辑上的划分,是管理员用来根据硬件资源的某一属性来对硬件进行划分的功能。三、常见问题1. 一级VDC与租户的关系在ManageOne的租户模型中,单租户下可划分五级VDC,其中,一级VDC与租户是1对1关系。但需要注意的是,一级VDC并不完全等同于租户,在《ManageOne 运营面API参考.docx》文档中,vdc通常表示为vdc或tenant,而租户表示为domain。2. 接口参数的tenantId表示什么在《ManageOne 运营面API参考.docx》文档中,tenantId表示VDC id。在《ManageOne 云服务Params参数说明.docx》和《华为云Stack API接口参考.chm》文档中,tenantId表示project id(project为Openstack中的租户,这种表示是为了与开源社区保持一致,在8.1.0及以上版本,云服务文档已统一表示为project id)。3. VDC、project、资源池的关联关系VDC与资源池的关系:在创建一级VDC或子级VDC时,会要求选择该VDC可用的区域、资源池和可用分区。因此,VDC与区域、资源池和可用分区是多对多关系,VDC可关联个区域,区域也可关联多个VDC。VDC与project的关系:1个VDC下可以创建多个project,但1个project只能属于1个VDC,因此是一对多关系。project与资源池的关系:同VDC与资源池的关系类似,project可在创建时选择关联的区域(但不能再选择资源池、可用分区,默认全部选择)。因此,project与区域、资源池和可用分区是多对多关系,project可关联个区域,区域也可关联多个project。
-
1、场景说明大型企业采购华为云Stack全站云平台之后,需要匹配内部的组织结构进行分级运营,达到资源隔离,按需分配的目的,此时需要结合ManageOne的VDC模型进行设计,将子公司(或省公司)设置为一级VDC,然后子公司(或省公司)再根据实际划分子级VDC。还有一种常见场景是,运营商采购华为云Stack全站云平台,面向政企客户提供云计算服务,这种情况下,每个政企客户也需要独占一个一级VDC。上述两种场景只涉及初期的组织模型规划,通常,大型企业或者运营商在实际运营过程中,还需要实现现有运营平台(如BSS,CRM等)与华为云Stack的对接,基本的是实现自动开户、快速获取账单的功能,达到自助申请,一键开通,可追溯审计的效果,从而使云计算的运营能够纳入到企业、运营商的日常经营中。本文主要给出如何实现企业、运营商的运营系统与华为云Stack进行对接,实现自动开通租户(即一级VDC)的功能。2、流程介绍本文以开通租户为例,介绍如何通过API创建租户,并完成必要的配置操作,使得用户可以在新创建的租户内申请云资源,流程图如下: 2、流程说明:1. 创建租户/一级VDC2. 为租户/一级VDC分配Region、资源池、可用分区3. 为租户/一级VDC分配外部网络。(不执行此步骤则无法创建VPC、EIP)4. 创建Project(资源集)5. 创建用户,并为用户授权Project。此步骤根据是否需要细粒度授权选择不同接口。除此之外,还有以下可选操作:1. 设置VDC配额(新租户创建完成后默认没有配额限制,如果需要限制配额,可在此步骤限制配额。)2. 创建企业项目、设置企业项目配额(企业项目为8.0.3版本新特性,相关介绍:链接。新租户创建完成后默认自带一个企业项目。如果不需要使用相关特性,直接无视即可,不需要做任何配置。)完成以上操作后,新创建用户可以登录ManageOne并申请资源。
-
🚀 青春直播精彩预告🚀 华为开发者布道师技术直播第18期 | 基于HarmonyOS NEXT应用开发之旅本期嘉宾:郑州轻工业大学 学生 刘俊威、吴玉佩两位学生华为开发者布道师,连续两届HarmonyOS极客马拉松获奖选手联袂呈现HarmonyOS NEXT开发全景!从基础筑基,到工具提效。为您铺就一条从入门到精通的鸿蒙应用开发之路。无论您是新手开发者,还是经验老手,都能在此收获满满干货,开启您的HarmonyOS NEXT高效、智能开发新篇章!🔍直播亮点🔍📦 基础筑基:从零开始,系统学习HarmonyOS NEXT 的核心概念和开发基础。🛠工具提效:深入讲解DevEco Studio 的使用技巧,助您高效开发鸿蒙应用。🌐 实战经验:分享两位布道师的实战经验和心得,帮助您少走弯路,快速提升。时间:7月17日(周四)晚19:00-20:30点击预约:基于HarmonyOS NEXT应用开发之旅
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签