Monasca/Events
< Monasca
新闻
2018 年 7 月- Monasca Events 的工作仍在继续,架构和 API 正在修订。以下信息来自 2017 年 1 月之前,甚至可以追溯到 2015 年,但请关注即将发布的更新,因为工作正在进行中。
简介
Monasca 中的实时事件流处理正在进行中,它将允许来自外部数据源的事件发送到 Monasca API,在那里可以对其进行转换、存储、查询、过滤、分组并与处理程序关联。可以使用事件中的字段通过过滤和分组事件来定义流。可以与流定义关联处理程序,当流触发条件发生时,这些处理程序将被触发。
OpenStack 事件的示例包括:实例创建和实例删除。可以对这些事件执行特定操作。例如,如果删除了一个实例,则应删除与该实例相关的所有警报。
一个示例用例是将 OpenStack “compute.instance.create.*” 事件(请参阅 https://wiki.openstack.org/wiki/NotificationEventExamples)发送到 API。可以定义一个事件转换,以减少源事件中提供的字段数量,使其更易于管理,并规范化数据。可以通过定义一个过滤器来选择所有“compute.instance.create.*”事件,并根据事件中的一组字段(例如“instance_id”)对其进行分组来创建事件流。当发生“compute.instance.create.end”事件时,可以调用一个触发条件来处理该流。
事件 API
事件
- POST /v2.0/events: 发布一个事件。
- GET /v2.0/events/{event_id}: 获取具有特定事件 ID 的事件。
- GET /v2.0/events: 列出事件。
转换
- POST /v2.0/events/transforms - 创建一个转换
- GET /v2.0/events/transforms - 列出转换
- GET /v2.0/events/transforms/{transform_id} - 获取指定的转换
- DELETE /v2.0/events/transforms/{transform_id}
流定义
- POST /v2.0/events/stream-definitions: 创建一个流定义,JSON 主体中包含以下参数
- name (string(255), required) - 流的唯一名称。
- description (string(255), optional) - 流的描述。
- select () - 用于过滤/匹配事件的字段。例如,选择事件类型字段与“compute.instance.create.*”匹配的所有事件。
- group_by () - 用于分组事件的字段。对于匹配选择标准的事件,根据指定的标准对其进行分组。例如,按“instance_id”或“user_id”字段进行分组。
- expires (int, required) - 从流开始到触发操作未发生时,过期操作被触发的毫秒数。
- fire_actions ([string(50)], optional) - 当管道触发时调用的通知方法 ID 数组。
- expire_actions ([string(50)], optional) - 当管道过期时调用的通知方法 ID 数组。
- GET /v2.0/events/stream-definitions
- GET /v2.0/events/stream-definitions/{stream-definition-id}
- DELETE /v2.0/events/stream-definitions/{stream-definition-id}
转换引擎
从 Kafka 消费事件,对其进行转换,然后发布到 Kafka。
事件引擎
从 Kafka 消费转换后的事件,并使用 Winchester 管道对其进行处理。
Distiller
无需更改。
Winchester
- 添加多租户支持
- 动态更新管道。
- 在运行时添加和删除管道定义。当前,Winchester 管道需要在启动时创建。
- 通过方法提供管道定义,而不是 yaml 文件。Winchester 当前在启动时从 yaml 文件读取管道配置信息。
- 创建管道处理程序,发布通知事件,以便通知引擎可以消费它们。
阈值引擎
更新以生成更通用的警报状态转换事件。
MySQL
- 初始化 Winchester 模式
- 初始化 Monasca 转换和管道模式。