Telemetry & Prometheus Metrics#
SnoozeML exposes Prometheus metrics at GET /metrics (protected by Role.ADMIN when protect_metrics = true). The snoozeml.metrics module parses Prometheus exposition text into a structured DaemonMetrics dataclass.
Fetching Metrics via SnoozeClient#
Call get_metrics() to scrape and parse metrics in one step:
from snoozeml import SnoozeClient
client = SnoozeClient("http://localhost:8080", api_key="admin-key")
metrics = client.get_metrics()
print(f"Total Requests: {metrics.inference_requests_total}")
print(f"Success Count: {metrics.inference_success_total}")
print(f"Error Count: {metrics.inference_errors_total}")
print(f"Success Rate: {metrics.success_rate:.2%}")
print(f"Average Server Latency: {metrics.average_latency_ms:.2f} ms")
print(f"Currently Loaded Models: {metrics.models_loaded_count}")
print(f"Scale-to-Zero Evictions: {metrics.model_unloads_total}")
Parsing Raw Metrics Exposition Text#
You can also parse raw Prometheus text directly using parse_prometheus_metrics():
from snoozeml.metrics import parse_prometheus_metrics
raw_prometheus_text = requests.get("http://localhost:8080/metrics").text
metrics = parse_prometheus_metrics(raw_prometheus_text)
Parsed Metrics Fields#
Field |
Type |
Description |
|---|---|---|
|
|
Cumulative inference requests received. |
|
|
Cumulative successful inference requests. |
|
|
Cumulative failed inference requests. |
|
|
Total time spent in forward inference passes across all requests. |
|
|
Total number of model weight load events from disk. |
|
|
Total number of scale-to-zero and LRU eviction events. |
|
|
Instantaneous count of models resident in host RAM / GPU VRAM. |
|
|
Total micro-batches processed by the dynamic batcher. |
|
|
Total individual request items coalesced across all batches. |
|
|
Instantaneous count of requests waiting in the batcher queue. |
|
|
Ratio of successful inferences to total requests (0.0 to 1.0). |
|
|
Average forward inference latency in milliseconds. |