概述
事件是系统可观测能力的重要组成部分,代表系统中各组件状态变化的数据记录。基于事件可以清晰完成问题定位、审计和分析。本文介绍 AutoMQ 系统中涉及到的事件规范定义。
AutoMQ 产品中涉及到的事件,依据事件来源分类主要有:
- 操作行为记录:用户使用 AutoMQ Cloud、AutoMQ Copilot 过程中的各个操作事件。
- 系统巡检检测:AutoMQ Copilot for RocketMQ 系统巡检根据巡检规则检测到的异常事件。
本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。
事件规范
AutoMQ 定义各系统产生的事件,遵循CloudEvents规范。关于CloudEvents规范的更多信息,请参见CloudEvents 1.0。
以下是各类型事件的整体结构示例:
{
"data":{
//详细的第二级事件结构,遵循独立的业务schema规范
},
"id":"45ef4dewdwe1-7c35-447a-bd93-fab** **",
"source":"事件来源,约定产生的厂商和服务",
"specversion":"1.0",
"subject":"事件产生的归属资源ARN信息",
"time":"2020-11-19T21:04:41+08:00",
"type":"事件类型,独立标记一种data结构的类型",
"automqenvid":"automq的环境ID,用来做多租隔离",
"automqpublishtime":"事件存储的时间,可能大于产生时间",
"automqcpid":"IaaS云厂商ID",
"automqregionid":"IaaS云厂商 regionID",
"automqpublishaddr":"172.25.XX.XX",
"level":"P1"
}
其中涉及的部分参数解释如下:
参数 | 类型 | 是否必选 | 说明 |
---|---|---|---|
id | String | 是 | 事件ID。标识事件的唯一值。发送端必须确保source+id是唯一的,如果由于网络等原因事件被重新发送,可能会产生两个相同id的事件。接收端会认为具有相同source和id的事件是重复的。事件通过规则路由到目标、事件被处理时,需要根据id跟踪事件。 |
source | String | 是 | 事件源。提供事件的服务。标识事件发生的内容。一般会包含事件源的类型,发布事件的机制或生产事件的过程。发送端必须确保每个事件的source+id是唯一的。 |
specversion | String | 是 | CloudEvents协议版本。 |
subject | String | 否 | 事件主题。JSON数据包含标识事件中涉及的资源的ARN。在发布订阅模式中,订阅者通常订阅source发出的事件。当source中包含子结构时,只使用source无法对具体事件进行清晰的定义。subject参数在订阅过滤场景中对data无法解释的内容提供说明。 |
time | Timestamp | 否 | 事件产生的时间。如果无法确定事件发生的时间,CloudEvents生产者可以把time设置为其他时间(例如当前时间),但是同一个source的所有生产者设置的值必须是一致的。 |
type | String | 是 | 事件类型。描述事件源相关的事件类型。该参数用于路由、事件查询和策略执行等。格式由生产者定义且包含版本等信息。 |
data | Struct | 否 | 事件内容。JSON对象,内容由发起事件的服务决定。CloudEvents可能包含事件发生时由事件生产者给定的上下文,data中封装了这些信息。 |
automqenvid | String | 是 | AutoMQ 环境 ID。该参数是表示当前事件产生的环境信息,对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。 |
automqpublishtime | Timestamp | 是 | 事件存储的时间。不是CloudEvents规范中的参数。 |
automqcpid | String | 是 | AutoMQ Cloud 底层使用的公共云云厂商 ID。对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。 |
automqregionid | String | 是 | AutoMQ Cloud 底层使用的公共云云厂商地域。对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。 |
automqpublishaddr | String | 是 | 产生事件的组件地址。不是CloudEvents 规范中的参数。 |
level | String | 否 | 事件等级,对于异常事件是必须,不是 CLoudEvents 规范中参数。 |
其中不同产品针对 source 字段的事件规范定义如下:
产品名称 | source 字段定义 |
---|---|
AutoMQ Copilot | automq.copilot |
AutoMQ for RocketMQ | automq.rocketmq |
AutoMQ for Kafka | automq.kafka |
各产品事件列表
AutoMQ 各产品在使用过程中定义了不同的事件,分别列举如下:
- RocketMQ Copilot 事件列表:参考 AutoMQ Copilot 事件列表▸ 。