OpenTelemetry Prometheus Exporter
Export OpenTelemetry metrics in Prometheus format so Prometheus can scrape your Python application.
Repository Health
Technical Analysis
opentelemetry-exporter-prometheus is the official OpenTelemetry Python exporter that bridges the OpenTelemetry metrics SDK to Prometheus. It converts OTel metric instruments (counters, up-down counters, gauges, and histograms) into Prometheus-format samples and exposes them for scraping via the standard prometheus_client library.
It plugs into the OpenTelemetry metrics pipeline as a MetricReader, so instrumentation written against the vendor-neutral OpenTelemetry API can be surfaced to a Prometheus server without changing application code. This lets teams standardize on OpenTelemetry instrumentation while keeping Prometheus as their metrics backend.
What You Get
- A
PrometheusMetricReaderthat collects OpenTelemetry metrics for Prometheus scraping - Mapping of OTel counters, up-down counters, gauges, and histograms to Prometheus metric types
- Integration with the prometheus_client library’s HTTP exposition
- An opentelemetry_metrics_exporter entry point for auto-configuration
- Correct handling of OTel attributes as Prometheus labels
Common Use Cases
- Exposing OpenTelemetry-instrumented application metrics to an existing Prometheus deployment
- Standardizing on vendor-neutral OTel instrumentation while keeping Prometheus as the metrics backend
- Scraping counters, gauges, and histograms from a Python service via a /metrics endpoint
Under The Hood
Architecture - The package lives in the opentelemetry-python monorepo at exporter/opentelemetry-exporter-prometheus and is deliberately small. src/opentelemetry/exporter/prometheus/__init__.py defines the PrometheusMetricReader (and an internal _AutoPrometheusMetricReader used by the auto-configuration entry point), which subclasses the OTel SDK MetricReader and, on collection, translates the SDK’s in-memory metric data into a Prometheus registry. _mapping.py holds the logic that maps OTel instrument types and attribute sets onto Prometheus metric names, types, and labels, delegating exposition to the prometheus_client Collector interface.
Tech Stack - Pure Python (3.10+), built with hatchling. It depends on opentelemetry-api and opentelemetry-sdk for the metrics pipeline and on prometheus_client (>=0.5.0) for Prometheus-format serialization and HTTP exposition.
Code Quality - The exporter ships a focused test suite — test_prometheus_exporter, test_mapping, and test_entrypoints — verifying instrument translation, label mapping, and auto-configuration wiring. As part of the CNCF OpenTelemetry project it follows that repo’s rigorous CI, linting, and review standards; it is marked Beta, with a documented limitation around multiprocessing environments.
API Design - Usage is idiomatic OpenTelemetry: construct a PrometheusMetricReader, pass it to a MeterProvider, and start the prometheus_client HTTP server — no exporter-specific glue is needed. The opentelemetry_metrics_exporter entry point enables fully zero-code setup under OTel auto-instrumentation. Familiarity with the OpenTelemetry metrics model is the main prerequisite, which sets a moderate learning curve.
Used by 2 apps in this directory
Apache Airflow
Data Engineering
Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.
Langflow
AI Agents · AI Development
Build, test, and deploy AI agents and RAG workflows visually with native API and MCP server export.