trading/shared/telemetry.py
Viktor Barzin ae5b3f89d1
feat: project foundation — monorepo setup, shared config, redis streams, telemetry
- pyproject.toml with core deps and optional dep groups per service
- shared/config.py: Pydantic BaseSettings with TRADING_ env prefix
- shared/redis_streams.py: StreamPublisher/StreamConsumer wrappers
- shared/telemetry.py: OpenTelemetry + Prometheus metric export
- tests for Redis Streams helpers (5 passing)
2026-02-22 15:13:26 +00:00

21 lines
856 B
Python

"""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)