在 MongoDB 上启用事件功能¶
https://blueprints.launchpad.net/ceilometer/+spec/mongodb-events-feature
事件功能已经在 SQLAlchemy 和 HBase 后端实现。现在需要将其扩展到 MongoDB 和 DB2。
问题描述¶
使用场景是将事件存储在数据库(MongoDB 或 DB2)中,并从该数据库获取事件(事件类型、特征、特征类型)。
主要思路是以类似于在其他驱动程序(SQLAlchemy 和 HBase)中实现的方式来实现事件功能。
用例
获取在指定时间段内创建的所有事件
按事件类型获取事件
按事件消息 ID 获取事件
按特征描述、类型和值获取事件
获取所有已存储的事件类型
获取属于特定事件类型的全部特征类型
获取特定事件类型中可以找到的所有特征,并可选地指定特定的特征类型。
提议的变更¶
在 ceilometer.storage.pymongo_base.py 中添加新的方法,用于将事件存储到数据库并从数据库获取事件。基于已经完成的事件实现,我们应该创建以下方法
record_event – 将收集到的事件存储到 MongoDB 和 DB2 的方法
get_events – 从 MongoDB 和 DB2 获取事件的方法,并指定以下过滤器:- 事件生成时间段 - 事件类型 - 事件消息 ID - 特征描述、类型和值(此处应考虑值上的可能操作,例如:<lt, le, eq, ne, ge, gt>)
get_event_types – 获取数据库中存储的所有事件类型的方法。
get_trait_types – 方法返回所有存储事件类型的特征类型,或者仅返回如果指定了事件类型,则返回该事件类型的特征类型。
get_traits – 方法返回特定事件类型的全部特征,或者如果定义了类型,则返回指定特征类型的特征。
替代方案¶
无
数据模型影响¶
我们需要在 MongoDB 和 DB2 中添加一个新的集合来存储事件
集合
- events
_id: 事件的 UUID (Event.message_id)
event_type: 事件类型的描述
timestamp: 事件生成的时间戳
- traits: [{trait_name: string, trait_type: integer,
trait_value: data} 的数组]
REST API 影响¶
无
安全影响¶
无
Pipeline 影响¶
无
其他最终用户影响¶
无
性能/可扩展性影响¶
无
其他部署影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
idegtiarov
- 持续维护者
idegtiarov
工作项¶
为 MongoDB 和 DB2 上的事件功能实现创建新方法
在单元测试中测试方法
未来生命周期¶
无
依赖项¶
无
测试¶
此代码将在事件功能的单元测试中进行测试
文档影响¶
无
参考资料¶
无