Aodh Notifier¶
launchpad 蓝图: https://blueprints.launchpad.net/vitrage/+spec/aodh-notifier
评估器对 Vitrage 图进行根本原因分析,并可能确定应创建、删除或以其他方式更新警报。Vitrage Notifier 服务会通知其他组件这些更改。其中,Vitrage Notifier 负责处理 Aodh 警报。
此蓝图描述了 Vitrage Notifier 实现,用于在 Vitrage 警报时通知 Aodh。
+------------------+ +------------------+ +------------------+
| Aodh <--+ | | | |
+------------------+ | Update | Vitrage | Raise | Vitrage |
+--------| <----------| |
+------------------+ | Alarm | Notifier | Alarm | Evaluator |
| Other components <--+ | | | |
+------------------+ +------------------+ +------------------+
问题描述¶
Vitrage 应能够根据评估器引擎的请求创建、删除或以其他方式更新警报。通知器负责确保执行这些更新。具体来说,我们将从 Aodh 警报开始。
主要挑战
Aodh 中无法定义“自定义警报”
Vitrage 警报基于资源。需要将资源信息传递给 Aodh
可以同时触发相同类型的多个警报,每个警报对应不同的资源。例如,如果某个主机上存在警报,Vitrage 将对该主机上的每个实例引发推导出的警报。
如何请求有关 Vitrage 警报更新的通知?
提议的变更¶
Vitrage Notifier 将与评估器分离,因为两者对规模和其他性能考虑因素有不同的需求。Vitrage Notifier 将提供一个由 Vitrage 评估器使用的 API,包含创建/删除/更新警报。
在 Aodh 中,Vitrage 警报将被定义为事件警报,这似乎是最合适的选项。警报查询中将定义资源 ID。
Vitrage 推导出的警报将如下所示
属性 |
值 |
alarm_actions |
[] |
alarm_id |
4a3cb988-a620-4bf3-87f7-077c751c408f |
description |
实例不可达 |
enabled |
True |
event_type |
vitrage.alarm.instance_unreachable |
insufficient_data_actions |
[] |
name |
vitrage_instance_unreachable_1 |
ok_actions |
[] |
project_id |
5542b27142154f30b32dea6238aa81aa |
query |
[{field’: ‘resource_id’, ‘type’: ‘’, ‘value’: ‘b0bf3635-d9e8-4624-9793-7aac82948c0a’, ‘op’: ‘eq’}] |
repeat_actions |
False |
severity |
moderate |
state |
alarm |
type |
event |
user_id |
8ab65ef808b245e3ba234b7b3554cb94 |
在此示例中,Vitrage 触发一个推导出的警报,表明由于公共交换机故障(由 Nagios 检测到)实例不可达。将存在具有相同 event_type 和不同实例 ID 的查询的多个警报。
触发 Vitrage 警报在 Aodh 中有两种选择,没有一个是完美的。
方案 1¶
Vitrage 将在 Aodh 中创建一个事件警报。然后,它将向消息总线发送通知。该通知将被转换为 Ceilometer 事件,这将触发 Aodh 警报。
确切的通知和事件格式仍待确定 (TBD)。
此解决方案的主要问题是 Aodh 警报将动态创建并立即触发,因此其他项目在警报触发之前无法注册 webhook。可以在 list-alarms 中看到 Vitrage 警报,但无法在首次触发时收到通知。
方案 2¶
Vitrage 将在 Aodh 中创建一个事件警报,状态为“alarm”。事件本身将永远不会发送,因此警报状态将保持“alarm”。
此解决方案的问题是 Aodh 不会发送有关警报触发的通知。但由于在方案 1 中也无法注册警报,因此这两个选项之间没有真正的区别。
数据模型影响¶
无
REST API 影响¶
无
版本影响¶
无
其他最终用户影响¶
无
部署者影响¶
对于方案 1 - 需要定义通知 -> 事件配置
对于方案 2 - 无需
开发者影响¶
无
Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
idan-hefetz
工作项¶
无
依赖项¶
无
测试¶
此蓝图需要单元测试和 Tempest 测试。
文档影响¶
对于方案 1 - 需要记录通知 -> 事件配置
对于方案 2 - 无需
参考资料¶
Vitrage wiki 页面: https://wiki.openstack.org/wiki/Vitrage
Vitrage 用例: https://github.com/openstack/vitrage/blob/master/doc/source/vitrage-use-cases.rst