使用 Datadog 日志和 RUM SDK 在抛出错误时发送多个请求

Using the Datadog logs and RUM SDKs sends multiple requests when errors are being thrown

我有以下问题:

触发器

正在抛出未捕获的异常,datadog logs SDK 发送请求记录事件。

预期结果

一个请求是 sent/incident 并且事件仅在 Datadog UI 中记录一次。

实际结果

Datadog 日志 SDK 发送许多 requests/incident(在 1k-2.5k 之间)并且事件在 Datadog UI.

中记录了很多次

附加信息

当禁用 Datadog RUM SDK 时,Datadog 日志 SDK 会按预期运行。但是,我想 运行 他们两个,所以目前这不是一个选项。

我正在为 @datadog/browser-logs@datadog/browser-rum 包使用版本 3.1.3

下面是说明问题的屏幕截图:

Many requests being sent for one uncaught exception example

这是我用来初始化日志和 RUM SDK 的代码:

    import { datadogLogs } from '@datadog/browser-logs';
    import { datadogRum } from '@datadog/browser-rum';

    if (process.env.NODE_ENV === 'production' && process.env.DATADOG_CLIENT_TOKEN) {
            const environment = getEnvironment();
            const config = {
                site: 'datadoghq.eu',
                clientToken: process.env.DATADOG_CLIENT_TOKEN,
                service: typeof DATADOG_SERVICE !== 'undefined' ? DATADOG_SERVICE : undefined,
                env: environment ? `${environment}` : undefined,
                proxyHost: process.env.PROXY_HOST
            };
        
            datadogLogs.init(config);
        
            
                if (process.env.DATADOG_APPLICATION_ID) {
                    datadogRum.init({
                        ...config,
                        trackInteractions: true,
                        applicationId: process.env.DATADOG_APPLICATION_ID
                    });
        
                    datadogRum.setUser({
                        name: service.getName(),
                        email: service.getEmail()
                    });
                }
    }

我遇到了同样的问题,升级 Datadog Rum 并将日志记录到 3.6.13 为我解决了这个问题:

"@datadog/browser-logs": "^3.6.13",
"@datadog/browser-rum": "^3.6.13",

对于其他人:

  1. 使用localhost,不是自定义域名。出于某种原因,DD_RUM.getInternalContext() 不适用于自定义域名。

  2. 同时安装 RUM 和日志版本 - 最新版本并且可能是同一版本。如果您需要特定的不同版本,请在 package.lock 上检查 datadog 包的依赖包。它可以是不同的,这可能会引发错误。