Ceilometer 告警定义和历史的专用数据库

https://blueprints.launchpad.net/ceilometer/+spec/dedicated-alarm-database

目前,如果我们使用 MongoDB 存储计量数据,我们就被迫使用 MongoDB 存储事件和告警。因为 API 服务只能使用一个数据库连接对象。

此外,计量和告警是完全不同的两件事,但数据库代码目前放在同一个地方。

该蓝图建议允许为告警定义和告警历史使用不同的数据库。

问题描述

用例是,我想将我的计量数据存储到 MongoDB 中,并将我的告警定义和历史存储到 MySQL 中。

提议的变更

想法是将 ceilometer/storage 中的所有告警数据库内容移动到 ceilometer/alarm/storage 中。

ceilometer.storage.get_connection_from_conf 获取一个新的参数 ‘purpose’,可以设置为 metering 或 alarm。

这将允许使用不同的命名空间加载取决于目的的驱动程序。

将添加新的入口点,以拥有不同的告警和计量驱动程序集。

Ceilometer API 将使用两个连接对象,一个用于计量,一个用于告警,具体取决于使用的 API 端点请求。

替代方案

数据模型影响

对于 SQLAlchemy,迁移脚本将继续存储在公共位置,以确保轻松迁移。如果使用专用数据库,我们接受存在未使用的空表。

REST API 影响

安全影响

Pipeline 影响

其他最终用户影响

性能/可扩展性影响

其他部署影响

部署者现在可以通过添加以下内容来选择性地定义 Ceilometer 告警的专用数据库

[database]
connection = mongodb://localhost/ceilometer
alarm_connection = mysql://localhost/ceilometer

开发者影响

实现

负责人

主要负责人

sileht

持续维护者

sileht

工作项

  • 将告警数据库 API 与计量数据库 API 分离

  • 移除告警 API 中无用的驱动程序

未来生命周期

依赖项

测试

这是一个代码重构,具有一个新的可选配置选项。这个配置将在新的单元测试中进行测试。

文档影响

参考资料