diff --git a/server/v2/api/telemetry/server.go b/server/v2/api/telemetry/server.go index 7e3e066010..f612964a84 100644 --- a/server/v2/api/telemetry/server.go +++ b/server/v2/api/telemetry/server.go @@ -28,7 +28,7 @@ type Server[T transaction.Tx] struct { } // New creates a new telemetry server. -func New[T transaction.Tx](cfg server.ConfigMap, logger log.Logger) (*Server[T], error) { +func New[T transaction.Tx](cfg server.ConfigMap, logger log.Logger, enableTelemetry func()) (*Server[T], error) { srv := &Server[T]{} serverCfg := srv.Config().(*Config) if len(cfg) > 0 { @@ -39,6 +39,14 @@ func New[T transaction.Tx](cfg server.ConfigMap, logger log.Logger) (*Server[T], srv.config = serverCfg srv.logger = logger.With(log.ModuleKey, srv.Name()) + if enableTelemetry == nil { + panic("enableTelemetry must be provided") + } + + if srv.config.Enable { + enableTelemetry() + } + metrics, err := NewMetrics(srv.config) if err != nil { return nil, fmt.Errorf("failed to initialize metrics: %w", err) diff --git a/simapp/v2/simdv2/cmd/commands.go b/simapp/v2/simdv2/cmd/commands.go index 24fad3eaa5..9fb41250ec 100644 --- a/simapp/v2/simdv2/cmd/commands.go +++ b/simapp/v2/simdv2/cmd/commands.go @@ -25,6 +25,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/debug" "github.com/cosmos/cosmos-sdk/client/keys" "github.com/cosmos/cosmos-sdk/client/rpc" + sdktelemetry "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/genutil" @@ -118,7 +119,7 @@ func InitRootCmd[T transaction.Tx]( } } - telemetryServer, err := telemetry.New[T](deps.GlobalConfig, logger) + telemetryServer, err := telemetry.New[T](deps.GlobalConfig, logger, sdktelemetry.EnableTelemetry) if err != nil { return nil, err } diff --git a/telemetry/metrics.go b/telemetry/metrics.go index 175261408a..67ace50c53 100644 --- a/telemetry/metrics.go +++ b/telemetry/metrics.go @@ -24,6 +24,11 @@ func IsTelemetryEnabled() bool { return globalTelemetryEnabled } +// EnableTelemetry allows for the global telemetry enabled state to be set. +func EnableTelemetry() { + globalTelemetryEnabled = true +} + // globalLabels defines the set of global labels that will be applied to all // metrics emitted using the telemetry package function wrappers. var globalLabels = []metrics.Label{}