redis/redis-py · error · RuntimeError

Metrics are enabled but no global MeterProvider is configure

Error message

Metrics are enabled but no global MeterProvider is configured.

Set up OpenTelemetry before initializing redis-py observability:

  from opentelemetry import metrics
  from opentelemetry.sdk.metrics import MeterProvider
  from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
  from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter

  # Create exporter
  exporter = OTLPMetricExporter(
      endpoint='http://localhost:4318/v1/metrics'
  )

  # Create reader
  reader = PeriodicExportingMetricReader(
      exporter=exporter,
      export_interval_millis=10000
  )

  # Create and set global provider
  provider = MeterProvider(metric_readers=[reader])
  metrics.set_meter_provider(provider)

  # Now initialize redis-py observability
  from redis.observability import get_observability_instance, OTelConfig
  otel = get_observability_instance()
  otel.init(OTelConfig(enable_metrics=True))

What it means

Error "Metrics are enabled but no global MeterProvider is configured. Set up OpenTelemetry before initializing redis-py observability: from opentelemetry import metrics from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter # Create exporter exporter = OTLPMetricExporter( endpoint='http://localhost:4318/v1/metrics' ) # Create reader reader = PeriodicExportingMetricReader( exporter=exporter, export_interval_millis=10000 ) # Create and set global provider provider = MeterProvider(metric_readers=[reader]) metrics.set_meter_provider(provider) # Now initialize redis-py observability from redis.observability import get_observability_instance, OTelConfig otel = get_observability_instance() otel.init(OTelConfig(enable_metrics=True)) " thrown in redis/redis-py.

Source

Thrown at redis/observability/providers.py:90

            return None

        # Lazy import - only import OTel when metrics are enabled
        try:
            from opentelemetry import metrics
            from opentelemetry.metrics import NoOpMeterProvider
        except ImportError:
            raise ImportError(
                "OpenTelemetry is not installed. Install it with:\n"
                "  pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-http"
            )

        # Get the global MeterProvider
        if self._meter_provider is None:
            self._meter_provider = metrics.get_meter_provider()

            # Check if it's a real provider (not NoOp)
            if isinstance(self._meter_provider, NoOpMeterProvider):
                raise RuntimeError(
                    "Metrics are enabled but no global MeterProvider is configured.\n"
                    "\n"
                    "Set up OpenTelemetry before initializing redis-py observability:\n"
                    "\n"
                    "  from opentelemetry import metrics\n"
                    "  from opentelemetry.sdk.metrics import MeterProvider\n"
                    "  from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader\n"
                    "  from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter\n"
                    "\n"
                    "  # Create exporter\n"
                    "  exporter = OTLPMetricExporter(\n"
                    "      endpoint='http://localhost:4318/v1/metrics'\n"
                    "  )\n"
                    "\n"
                    "  # Create reader\n"
                    "  reader = PeriodicExportingMetricReader(\n"
                    "      exporter=exporter,\n"
                    "      export_interval_millis=10000\n"

View on GitHub (pinned to da03cdc7e8)

When it happens

Trigger: Thrown at redis/observability/providers.py:90 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of redis/redis-py@da03cdc7e8 (2026-08-04). Data as JSON: /data/errors/ee48e929e3000f74.json. Report an issue: GitHub.