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