定义和处理实体间的等价性¶
https://blueprints.launchpad.net/vitrage/+spec/entity-equivalence
定义实体间的等价性,以便将两个或多个实体映射到同一个对象,并在场景评估器中正确处理它。它受到 Idan Hefetz 关于 ZTE 告警抑制用例 的提案启发,但设计方式具有通用性,以便将来扩展到资源等价性。
问题描述¶
引入实体等价性将增强 Vitrage 的可扩展性,使其适用于更多用例,例如
提议的变更¶
添加一个新文件(或一组文件)来定义实体之间的等价性
metadata:
name: entity equivalence example
equivalences:
- equivalence:
- entity:
category: ALARM
type: nagios
name: host_problem
- entity:
category: ALARM
type: zabbix
name: host_problem
- entity:
category: ALARM
type: vitrage
name: host_problem
- equivalence:
...
这些定义将全局生效,即对每个模板都有效
评估器将为每个等价告警自动复制每个场景。例如,对于条件
condition: nagios_host_problem_on_host and host_contains_vm
内部将创建两个条件
condition: nagios_host_problem_on_host and host_contains_vm
condition: zabbix_host_problem_on_host and host_contains_vm
condition: vitrage_host_problem_on_host and host_contains_vm
其思想是用户编写单个条件,所有等价条件将自动创建和评估。
等价性应显式定义。将一个实体包含在两个或多个等价性定义中将导致隐式链式关系,因此被认为无效。例如,如果定义了 a eq b 和 b eq c,则逻辑上会产生隐式的 a eq c。这将在创建模板时引入不必要的复杂性,应在验证器中限制。
备选方案¶
单独文件与嵌入式定义¶
与其创建一个单独的文件,我们可以通过添加一个新的部分 equivalences 将等价性定义嵌入到模板中。彼此等价的实体被分组在其 template_id 的数组中
metadata:
name: entity equivalence example
definitions:
entities:
- entity:
category: ALARM
type: nagios
name: host_problem
template_id: nagios_host_problem
- entity:
category: ALARM
type: zabbix
name: host_problem
template_id: zabbix_host_problem
- entity:
category: ALARM
type: vitrage
name: host_problem
template_id: vitrage_host_problem
...
relationships:
...
equivalences:
- [nagios_host_problem, zabbix_host_problem, vitrage_host_problem]
scenarios:
...
这样,将减少实体定义的重复。
然而,考虑到一旦在两个告警之间添加了 equivalent 边,那么从逻辑上讲,这意味着它们在所有其他模板中都是等价的。即使它们没有以这种方式在其他模板中指定。那么模板在没有嵌入等价性信息的情况下会变得不清晰。
可以通过在其他蓝图(blueprint)中实现 import 功能来解决实体定义的重复问题。
添加等价边与不添加¶
equivalent 边可以在每两个等价告警之间创建。由于所有相关场景都已复制,这在评估器中不会带来额外的价值。
equivalent 边对于未来的演进(例如告警聚合、UI 优化、告警抑制)可能很有用。它可以在这些蓝图中实现。
数据模型影响¶
无
REST API 影响¶
无
版本影响¶
无
其他最终用户影响¶
无
部署者影响¶
无
开发者影响¶
无
Horizon 影响¶
当前 vitrage-dashboard 中有三个视图
拓扑视图¶
无影响
RCA 视图¶
更多告警和更多 causes 边
待办事项
(yujunz) 包含示例图
实体图¶
为等价告警(nagios, zabbix, vitrage)分隔顶点
更多边(
equivalent和on)
总结¶
对 RCA 视图和实体图的影响仅与同时使用 equivalence 和 vitrage-dashboard 的情况相关。我们将在未来的蓝图中处理它。
实现¶
负责人¶
- 主要负责人
yujunz
- 其他贡献者
无
工作项¶
验证和解析模板中的等价性定义
在场景存储库中复制场景
子图匹配或评估器中没有变化
以下项目不在范围内
聚合等价告警
add-equivalent操作在 UI 中支持告警等价性
实现用于告警抑制增强的因果树模型
资源等价性
依赖项¶
无
测试¶
实现将由额外的单元测试覆盖
文档影响¶
关于如何定义等价性以及何时使用它的文档
声明资源等价性的限制
列出在使用
equivalence与vitrage-dashboard时已知的问题