Skip to main content

概述

事件是系统可观测能力的重要组成部分,代表系统中各组件状态变化的数据记录。基于事件可以清晰完成问题定位、审计和分析。本文介绍 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"
}

其中涉及的部分参数解释如下:

参数类型是否必选说明
idString事件ID。标识事件的唯一值。发送端必须确保source+id是唯一的,如果由于网络等原因事件被重新发送,可能会产生两个相同id的事件。接收端会认为具有相同sourceid的事件是重复的。事件通过规则路由到目标、事件被处理时,需要根据id跟踪事件。
sourceString事件源。提供事件的服务。标识事件发生的内容。一般会包含事件源的类型,发布事件的机制或生产事件的过程。发送端必须确保每个事件的source+id是唯一的。
specversionStringCloudEvents协议版本。
subjectString事件主题。JSON数据包含标识事件中涉及的资源的ARN。在发布订阅模式中,订阅者通常订阅source发出的事件。当source中包含子结构时,只使用source无法对具体事件进行清晰的定义。subject参数在订阅过滤场景中对data无法解释的内容提供说明。
timeTimestamp事件产生的时间。如果无法确定事件发生的时间,CloudEvents生产者可以把time设置为其他时间(例如当前时间),但是同一个source的所有生产者设置的值必须是一致的。
typeString事件类型。描述事件源相关的事件类型。该参数用于路由、事件查询和策略执行等。格式由生产者定义且包含版本等信息。
dataStruct事件内容。JSON对象,内容由发起事件的服务决定。CloudEvents可能包含事件发生时由事件生产者给定的上下文,data中封装了这些信息。
automqenvidStringAutoMQ 环境 ID。该参数是表示当前事件产生的环境信息,对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。
automqpublishtimeTimestamp事件存储的时间。不是CloudEvents规范中的参数。
automqcpidStringAutoMQ Cloud 底层使用的公共云云厂商 ID。对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。
automqregionidStringAutoMQ Cloud 底层使用的公共云云厂商地域。对于 AutoMQ Cloud 产品必须,不是CloudEvents 规范中的参数。
automqpublishaddrString产生事件的组件地址。不是CloudEvents 规范中的参数。
levelString事件等级,对于异常事件是必须,不是 CLoudEvents 规范中参数。

其中不同产品针对 source 字段的事件规范定义如下:

产品名称source 字段定义
AutoMQ Copilotautomq.copilot
AutoMQ for RocketMQautomq.rocketmq
AutoMQ for Kafkaautomq.kafka

各产品事件列表

AutoMQ 各产品在使用过程中定义了不同的事件,分别列举如下: