CloudWatch RUM 可记录并摄取 CloudWatch RUM Web 客户端收集的信息 中列出的事件。如果您使用 1.12.0 或更高版本的 CloudWatch RUM Web 客户端,则您可以定义、记录和发送其他自定义事件。对于您定义的每个事件类型,您可以定义事件类型名称和要发送的数据。每个自定义事件负载最多可达 6KB。
只有当应用程序监视器启用了自定义事件时,才会摄取自定义事件。要更新应用程序监视器的配置设置,请使用 CloudWatch RUM 控制台或 UpdateAppMonitor API。
启用自定义事件,然后定义和发送自定义事件,即可搜索它们。要搜索自定义事件,请使用 CloudWatch RUM 控制台中的 Events(事件)选项卡。请使用事件类型进行搜索。
要求和语法
自定义事件由事件类型和事件详细信息组成。其要求如下:
事件类型
-
这可以是事件的 type(类型)或 name(名称)。例如,名为 JsError 的 CloudWatch RUM 内置事件类型的事件类型为
com.amazon.rum.js_error_event
。 -
长度必须介于 1-256 个字符之间。
-
可以是字母数字字符、下划线、连字符和句点的组合。
-
事件详细信息
-
包含要在 CloudWatch RUM 中记录的实际数据。
-
必须是由字段和值组成的对象。
-
记录自定义事件的示例
有两种方法可以在 CloudWatch RUM Web 客户端中记录自定义事件。
使用 CloudWatch RUM Web 客户端的
recordEvent
API。使用自定义插件。
使用 recordEvent
API 发送自定义事件,NPM 示例
awsRum.recordEvent('my_custom_event', {
location: 'IAD',
current_url: 'amazonaws.com',
user_interaction: {
interaction_1 : "click",
interaction_2 : "scroll"
},
visit_count:10
}
)
使用 recordEvent
API 发送自定义事件,嵌入式脚本示例
cwr('recordEvent', {
type: 'my_custom_event',
data: {
location: 'IAD',
current_url: 'amazonaws.com',
user_interaction: {
interaction_1 : "click",
interaction_2 : "scroll"
},
visit_count:10
}
})
使用自定义插件发送自定义事件的示例
// Example of a plugin that listens to a scroll event, and
// records a 'custom_scroll_event' that contains the timestamp of the event.
class MyCustomPlugin implements Plugin {
// Initialize MyCustomPlugin.
constructor() {
this.enabled;
this.context;
this.id = 'custom_event_plugin';
}
// Load MyCustomPlugin.
load(context) {
this.context = context;
this.enable();
}
// Turn on MyCustomPlugin.
enable() {
this.enabled = true;
this.addEventHandler();
}
// Turn off MyCustomPlugin.
disable() {
this.enabled = false;
this.removeEventHandler();
}
// Return MyCustomPlugin Id.
getPluginId() {
return this.id;
}
// Record custom event.
record(data) {
this.context.record('custom_scroll_event', data);
}
// EventHandler.
private eventHandler = (scrollEvent: Event) => {
this.record({timestamp: Date.now()})
}
// Attach an eventHandler to scroll event.
private addEventHandler(): void {
window.addEventListener('scroll', this.eventHandler);
}
// Detach eventHandler from scroll event.
private removeEventHandler(): void {
window.removeEventListender('scroll', this.eventHandler);
}
}