Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d182145

Browse files
committedNov 12, 2024··
chore: update opentelemetry dependencies to 0.27.0
1 parent 95f9ab9 commit d182145

File tree

7 files changed

+103
-104
lines changed

7 files changed

+103
-104
lines changed
 

‎Cargo.toml

+7-7
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ metrics = ["opentelemetry/metrics","opentelemetry_sdk/metrics", "smallvec"]
2323
metrics_gauge_unstable = ["opentelemetry/otel_unstable"]
2424

2525
[dependencies]
26-
opentelemetry = { version = "0.26", default-features = false, features = ["trace"] }
27-
opentelemetry_sdk = { version = "0.26", default-features = false, features = ["trace"] }
26+
opentelemetry = { version = "0.27.0", default-features = false, features = ["trace"] }
27+
opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace"] }
2828
tracing = { version = "0.1.35", default-features = false, features = ["std"] }
2929
tracing-core = "0.1.28"
3030
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
@@ -41,11 +41,11 @@ smallvec = { version = "1.0", optional = true }
4141
[dev-dependencies]
4242
async-trait = "0.1.56"
4343
criterion = { version = "0.5.1", default-features = false, features = ["html_reports"] }
44-
opentelemetry = { version = "0.26", features = ["trace", "metrics"] }
45-
opentelemetry_sdk = { version = "0.26", default-features = false, features = ["trace", "rt-tokio"] }
46-
opentelemetry-stdout = { version = "0.26", features = ["trace", "metrics"] }
47-
opentelemetry-otlp = { version = "0.26", features = ["metrics"] }
48-
opentelemetry-semantic-conventions = { version = "0.26", features = ["semconv_experimental"] }
44+
opentelemetry = { version = "0.27.0", features = ["trace", "metrics"] }
45+
opentelemetry_sdk = { version = "0.27.0", default-features = false, features = ["trace", "rt-tokio"] }
46+
opentelemetry-stdout = { version = "0.27.0", features = ["trace", "metrics"] }
47+
opentelemetry-otlp = { version = "0.27.0", features = ["metrics"] }
48+
opentelemetry-semantic-conventions = { version = "0.27.0", features = ["semconv_experimental"] }
4949
futures-util = { version = "0.3.17", default-features = false }
5050
tokio = { version = "1", features = ["full"] }
5151
tokio-stream = "0.1"

‎benches/metrics.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use criterion::{criterion_group, criterion_main, Criterion};
2-
use opentelemetry::metrics::noop::NoopMeterProvider;
32
#[cfg(not(target_os = "windows"))]
43
use pprof::criterion::{Output, PProfProfiler};
54
use tracing_opentelemetry::MetricsLayer;

‎examples/opentelemetry-error.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use std::{
66
time::{Duration, SystemTime},
77
};
88

9-
use opentelemetry::{global, trace::TracerProvider};
10-
9+
use opentelemetry::global;
10+
use opentelemetry::trace::TracerProvider as _;
1111
use opentelemetry_sdk::{
1212
self as sdk,
1313
export::trace::{ExportResult, SpanExporter},
@@ -59,9 +59,8 @@ fn double_failable_work(fail: bool) -> Result<&'static str, Error> {
5959
fn main() -> Result<(), Box<dyn StdError + Send + Sync + 'static>> {
6060
let builder = sdk::trace::TracerProvider::builder().with_simple_exporter(WriterExporter);
6161
let provider = builder.build();
62-
let tracer = provider
63-
.tracer_builder("opentelemetry-write-exporter")
64-
.build();
62+
let tracer = provider.tracer("opentelemetry-write-exporter");
63+
6564
global::set_tracer_provider(provider);
6665

6766
let opentelemetry = tracing_opentelemetry::layer().with_tracer(tracer);

‎examples/opentelemetry-otlp.rs

+46-46
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
use opentelemetry::{global, trace::TracerProvider, Key, KeyValue};
1+
use opentelemetry::{global, trace::TracerProvider as _, KeyValue};
22
use opentelemetry_sdk::{
3-
metrics::{
4-
reader::DefaultTemporalitySelector, Aggregation, Instrument, MeterProviderBuilder,
5-
PeriodicReader, SdkMeterProvider, Stream,
6-
},
3+
metrics::{MeterProviderBuilder, PeriodicReader, SdkMeterProvider},
74
runtime,
8-
trace::{BatchConfig, RandomIdGenerator, Sampler, Tracer},
5+
trace::{RandomIdGenerator, Sampler, Tracer, TracerProvider},
96
Resource,
107
};
118
use opentelemetry_semantic_conventions::{
@@ -30,9 +27,10 @@ fn resource() -> Resource {
3027

3128
// Construct MeterProvider for MetricsLayer
3229
fn init_meter_provider() -> SdkMeterProvider {
33-
let exporter = opentelemetry_otlp::new_exporter()
34-
.tonic()
35-
.build_metrics_exporter(Box::new(DefaultTemporalitySelector::new()))
30+
let exporter = opentelemetry_otlp::MetricExporter::builder()
31+
.with_tonic()
32+
.with_temporality(opentelemetry_sdk::metrics::Temporality::default())
33+
.build()
3634
.unwrap();
3735

3836
let reader = PeriodicReader::builder(exporter, runtime::Tokio)
@@ -41,46 +39,46 @@ fn init_meter_provider() -> SdkMeterProvider {
4139

4240
// For debugging in development
4341
let stdout_reader = PeriodicReader::builder(
44-
opentelemetry_stdout::MetricsExporter::default(),
42+
opentelemetry_stdout::MetricExporter::default(),
4543
runtime::Tokio,
4644
)
4745
.build();
4846

4947
// Rename foo metrics to foo_named and drop key_2 attribute
50-
let view_foo = |instrument: &Instrument| -> Option<Stream> {
51-
if instrument.name == "foo" {
52-
Some(
53-
Stream::new()
54-
.name("foo_named")
55-
.allowed_attribute_keys([Key::from("key_1")]),
56-
)
57-
} else {
58-
None
59-
}
60-
};
61-
62-
// Set Custom histogram boundaries for baz metrics
63-
let view_baz = |instrument: &Instrument| -> Option<Stream> {
64-
if instrument.name == "baz" {
65-
Some(
66-
Stream::new()
67-
.name("baz")
68-
.aggregation(Aggregation::ExplicitBucketHistogram {
69-
boundaries: vec![0.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0],
70-
record_min_max: true,
71-
}),
72-
)
73-
} else {
74-
None
75-
}
76-
};
48+
// let view_foo = |instrument: &Instrument| -> Option<Stream> {
49+
// if instrument.name == "foo" {
50+
// Some(
51+
// Stream::new()
52+
// .name("foo_named")
53+
// .allowed_attribute_keys([Key::from("key_1")]),
54+
// )
55+
// } else {
56+
// None
57+
// }
58+
// };
59+
60+
// // Set Custom histogram boundaries for baz metrics
61+
// let view_baz = |instrument: &Instrument| -> Option<Stream> {
62+
// if instrument.name == "baz" {
63+
// Some(
64+
// Stream::new()
65+
// .name("baz")
66+
// .aggregation(Aggregation::ExplicitBucketHistogram {
67+
// boundaries: vec![0.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0],
68+
// record_min_max: true,
69+
// }),
70+
// )
71+
// } else {
72+
// None
73+
// }
74+
// };
7775

7876
let meter_provider = MeterProviderBuilder::default()
7977
.with_resource(resource())
8078
.with_reader(reader)
8179
.with_reader(stdout_reader)
82-
.with_view(view_foo)
83-
.with_view(view_baz)
80+
// .with_view(view_foo)
81+
// .with_view(view_baz)
8482
.build();
8583

8684
global::set_meter_provider(meter_provider.clone());
@@ -90,9 +88,13 @@ fn init_meter_provider() -> SdkMeterProvider {
9088

9189
// Construct Tracer for OpenTelemetryLayer
9290
fn init_tracer() -> Tracer {
93-
let provider = opentelemetry_otlp::new_pipeline()
94-
.tracing()
95-
.with_trace_config(
91+
let exporter = opentelemetry_otlp::SpanExporter::builder()
92+
.with_tonic()
93+
.build()
94+
.unwrap();
95+
96+
let provider = TracerProvider::builder()
97+
.with_config(
9698
opentelemetry_sdk::trace::Config::default()
9799
// Customize sampling strategy
98100
.with_sampler(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased(
@@ -102,10 +104,8 @@ fn init_tracer() -> Tracer {
102104
.with_id_generator(RandomIdGenerator::default())
103105
.with_resource(resource()),
104106
)
105-
.with_batch_config(BatchConfig::default())
106-
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
107-
.install_batch(runtime::Tokio)
108-
.unwrap();
107+
.with_batch_exporter(exporter, runtime::Tokio)
108+
.build();
109109

110110
global::set_tracer_provider(provider.clone());
111111
provider.tracer("tracing-otel-subscriber")

‎src/layer.rs

+17-13
Original file line numberDiff line numberDiff line change
@@ -536,17 +536,19 @@ where
536536
/// ```no_run
537537
/// use tracing_opentelemetry::OpenTelemetryLayer;
538538
/// use tracing_subscriber::layer::SubscriberExt;
539-
/// use opentelemetry::trace::TracerProvider;
539+
/// use opentelemetry::trace::TracerProvider as _;
540540
/// use tracing_subscriber::Registry;
541541
///
542542
/// // Create an OTLP pipeline exporter for a `trace_demo` service.
543543
///
544-
/// let otlp_exporter = opentelemetry_otlp::new_exporter().tonic();
545-
/// let tracer = opentelemetry_otlp::new_pipeline()
546-
/// .tracing()
547-
/// .with_exporter(otlp_exporter)
548-
/// .install_simple()
549-
/// .unwrap()
544+
/// let otlp_exporter = opentelemetry_otlp::SpanExporter::builder()
545+
/// .with_tonic()
546+
/// .build()
547+
/// .unwrap();
548+
///
549+
/// let tracer = opentelemetry_sdk::trace::TracerProvider::builder()
550+
/// .with_simple_exporter(otlp_exporter)
551+
/// .build()
550552
/// .tracer("trace_demo");
551553
///
552554
/// // Create a layer with the configured tracer
@@ -591,12 +593,14 @@ where
591593
///
592594
/// // Create an OTLP pipeline exporter for a `trace_demo` service.
593595
///
594-
/// let otlp_exporter = opentelemetry_otlp::new_exporter().tonic();
595-
/// let tracer = opentelemetry_otlp::new_pipeline()
596-
/// .tracing()
597-
/// .with_exporter(otlp_exporter)
598-
/// .install_simple()
599-
/// .unwrap()
596+
/// let otlp_exporter = opentelemetry_otlp::SpanExporter::builder()
597+
/// .with_tonic()
598+
/// .build()
599+
/// .unwrap();
600+
///
601+
/// let tracer = opentelemetry_sdk::trace::TracerProvider::builder()
602+
/// .with_simple_exporter(otlp_exporter)
603+
/// .build()
600604
/// .tracer("trace_demo");
601605
///
602606
/// // Create a layer with the configured tracer

‎src/metrics.rs

+11-12
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use tracing_core::{Field, Interest, Metadata};
66
use opentelemetry::metrics::Gauge;
77
use opentelemetry::{
88
metrics::{Counter, Histogram, Meter, MeterProvider, UpDownCounter},
9-
KeyValue, Value,
9+
InstrumentationScope, KeyValue, Value,
1010
};
1111
use tracing_subscriber::{
1212
filter::Filtered,
@@ -98,47 +98,47 @@ impl Instruments {
9898
update_or_insert(
9999
&self.u64_counter,
100100
metric_name,
101-
|| meter.u64_counter(metric_name).init(),
101+
|| meter.u64_counter(metric_name).build(),
102102
|ctr| ctr.add(value, attributes),
103103
);
104104
}
105105
InstrumentType::CounterF64(value) => {
106106
update_or_insert(
107107
&self.f64_counter,
108108
metric_name,
109-
|| meter.f64_counter(metric_name).init(),
109+
|| meter.f64_counter(metric_name).build(),
110110
|ctr| ctr.add(value, attributes),
111111
);
112112
}
113113
InstrumentType::UpDownCounterI64(value) => {
114114
update_or_insert(
115115
&self.i64_up_down_counter,
116116
metric_name,
117-
|| meter.i64_up_down_counter(metric_name).init(),
117+
|| meter.i64_up_down_counter(metric_name).build(),
118118
|ctr| ctr.add(value, attributes),
119119
);
120120
}
121121
InstrumentType::UpDownCounterF64(value) => {
122122
update_or_insert(
123123
&self.f64_up_down_counter,
124124
metric_name,
125-
|| meter.f64_up_down_counter(metric_name).init(),
125+
|| meter.f64_up_down_counter(metric_name).build(),
126126
|ctr| ctr.add(value, attributes),
127127
);
128128
}
129129
InstrumentType::HistogramU64(value) => {
130130
update_or_insert(
131131
&self.u64_histogram,
132132
metric_name,
133-
|| meter.u64_histogram(metric_name).init(),
133+
|| meter.u64_histogram(metric_name).build(),
134134
|rec| rec.record(value, attributes),
135135
);
136136
}
137137
InstrumentType::HistogramF64(value) => {
138138
update_or_insert(
139139
&self.f64_histogram,
140140
metric_name,
141-
|| meter.f64_histogram(metric_name).init(),
141+
|| meter.f64_histogram(metric_name).build(),
142142
|rec| rec.record(value, attributes),
143143
);
144144
}
@@ -395,11 +395,10 @@ where
395395
where
396396
M: MeterProvider,
397397
{
398-
let meter = meter_provider.versioned_meter(
399-
INSTRUMENTATION_LIBRARY_NAME,
400-
Some(CARGO_PKG_VERSION),
401-
None::<&'static str>,
402-
None,
398+
let meter = meter_provider.meter_with_scope(
399+
InstrumentationScope::builder(INSTRUMENTATION_LIBRARY_NAME)
400+
.with_version(CARGO_PKG_VERSION)
401+
.build(),
403402
);
404403

405404
let layer = InstrumentLayer {

‎tests/metrics_publishing.rs

+18-20
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use opentelemetry::{metrics::MetricsError, KeyValue};
1+
use opentelemetry::KeyValue;
22
use opentelemetry_sdk::{
33
metrics::{
44
data::{self, Gauge, Histogram, Sum},
5-
reader::{MetricReader, TemporalitySelector},
6-
InstrumentKind, ManualReader, MeterProviderBuilder, SdkMeterProvider,
5+
reader::MetricReader,
6+
InstrumentKind, ManualReader, MeterProviderBuilder, MetricError, SdkMeterProvider,
77
},
88
Resource,
99
};
@@ -542,28 +542,29 @@ struct TestReader {
542542
inner: Arc<ManualReader>,
543543
}
544544

545-
impl TemporalitySelector for TestReader {
546-
fn temporality(&self, kind: InstrumentKind) -> opentelemetry_sdk::metrics::data::Temporality {
547-
self.inner.temporality(kind)
548-
}
549-
}
550-
551545
impl MetricReader for TestReader {
552546
fn register_pipeline(&self, pipeline: std::sync::Weak<opentelemetry_sdk::metrics::Pipeline>) {
553547
self.inner.register_pipeline(pipeline);
554548
}
555549

556-
fn collect(&self, rm: &mut data::ResourceMetrics) -> opentelemetry::metrics::Result<()> {
550+
fn collect(
551+
&self,
552+
rm: &mut data::ResourceMetrics,
553+
) -> opentelemetry_sdk::metrics::MetricResult<()> {
557554
self.inner.collect(rm)
558555
}
559556

560-
fn force_flush(&self) -> opentelemetry::metrics::Result<()> {
557+
fn force_flush(&self) -> opentelemetry_sdk::metrics::MetricResult<()> {
561558
self.inner.force_flush()
562559
}
563560

564-
fn shutdown(&self) -> opentelemetry::metrics::Result<()> {
561+
fn shutdown(&self) -> opentelemetry_sdk::metrics::MetricResult<()> {
565562
self.inner.shutdown()
566563
}
564+
565+
fn temporality(&self, kind: InstrumentKind) -> opentelemetry_sdk::metrics::Temporality {
566+
self.inner.temporality(kind)
567+
}
567568
}
568569

569570
struct TestExporter<T> {
@@ -579,7 +580,7 @@ impl<T> TestExporter<T>
579580
where
580581
T: Debug + PartialEq + Copy + std::iter::Sum + 'static,
581582
{
582-
fn export(&self) -> Result<(), MetricsError> {
583+
fn export(&self) -> Result<(), MetricError> {
583584
let mut rm = data::ResourceMetrics {
584585
resource: Resource::default(),
585586
scope_metrics: Vec::new(),
@@ -589,11 +590,8 @@ where
589590
assert!(!rm.scope_metrics.is_empty());
590591

591592
rm.scope_metrics.into_iter().for_each(|scope_metrics| {
592-
assert_eq!(scope_metrics.scope.name, INSTRUMENTATION_LIBRARY_NAME);
593-
assert_eq!(
594-
scope_metrics.scope.version.unwrap().as_ref(),
595-
CARGO_PKG_VERSION
596-
);
593+
assert_eq!(scope_metrics.scope.name(), INSTRUMENTATION_LIBRARY_NAME);
594+
assert_eq!(scope_metrics.scope.version().unwrap(), CARGO_PKG_VERSION);
597595

598596
scope_metrics.metrics.into_iter().for_each(|metric| {
599597
assert_eq!(metric.name, self.expected_metric_name);
@@ -671,8 +669,8 @@ fn compare_attributes(expected: &Vec<KeyValue>, actual: &Vec<KeyValue>) -> bool
671669
let mut expected = expected.clone();
672670
let mut actual = actual.clone();
673671

674-
expected.sort();
675-
actual.sort();
672+
expected.sort_unstable_by(|a, b| a.key.cmp(&b.key));
673+
actual.sort_unstable_by(|a, b| a.key.cmp(&b.key));
676674

677675
expected == actual
678676
}

0 commit comments

Comments
 (0)
Please sign in to comment.