From ae68d0036ef9cdca7152280b4fd2ce9bdf79ad81 Mon Sep 17 00:00:00 2001 From: Johanna Ojeling Date: Mon, 11 May 2026 10:48:25 +0200 Subject: [PATCH 1/4] [prometheus] Stabilize SDK exporter client libraries --- CHANGELOG.md | 2 ++ specification/metrics/sdk_exporters/prometheus.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b88a75ca1fb..da33b744bd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ release. - Stabilize sections of Prometheus Metrics Exporter. - Stabilize temporality. ([#5024](https://github.com/open-telemetry/opentelemetry-specification/issues/5024)) + - Stabilize client libraries. + ([#4980](https://github.com/open-telemetry/opentelemetry-specification/issues/4980)) - Stabilize port configuration. ([#4985](https://github.com/open-telemetry/opentelemetry-specification/issues/4985)) - Change Prometheus Metric Exporter config property recommended names diff --git a/specification/metrics/sdk_exporters/prometheus.md b/specification/metrics/sdk_exporters/prometheus.md index fc3145c282f..28c73b03c7b 100644 --- a/specification/metrics/sdk_exporters/prometheus.md +++ b/specification/metrics/sdk_exporters/prometheus.md @@ -52,7 +52,7 @@ OpenTelemetry metrics MUST be converted to Prometheus metrics according to the ### Client Libraries -**Status**: [Development](../../document-status.md) +**Status**: [Stable](../../document-status.md) A Prometheus Exporter SHOULD use [Prometheus client libraries](https://prometheus.io/docs/instrumenting/clientlibs/) From d4f3947c7a3573fdbb007e3bb4092810138ebd82 Mon Sep 17 00:00:00 2001 From: Johanna Ojeling Date: Tue, 12 May 2026 12:58:16 +0200 Subject: [PATCH 2/4] [prometheus] Clarify official vs unofficial client libraries --- CHANGELOG.md | 2 +- specification/metrics/sdk_exporters/prometheus.md | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da33b744bd7..32844a17111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ release. - Stabilize sections of Prometheus Metrics Exporter. - Stabilize temporality. ([#5024](https://github.com/open-telemetry/opentelemetry-specification/issues/5024)) - - Stabilize client libraries. + - Reword client libraries. ([#4980](https://github.com/open-telemetry/opentelemetry-specification/issues/4980)) - Stabilize port configuration. ([#4985](https://github.com/open-telemetry/opentelemetry-specification/issues/4985)) diff --git a/specification/metrics/sdk_exporters/prometheus.md b/specification/metrics/sdk_exporters/prometheus.md index 28c73b03c7b..6e2b54d9a62 100644 --- a/specification/metrics/sdk_exporters/prometheus.md +++ b/specification/metrics/sdk_exporters/prometheus.md @@ -52,11 +52,12 @@ OpenTelemetry metrics MUST be converted to Prometheus metrics according to the ### Client Libraries -**Status**: [Stable](../../document-status.md) +**Status**: [Development](../../document-status.md) -A Prometheus Exporter SHOULD use -[Prometheus client libraries](https://prometheus.io/docs/instrumenting/clientlibs/) -for serving Prometheus metrics. This allows the Prometheus client to negotiate +A Prometheus Exporter SHOULD use an official [Prometheus client library](https://prometheus.io/docs/instrumenting/clientlibs/) +when one exists for the implementation language for serving Prometheus metrics; +it SHOULD NOT use an unofficial Prometheus client library. +This allows the Prometheus client to negotiate the [format](https://github.com/prometheus/docs/blob/main/docs/instrumenting/exposition_formats.md) of the response using the `Content-Type` header. If a Prometheus client library is used, the OpenTelemetry Prometheus Exporter SHOULD be modeled as a From 3e95ebaeb80ca2a69372a671cf1ed03be06e046a Mon Sep 17 00:00:00 2001 From: Johanna Ojeling Date: Tue, 12 May 2026 14:44:22 +0200 Subject: [PATCH 3/4] [prometheus] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32844a17111..954961b5ceb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ release. - Stabilize sections of Prometheus Metrics Exporter. - Stabilize temporality. ([#5024](https://github.com/open-telemetry/opentelemetry-specification/issues/5024)) - - Reword client libraries. + - Clarify that OTel SDKs should not use unofficial Prometheus clients. ([#4980](https://github.com/open-telemetry/opentelemetry-specification/issues/4980)) - Stabilize port configuration. ([#4985](https://github.com/open-telemetry/opentelemetry-specification/issues/4985)) From e0f1354436eaa048f9779a0fa9cabc4a9c5a8c6a Mon Sep 17 00:00:00 2001 From: Johanna Ojeling Date: Wed, 13 May 2026 12:38:20 +0200 Subject: [PATCH 4/4] [prometheus] Note practical constraints on official Prometheus client use --- specification/metrics/sdk_exporters/prometheus.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/specification/metrics/sdk_exporters/prometheus.md b/specification/metrics/sdk_exporters/prometheus.md index 6e2b54d9a62..0c0f3ca5c1d 100644 --- a/specification/metrics/sdk_exporters/prometheus.md +++ b/specification/metrics/sdk_exporters/prometheus.md @@ -55,8 +55,9 @@ OpenTelemetry metrics MUST be converted to Prometheus metrics according to the **Status**: [Development](../../document-status.md) A Prometheus Exporter SHOULD use an official [Prometheus client library](https://prometheus.io/docs/instrumenting/clientlibs/) -when one exists for the implementation language for serving Prometheus metrics; -it SHOULD NOT use an unofficial Prometheus client library. +when one exists for the implementation language and it is practical to do so +(e.g., dependency concerns) for serving Prometheus metrics; it SHOULD NOT use an +unofficial Prometheus client library. This allows the Prometheus client to negotiate the [format](https://github.com/prometheus/docs/blob/main/docs/instrumenting/exposition_formats.md) of the response using the `Content-Type` header. If a Prometheus client library