Event API¶
https://blueprints.launchpad.net/vitrage/+spec/support-inspector-sb-api
此蓝图定义了一个向 Vitrage 数据源发送事件的 API。
问题描述¶
作为 OPNFV Doctor Inspector 项目的参考实现,Vitrage 必须实现 Inspector SB API。这是一个 REST API,每个监控服务都应该调用它,以便将事件推送到 Inspector。
提议的变更¶
将添加新的 API 以允许将事件发送到 Vitrage 数据源。这些事件将被发送到 Oslo 消息总线,并由数据源驱动程序之一根据 type 属性进行消费。
例如,Doctor 数据源将处理类型为 compute.host.down 的事件,而 Nova 实例数据源将处理类型为 compute.instance.delete.start 的事件。(使用此 API 进行 Nova 测试不是实际用例,但可用于调试)。
对于 Doctor 数据源,事件将包含 Doctor 规范中定义的详细信息。未来的数据源也可以使用此 API 将他们自己的事件发送到 Vitrage。
REST API 影响¶
POST /v1.0/event/¶
将事件发布到 Vitrage 消息队列,由数据源驱动程序消费。
头部¶
X-Auth-Token (字符串, 必需) - Keystone 认证令牌
Accept (字符串) - application/json
User-Agent (字符串)
Content-Type (字符串): application/json
路径参数¶
无。
查询参数¶
无。
请求体¶
要发布的事件。将包含以下字段
time: 事件的时间戳。对于监控事件,应指定故障发生的时间。
type: 事件的类型。
details: 键值对形式的元数据。
从 Doctor SB API 参考中复制的一些潜在详细信息列表
hostname: 发生事件的主机名。
source: 此事件的报告者的显示名称。这不限于监控,可以指定其他实体,例如 ‘KVM’。
cause: 此事件的原因的描述,可能与此事件的类型不同。
severity: 监控设置的此事件的严重程度。
status: 发生错误的的目标对象的状态。
monitorID: 发送此事件的监控器的 ID。
monitorEventID: 监控器中事件的 ID。操作员在跟踪监控器日志时可以使用它。
relatedTo: 与此事件相关的 ID 数组。
请求示例¶
POST /v1/event/
Host: 135.248.18.122:8999
User-Agent: keystoneauth1/2.3.0 python-requests/2.9.1 CPython/2.7.6
Content-Type: application/json
Accept: application/json
X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7
{
'event': {
'time': '2016-04-12T08:00:00',
'type': 'compute.host.down',
'details': {
'hostname': 'compute-1',
'source': 'sample_monitor',
'cause': 'link-down',
'severity': 'critical',
'status': 'down',
'monitor_id': 'monitor-1',
'monitor_event_id': '123',
}
}
}
响应¶
状态码¶
200 - 确定
400 - 请求错误
响应体¶
如果请求成功,则返回一个空的响应体。否则,返回详细的错误消息(例如 ‘缺少 time 参数’)。
实现¶
负责人¶
- 主要负责人
ifat-afek
测试¶
这些更改将通过单元测试和 tempest 测试进行测试。
文档影响¶
新的 api 应该被记录