Vitrage RCA 支持¶
https://blueprints.launchpad.net/vitrage/+spec/support-rca
Vitrage 应该支持 RCA(根本原因分析)计算。此功能将允许我们跟踪在 OpenStack 中触发的告警的因果关系路径。为了跟踪告警对之间的局部因果关系,我们将使用一个或多个 RCA 模板,这些模板将指定哪些告警导致哪些告警。
问题描述¶
在系统发生重大故障时,我们可能会收到大量告警,这些告警将难以跟踪。我们希望识别告警的根本原因,以便用户可以专注于理解和修复此告警。
提议的变更¶
Vitrage Evaluator 作为工作流管理器,控制模板的分析和激活以及模板操作的执行。它的职责之一是监听 Vitrage Graph 的变化,并在发生变化时执行匹配的模板。这是一种通用的机制,应该适用于所有类型的模板并执行各种类型的操作。
此蓝图的目标是确保 RCA 功能端到端正常工作。
每当 Vitrage Graph 更新时,我们将计算 RCA 并可选地使用“causes”(导致)边连接告警顶点。当查询特定告警的 RCA 关系时(即哪些告警导致了它以及哪些告警是由它引起的),我们将遍历已存在的“causes”边并返回 RCA 树。
包含 causes 边的图的示例
+---------------+ +-------------+
| | on | |
| switch alarm | +----------> | switch |
| | | |
+------+--------+ +-------+-----+
| |
causes | | attached
| |
v v
+---------------+ +-------------+
| | on | |
| host alarm | +----------> | host |
| | | |
+------+--------+ +-------+-----+
| |
causes | | contains
| |
| |
v v
+---------------+ +-------------+
| | on | |
| instance alarm| +----------> | instance |
| | | |
+---------------+ +-------------+
备选方案¶
我们可以每次查询时重新计算 RCA 关系,但这将效率低下。提前计算并将结果保存在 Vitrage Graph 中更有意义。
数据模型影响¶
无
REST API 影响¶
API 在单独的蓝图中定义: https://blueprints.launchpad.net/vitrage/+spec/rca-api
安全影响¶
无
流水线影响¶
无
其他最终用户影响¶
无
性能/可扩展性影响¶
应该进行性能测试。大部分性能风险在于像 https://blueprints.launchpad.net/vitrage/+spec/networkx-graph-driver 这样的通用蓝图(参见 https://blueprints.launchpad.net/vitrage/+spec/networkx-performance-improvement)。但是,我们还需要针对 RCA 进行特定的测试。
其他部署者影响¶
无
开发者影响¶
无
Horizon 影响¶
我们应该开发 horizon UI 插件来查看 RCA 关系。这应该在单独的蓝图中描述。
实现¶
负责人¶
- 主要负责人
ifat_afek <ifat.afek@alcatel-lucent.com>
工作项¶
此蓝图包括
定义 RCA 模板的确切语法
标记两个告警之间的因果关系。我们将使用一个操作来实现它,该操作将在 Vitrage Graph 中的告警顶点之间添加一个“causes”边。
定义并实现查询给定告警的 RCA 关系的方法
未来生命周期¶
无
依赖项¶
Vitrage Graph
Vitrage Engine
测试¶
此更改需要通过单元测试进行测试。
文档影响¶
无