"""OpenTelemetry setup with Prometheus metric export.""" from opentelemetry import metrics from opentelemetry.exporter.prometheus import PrometheusMetricReader from opentelemetry.sdk.metrics import MeterProvider from prometheus_client import start_http_server def setup_telemetry(service_name: str, metrics_port: int = 9090) -> metrics.Meter: """Initialise an OpenTelemetry MeterProvider backed by Prometheus. A Prometheus-compatible HTTP server is started on *metrics_port* so that an external Prometheus instance can scrape ``/metrics``. Returns a ``Meter`` that services use to create counters, histograms, etc. """ reader = PrometheusMetricReader() provider = MeterProvider(metric_readers=[reader]) metrics.set_meter_provider(provider) start_http_server(metrics_port) return metrics.get_meter(service_name)