Skip to content

Commit e48f344

Browse files
committed
Add registry keyword argument to PrometheusMetricReader
1 parent e301732 commit e48f344

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class PrometheusMetricReader(MetricReader):
135135
"""Prometheus metric exporter for OpenTelemetry."""
136136

137137
def __init__(
138-
self, disable_target_info: bool = False, prefix: str = ""
138+
self, disable_target_info: bool = False, prefix: str = "", registry=REGISTRY
139139
) -> None:
140140
super().__init__(
141141
preferred_temporality={
@@ -151,7 +151,8 @@ def __init__(
151151
self._collector = _CustomCollector(
152152
disable_target_info=disable_target_info, prefix=prefix
153153
)
154-
REGISTRY.register(self._collector)
154+
self._registry = registry
155+
self._registry.register(self._collector)
155156
self._collector._callback = self.collect
156157
self._prefix = prefix
157158

@@ -166,7 +167,7 @@ def _receive_metrics(
166167
self._collector.add_metrics_data(metrics_data)
167168

168169
def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None:
169-
REGISTRY.unregister(self._collector)
170+
self._registry.unregister(self._collector)
170171

171172

172173
class _CustomCollector:

exporter/opentelemetry-exporter-prometheus/tests/test_prometheus_exporter.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ def setUp(self):
5555
side_effect=self._mock_registry_register,
5656
)
5757

58+
def test_custom_registry(self):
59+
from prometheus_client import CollectorRegistry
60+
custom_registry = CollectorRegistry()
61+
reader = PrometheusMetricReader(registry=custom_registry)
62+
# global REGISTRY should NOT be used
63+
self._mock_registry_register.assert_not_called()
64+
reader.shutdown()
65+
5866
def verify_text_format(
5967
self, metric: Metric, expect_prometheus_text: str, prefix: str = ""
6068
) -> None:

0 commit comments

Comments
 (0)