发送自定义事件
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); } }