事件管道¶
https://blueprints.launchpad.net/ceilometer/+spec/notification-pipeline
问题描述¶
目前,当通知代理接收到通知时,所有通知都会被导入到一个单一的端点,使用 event_definition 进行过滤,然后推送到调度器,通常是一个数据库。缺乏灵活性来转换、扩展、触发这些事件,以及将数据发布到多个消费者。
提议的变更¶
与样本数据一样,事件也有一个管道。与样本数据一样,我们定义了源和接收器。与样本数据不同,源中没有定义时间间隔。
这将允许将不同的数据(例如,审计数据)发布到不同的存储,并允许完全忽略通知(目前,我们为所有通知捕获一个 shell 事件)。
建议的模式是
---
sources:
- name: eventA_source # any unique name for source
events: # list of event_types, same wildcard technique in samples
- "*"
sinks:
- sink1
- sink2
sinks:
- name: sink1 # any unique name for sink
transformers:
# one or many transformers that work on an Event.
triggers:
# potential for triggering (short term inline actions). i'd
# envision a trigger that built performance samples. ie time
# between corresponding start/end events and republish as a sample
# alternatively, that same work could send an alarm if it didn't
# meet a certain threshold
publishers: # we will not support rpc it isn't great for performance
- notifier://
发布者在这里可以有所不同。我们目前直接将事件发布到数据库,绕过了收集器。在这个规范中,我们将继续提供这种方式,同时提供 notifier、udp、file 选项。收集器除了将任何同步任务从通知代理转移到收集器之外,没有明显的优势。由于我们已经为每个管道重新排队项目,这种同步瓶颈仅存在于具有同步任务的管道中,不会减慢其他管道的速度。
替代方案¶
改为发布到收集器,让它持久化数据。
将其放在与样本数据相同的 pipeline.yaml 文件中。
数据模型影响¶
无。
REST API 影响¶
目前没有,但它会影响数据库中的管道工作。
安全影响¶
与当前发布者相同的安全问题。
Pipeline 影响¶
这是一个全新的管道,所以肯定有影响:一个新的 pipeline.yaml
其他最终用户影响¶
你需要另一个 pipeline.yaml;你需要对其进行适当的配置。
性能/可扩展性影响¶
默认情况下,这不会造成任何差异。由于能够过滤掉事件,可能会减少数据量。由于转换器和多个发布者,可能会增加数据量。我们有通知代理协调,它会将管道和数据拆分到不同的代理中以处理扩展。
其他部署影响¶
添加一个用于新 pipeline.yaml 的配置选项
开发者影响¶
如果他们还不了解,请了解管道的工作原理。
实现¶
负责人¶
- 主要负责人
chungg
- 持续维护者
chungg
工作项¶
创建 event_pipeline.yaml
将当前的事件端点重定向以使用此管道
添加事件的发布者支持
未来生命周期¶
构建转换器。构建触发器。构建发布者。
依赖项¶
无。
测试¶
扩展管道测试以包含 event_pipeline
文档影响¶
重写管道说明,以包含新的 event_pipeline 及其差异
参考资料¶
https://blueprints.launchpad.net/ceilometer/+spec/notification-pipelines