发送自定义事件 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

发送自定义事件

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); } }