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 实例。