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

测试

此更改需要通过单元测试进行测试。

文档影响

参考资料

https://wiki.openstack.org/wiki/Vitrage