Skip to content

Commit

Permalink
Upgrade opentelemetry-prometheus to 0.28 (#2650)
Browse files Browse the repository at this point in the history
  • Loading branch information
BSteffaniak authored Feb 11, 2025
1 parent f3a375c commit b358202
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 64 deletions.
8 changes: 6 additions & 2 deletions opentelemetry-prometheus/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@

## vNext

- Bump msrv to 1.75.0.
## v0.28.0

- Update `opentelemetry` dependency version to 0.28
- Update `opentelemetry_sdk` dependency version to 0.28
- Update `opentelemetry-semantic-conventions` dependency version to 0.28
- Bump msrv to 1.75.0.

## v0.27.0

- Update `opentelemetry` dependency version to 0.27
- Update `opentelemetry_sdk` dependency version to 0.27
- Update `opentelemetry-semantic-conventions` dependency version to 0.27


## v0.17.0

### Changed
Expand Down Expand Up @@ -66,6 +69,7 @@
## v0.12.0

### Changed

- [Breaking] Add `_total` suffix for all counters [#952](https://github.com/open-telemetry/opentelemetry-rust/pull/952).
- Update to `opentelemetry` v0.19.
- Bump MSRV to 1.57 [#953](https://github.com/open-telemetry/opentelemetry-rust/pull/953).
Expand Down
8 changes: 4 additions & 4 deletions opentelemetry-prometheus/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "opentelemetry-prometheus"
version = "0.27.0"
version = "0.28.0"
description = "Prometheus exporter for OpenTelemetry"
homepage = "https://github.com/open-telemetry/opentelemetry-rust"
repository = "https://github.com/open-telemetry/opentelemetry-rust"
Expand All @@ -21,14 +21,14 @@ rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
once_cell = { version = "1.13" }
opentelemetry = { version = "0.27", default-features = false, features = ["metrics"] }
opentelemetry_sdk = { version = "0.27", default-features = false, features = ["metrics"] }
opentelemetry = { version = "0.28", default-features = false, features = ["metrics"] }
opentelemetry_sdk = { version = "0.28", default-features = false, features = ["metrics"] }
prometheus = "0.13"
protobuf = "2.14"
tracing = {version = ">=0.1.40", default-features = false, optional = true} # optional for opentelemetry internal logging

[dev-dependencies]
opentelemetry-semantic-conventions = { version = "0.27" }
opentelemetry-semantic-conventions = { version = "0.28" }
http-body-util = { version = "0.1" }
hyper = { version = "1.3", features = ["full"] }
hyper-util = { version = "0.1", features = ["full"] }
Expand Down
7 changes: 4 additions & 3 deletions opentelemetry-prometheus/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
use once_cell::sync::{Lazy, OnceCell};
use opentelemetry::{otel_error, otel_warn, InstrumentationScope, Key, Value};
use opentelemetry_sdk::{
error::OTelSdkResult,
metrics::{
data::{self, ResourceMetrics},
reader::MetricReader,
Expand Down Expand Up @@ -157,11 +158,11 @@ impl MetricReader for PrometheusExporter {
self.reader.collect(rm)
}

fn force_flush(&self) -> MetricResult<()> {
fn force_flush(&self) -> OTelSdkResult {
self.reader.force_flush()
}

fn shutdown(&self) -> MetricResult<()> {
fn shutdown(&self) -> OTelSdkResult {
self.reader.shutdown()
}

Expand Down Expand Up @@ -284,7 +285,7 @@ impl prometheus::core::Collector for Collector {
};

let mut metrics = ResourceMetrics {
resource: Resource::empty(),
resource: Resource::builder_empty().build(),
scope_metrics: vec![],
};
if let Err(err) = self.reader.collect(&mut metrics) {
Expand Down
88 changes: 33 additions & 55 deletions opentelemetry-prometheus/tests/integration_test.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
use std::collections::HashSet;
use std::fs;
use std::path::Path;
use std::time::Duration;

use opentelemetry::metrics::{Meter, MeterProvider as _};
use opentelemetry::KeyValue;
use opentelemetry::{InstrumentationScope, Key};
use opentelemetry_prometheus::{ExporterBuilder, ResourceSelector};
use opentelemetry_sdk::metrics::SdkMeterProvider;
use opentelemetry_sdk::resource::{
EnvResourceDetector, SdkProvidedResourceDetector, TelemetryResourceDetector,
};
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions::resource::{SERVICE_NAME, TELEMETRY_SDK_VERSION};
use prometheus::{Encoder, TextEncoder};
Expand Down Expand Up @@ -360,26 +356,20 @@ fn prometheus_exporter_integration() {
let exporter = tc.builder.with_registry(registry.clone()).build().unwrap();

let res = if tc.empty_resource {
Resource::empty()
Resource::builder_empty().build()
} else {
Resource::from_detectors(
Duration::from_secs(0),
vec![
Box::new(SdkProvidedResourceDetector),
Box::new(EnvResourceDetector::new()),
Box::new(TelemetryResourceDetector),
],
)
.merge(&mut Resource::new(
vec![
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
]
.into_iter()
.chain(tc.custom_resource_attrs.into_iter()),
))
Resource::builder()
.with_attributes(
vec![
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
]
.into_iter()
.chain(tc.custom_resource_attrs.into_iter()),
)
.build()
};

let provider = SdkMeterProvider::builder()
Expand Down Expand Up @@ -431,20 +421,14 @@ fn multiple_scopes() {
.build()
.unwrap();

let resource = Resource::from_detectors(
Duration::from_secs(0),
vec![
Box::new(SdkProvidedResourceDetector),
Box::new(EnvResourceDetector::new()),
Box::new(TelemetryResourceDetector),
],
)
.merge(&mut Resource::new(vec![
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
]));
let resource = Resource::builder()
.with_attributes([
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
])
.build();

let provider = SdkMeterProvider::builder()
.with_reader(exporter)
Expand Down Expand Up @@ -781,24 +765,18 @@ fn duplicate_metrics() {
let registry = prometheus::Registry::new();
let exporter = tc.builder.with_registry(registry.clone()).build().unwrap();

let resource = Resource::from_detectors(
Duration::from_secs(0),
vec![
Box::new(SdkProvidedResourceDetector),
Box::new(EnvResourceDetector::new()),
Box::new(TelemetryResourceDetector),
],
)
.merge(&mut Resource::new(
vec![
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
]
.into_iter()
.chain(tc.custom_resource_attrs.into_iter()),
));
let resource = Resource::builder()
.with_attributes(
vec![
// always specify service.name because the default depends on the running OS
KeyValue::new(SERVICE_NAME, "prometheus_test"),
// Overwrite the semconv.TelemetrySDKVersionKey value so we don't need to update every version
KeyValue::new(TELEMETRY_SDK_VERSION, "latest"),
]
.into_iter()
.chain(tc.custom_resource_attrs.into_iter()),
)
.build();

let provider = SdkMeterProvider::builder()
.with_resource(resource)
Expand Down

0 comments on commit b358202

Please sign in to comment.