RCI 故障模型 (API)
您可以从 平台>开发人员 部分的 Web 界面访问完整的 Apstra API 文档。
- 蓝图与零个或多个根本原因识别实例相关联。
- 根本原因识别实例通过蓝图下用于根本原因识别子资源的 CRUD API 启用(创建)/禁用(删除)。
- 可以创建的实例取决于蓝图的参考设计。在根本原因识别的第一阶段,只有two_stage_l3clos支持根本原因识别,目前每个蓝图只允许一个根本原因识别实例。
创建根本原因识别实例
POST /api/blueprints/<blueprint_id>/arca Request Payload schema { "model_name": s.String() # Name of ARCA instance's system fault model (ref design specific) "trigger_period": s.Float(min=10.0) # ARCA instance runs every <trigger_period> seconds. }
参考设计two_stage_l3clos蓝图示例:
{ "model_name": "default", "trigger_period": 10.0 } Return values: 201 - Successfully created the RCI instance. Response payload: {"id": <RCI instance ID>} The ID is used in GET, PUT, DELETE 404 - Blueprint does not exist or is not deployed 422 - Validation error. Response payload: {"error": <message>} Possible error messages: Model name is not found for the reference design An ARCA instance already exists for given model name trigger_period is too small
更新根本原因识别实例
使用 PUT API,您可以调整根本原因识别实例的执行频率。
PUT /api/blueprints/<blueprint_id>/arca/<arca_id> Request Payload schema { "trigger_period": s.Float(min=10.0) } Return values: 200 - Update succeeded. 404 - ARCA instance not found. 422 - Validation error. Response payload: {"error": <message>} Possible error messages: trigger_period is too small
删除根本原因识别实例
使用 GET API,您可以获取根本原因识别实例的当前状态(根本原因集)。
GET /api/blueprints/<blueprint_id>/arca/<arca_id> Return values: 200 - see response schema below 404 - ARCA instance not found
Response payload schema { "id": String, # ARCA instance ID "model_name": String, # see POST payload "trigger_period": Float, # see POST payload "state": Enum("created", "operational"), "config_updated_at": Timestamp # of last update to instance via POST/PUT "status_updated_at": Timestamp # of last update to ARCA results "root_cause_count": Integer(min=0) # Number of root causes identified "root_causes": List(ROOT_CAUSE_OBJ) # Actual root causes }
时间戳采用 UTC 时区的ISO8601格式,例如“2018-10-16T22:12:34+0000” 如果状态 == “created”,则 Status_updated_at == UNIX 纪元 root_cause_count == 0 不返回“root_causes”键
每个ROOT_CAUSE_OBJ都具有以下架构:
{ "id": String, # Unique ID for the root cause in the ARCA instance "context": String, # Encoded context such as references to graph nodes "description": String, # Human-readable text, e.g. "link <blah> broken" "timestamp": Timestamp, # of when RC is detected (ISO8601 format) "symptoms": List(SYMPTOM_OBJ), # List of symptoms; always non-empty }
有关根本原因检测和 ID 的说明:在蓝图的生命周期内,可能会多次检测到根本原因。例如,为主干 1 和枝叶 1 之间的电缆断裂定义了根本原因。此根本原因可能随时出现,一旦问题得到解决,它可能会消失。根本原因在 ARCA 实例中具有唯一 ID。这意味着 ID 可能会根据问题是否发生或修复而出现和消失,例如电缆断裂或重新连接 预期的根本原因 ID:two_stage_l3clos根本原因 ID 是图形节点和关系 ID 的组合,以及根本原因的一些不可变但可读的名称。示例:<图形链接节点 ID>/已损坏。
每个SYMPTOM_OBJ都具有以下架构:
{ "id": String, # Unique ID for the symptom in the ARCA instance "context": String, # Encoded context such as system ID, service name "description": String, # Readable, e.g. "interface swp1 on leaf1 is down" }
给定相同的 ARCA 系统故障模型,对于给定的根本原因,症状 ID 集始终相同。但是,上下文可能会有所不同。例如,症状“叶 1 上的接口 swp1 已关闭”是相同的,而此症状的不同实例的上下文可能具有不同的系统 ID,具体取决于在检测到此症状的根本原因时分配给叶 1 的系统 ID。症状 ID 示例:<图形接口节点 ID>/向下
列出根本原因识别实例
GET /api/blueprints/<blueprint_id>/arca Return values 200 - see response schema below 404 - blueprint not found or blueprint not deployed
响应架构:
{ "items": List(ARCA_INSTANCE_DIGEST), # list may be empty }
ARCA_INSTANCE_DIGEST 具有与 GET 单个 ARCA 实例的响应有效负载相同的架构,只是它不包含“root_causes”键。
在此阶段,对于two_stage_l3clos蓝图,列表中最多有 1 个元素,因为每个蓝图只允许 1 个 ARCA 实例。