from __future__ import annotations from typing import Iterable from prometheus_client import Counter, Histogram IMPORT_DURATION = Histogram( "calminer_import_duration_seconds", "Duration of import preview and commit operations", labelnames=("dataset", "action", "status"), ) IMPORT_TOTAL = Counter( "calminer_import_total", "Count of import operations", labelnames=("dataset", "action", "status"), ) EXPORT_DURATION = Histogram( "calminer_export_duration_seconds", "Duration of export operations", labelnames=("dataset", "status", "format"), ) EXPORT_TOTAL = Counter( "calminer_export_total", "Count of export operations", labelnames=("dataset", "status", "format"), ) def observe_import(action: str, dataset: str, status: str, seconds: float) -> None: IMPORT_TOTAL.labels(dataset=dataset, action=action, status=status).inc() IMPORT_DURATION.labels(dataset=dataset, action=action, status=status).observe(seconds) def observe_export(dataset: str, status: str, export_format: str, seconds: float) -> None: EXPORT_TOTAL.labels(dataset=dataset, status=status, format=export_format).inc() EXPORT_DURATION.labels(dataset=dataset, status=status, format=export_format).observe(seconds)