diff --git a/taskiq/middlewares/prometheus_middleware.py b/taskiq/middlewares/prometheus_middleware.py index 45128d4f..56837cf3 100644 --- a/taskiq/middlewares/prometheus_middleware.py +++ b/taskiq/middlewares/prometheus_middleware.py @@ -38,7 +38,6 @@ def __init__( logger.debug(f"Setting up multiproc dir to {metrics_path}") - os.environ["PROMETHEUS_MULTIPROC_DIR"] = str(metrics_path) os.environ["PROMETHEUS_MULTIPROC_DIR"] = str(metrics_path) logger.debug("Initializing metrics") @@ -85,11 +84,23 @@ def startup(self) -> None: This function starts prometheus server. It starts it only in case if it's a worker process. """ - from prometheus_client import start_http_server # noqa: PLC0415 + from prometheus_client import ( # noqa: PLC0415 + CollectorRegistry, + start_http_server, + ) + from prometheus_client.multiprocess import ( # noqa: PLC0415 + MultiProcessCollector, + ) if self.broker.is_worker_process: try: - start_http_server(port=self.server_port, addr=self.server_addr) + registry = CollectorRegistry() + MultiProcessCollector(registry) + start_http_server( + port=self.server_port, + addr=self.server_addr, + registry=registry, + ) except OSError as exc: logger.debug("Cannot start prometheus server: %s", exc)