diff --git a/internal/pkg/agent/cmd/run.go b/internal/pkg/agent/cmd/run.go index bc386c7263e..d58fc264a1e 100644 --- a/internal/pkg/agent/cmd/run.go +++ b/internal/pkg/agent/cmd/run.go @@ -19,6 +19,7 @@ import ( "github.com/elastic/elastic-agent/internal/pkg/agent/application/enroll" fleetgateway "github.com/elastic/elastic-agent/internal/pkg/agent/application/gateway/fleet" + "github.com/gofrs/uuid/v5" "go.elastic.co/apm/v2" apmtransport "go.elastic.co/apm/v2/transport" @@ -719,8 +720,21 @@ func setupMetrics( tracer *apm.Tracer, coord *coordinator.Coordinator, ) (*reload.ServerReloader, error) { - if err := report.SetupMetrics(logger, agentName, version.GetDefaultVersion()); err != nil { //nolint:staticcheck // ignore deprecation - return nil, err + + ephemeralID, err := generateEphemeralID() + if err != nil { + return nil, fmt.Errorf("failed to generate ephemeral ID: %w", err) + } + + if err := report.SetupMetricsOptions(report.MetricOptions{ + Name: agentName, + Version: version.GetDefaultVersion(), + Logger: logger, + EphemeralID: ephemeralID, + SystemMetrics: monitoringLib.Default.GetOrCreateRegistry("system"), + ProcessMetrics: monitoringLib.Default.GetOrCreateRegistry("beat"), + }); err != nil { + return nil, fmt.Errorf("failed to setup metrics: %w", err) } s, err := monitoring.NewServer(logger, monitoringLib.GetNamespace, tracer, coord, cfg) @@ -793,3 +807,13 @@ func ensureInstallMarkerPresent() error { return nil } + +// generateEphemeralID generates a random UUID +func generateEphemeralID() (string, error) { + uid, err := uuid.NewV4() + if err != nil { + return "", fmt.Errorf("error while generating UUID for agent: %w", err) + } + + return uid.String(), nil +}