diff --git a/beater/api/asset/sourcemap/test_approved/integration/TestSourcemapHandler_KillSwitchMiddleware/DataStreams.approved.json b/beater/api/asset/sourcemap/test_approved/integration/TestSourcemapHandler_KillSwitchMiddleware/DataStreams.approved.json new file mode 100644 index 00000000000..bd5de196284 --- /dev/null +++ b/beater/api/asset/sourcemap/test_approved/integration/TestSourcemapHandler_KillSwitchMiddleware/DataStreams.approved.json @@ -0,0 +1,3 @@ +{ + "error": "forbidden request: When APM Server is managed by Fleet, Sourcemaps must be uploaded directly to Elasticsearch." +} diff --git a/beater/api/mux.go b/beater/api/mux.go index cf236ee85bf..c1f8663d482 100644 --- a/beater/api/mux.go +++ b/beater/api/mux.go @@ -221,7 +221,10 @@ func sourcemapMiddleware(cfg *config.Config, auth *authorization.Handler) []midd msg := "Sourcemap upload endpoint is disabled. " + "Configure the `apm-server.rum` section in apm-server.yml to enable sourcemap uploads. " + "If you are not using the RUM agent, you can safely ignore this error." - enabled := cfg.RumConfig.IsEnabled() && cfg.RumConfig.SourceMapping.IsEnabled() + if cfg.DataStreams.Enabled { + msg = "When APM Server is managed by Fleet, Sourcemaps must be uploaded directly to Elasticsearch." + } + enabled := cfg.RumConfig.IsEnabled() && cfg.RumConfig.SourceMapping.IsEnabled() && !cfg.DataStreams.Enabled return append(backendMiddleware(cfg, auth, sourcemap.MonitoringMap), middleware.KillSwitchMiddleware(enabled, msg)) } diff --git a/beater/api/mux_sourcemap_handler_test.go b/beater/api/mux_sourcemap_handler_test.go index 95b9ef0f60e..9480b4ce826 100644 --- a/beater/api/mux_sourcemap_handler_test.go +++ b/beater/api/mux_sourcemap_handler_test.go @@ -70,6 +70,15 @@ func TestSourcemapHandler_KillSwitchMiddleware(t *testing.T) { approvaltest.ApproveJSON(t, approvalPathAsset(t.Name()), rec.Body.Bytes()) }) + t.Run("DataStreams", func(t *testing.T) { + cfg := cfgEnabledRUM() + cfg.DataStreams.Enabled = true + rec, err := requestToMuxerWithPattern(cfg, AssetSourcemapPath) + require.NoError(t, err) + require.Equal(t, http.StatusForbidden, rec.Code) + approvaltest.ApproveJSON(t, approvalPathAsset(t.Name()), rec.Body.Bytes()) + }) + t.Run("On", func(t *testing.T) { rec, err := requestToMuxerWithPattern(cfgEnabledRUM(), AssetSourcemapPath) require.NoError(t, err)