Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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