【问题标题】:How to send datadog the content of a JavaScript event through RUM如何通过 RUM 向 datadog 发送 JavaScript 事件的内容
【发布时间】:2023-01-17 08:39:04
【问题描述】:

我只是开始使用 DataDog,我想要完成的是向 DD_RUM 收集的事件添加一些数据。更具体地说,我想将来自 React 应用程序的任何用户触发操作的整个 event 对象发送到 datadog。我查看了 beforeSend(我无法将 event 添加到有效负载中)。而且我知道有一个 addAction api 可以发送到 DataDog 自定义操作,但我正在寻找一个适用于任何行动。

我当前在 React 应用程序上的 DD 配置:

  datadogRum.init({
    applicationId: 'my-app-id',
    clientToken: 'my-token',
    site: 'datadoghq.eu',
    service:'react-datadog-poc',
    env:'dev',
    version: '1.0.0',
    sessionSampleRate: 100,
    sessionReplaySampleRate: 100,
    trackUserInteractions: true,
    forwardErrorsToLogs: true,
    trackFrustrations: true,
    trackResources: true,
    trackLongTasks: true,
    defaultPrivacyLevel:'allow'
  });
  
  datadogLogs.init({
      clientToken: 'my-token',
      site: 'datadoghq.eu',
      forwardErrorsToLogs: true,
      forwardConsoleLogs: "all",
      forwardReports: "all",
        sessionSampleRate: 100
  });
  datadogRum.startSessionReplayRecording();

【问题讨论】:

    标签: javascript reactjs datadog rum


    【解决方案1】:

    实现此目的的一种方法是使用 datadogRum.addCustomEvent 方法将事件对象添加为发送到 Datadog 的事件的自定义属性。您可以通过将事件侦听器附加到 React 应用程序并在触发事件时将事件对象传递给 addCustomEvent 方法来实现。

    例如,您可以将以下代码添加到您的 React 应用程序中,以将事件侦听器附加到所有点击事件并将事件对象发送到 Datadog:

    document.addEventListener("click", function(event) {
      datadogRum.addCustomEvent("click", {event: event});
    });
    

    这会将整个事件对象作为发送到 Datadog 的“单击”事件的自定义属性发送。您还可以使用此方法将事件侦听器附加到其他类型的事件,例如按键或表单提交,并将事件对象也发送到 Datadog。

    请注意,您还需要确保在 Datadog RUM 配置中将 trackUserInteractions 选项设置为 true,以便将自定义事件发送到 Datadog。

    【讨论】: