Skip to content

Commit 4cf8ef1

Browse files
🐛 Add correct registry when collecting api-server log queue prometheus metrics (#7616)
1 parent a21d245 commit 4cf8ef1

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

services/api-server/src/simcore_service_api_server/core/_prometheus_instrumentation.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
from collections.abc import Iterator
23
from dataclasses import dataclass, field
34
from datetime import timedelta
45
from typing import Final, cast
@@ -37,25 +38,29 @@ def __post_init__(self) -> None:
3738
"#Logs in log streaming queue",
3839
["job_id"],
3940
namespace=METRICS_NAMESPACE,
41+
registry=self.registry,
4042
)
4143
self._health_check_qauge = Gauge(
4244
"log_stream_health_check",
4345
"#Failures of log stream health check",
4446
namespace=METRICS_NAMESPACE,
47+
registry=self.registry,
4548
)
4649

4750
def update_metrics(
48-
self, log_queue_sizes: dict[JobID, int], health_check_failure_count: PositiveInt
51+
self,
52+
iter_log_queue_sizes: Iterator[tuple[JobID, int]],
53+
health_check_failure_count: PositiveInt,
4954
):
5055
self._health_check_qauge.set(health_check_failure_count)
5156
self._logstreaming_queues.clear()
52-
for job_id, length in log_queue_sizes.items():
57+
for job_id, length in iter_log_queue_sizes:
5358
self._logstreaming_queues.labels(job_id=job_id).set(length)
5459

5560

5661
async def _collect_prometheus_metrics_task(app: FastAPI):
5762
get_instrumentation(app).update_metrics(
58-
log_queue_sizes=get_log_distributor(app).get_log_queue_sizes,
63+
iter_log_queue_sizes=get_log_distributor(app).iter_log_queue_sizes,
5964
health_check_failure_count=get_health_checker(app).health_check_failure_count,
6065
)
6166

services/api-server/src/simcore_service_api_server/services_http/log_streaming.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import logging
33
from asyncio import Queue
4-
from collections.abc import AsyncIterable
4+
from collections.abc import AsyncIterable, Iterator
55
from typing import Final
66

77
from common_library.error_codes import create_error_code
@@ -86,8 +86,9 @@ async def deregister(self, job_id: JobID):
8686
del self._log_streamers[job_id]
8787

8888
@property
89-
def get_log_queue_sizes(self) -> dict[JobID, int]:
90-
return {k: v.qsize() for k, v in self._log_streamers.items()}
89+
def iter_log_queue_sizes(self) -> Iterator[tuple[JobID, int]]:
90+
for k, v in self._log_streamers.items():
91+
yield k, v.qsize()
9192

9293

9394
class LogStreamer:

0 commit comments

Comments
 (0)