Skip to content

Commit 76771cf

Browse files
authored
update opentelemetry to 0.20.0 (#36)
## Motivation Update opentelemetry dependency to use the latest opentelemetry from the tracing ecosystem. ## Solution Modified code affected by opentelemetry changes
1 parent 7b77d33 commit 76771cf

File tree

6 files changed

+167
-179
lines changed

6 files changed

+167
-179
lines changed

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ default = ["tracing-log", "metrics"]
2525
metrics = ["opentelemetry/metrics"]
2626

2727
[dependencies]
28-
opentelemetry = { version = "0.19.0", default-features = false, features = ["trace"] }
28+
opentelemetry = { version = "0.20.0", default-features = false, features = ["trace"] }
2929
tracing = { version = "0.1.35", default-features = false, features = ["std"] }
3030
tracing-core = "0.1.28"
3131
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
@@ -39,7 +39,8 @@ thiserror = { version = "1.0.31", optional = true }
3939
[dev-dependencies]
4040
async-trait = "0.1.56"
4141
criterion = { version = "0.4.0", default-features = false, features = ["html_reports"] }
42-
opentelemetry-jaeger = "0.18.0"
42+
opentelemetry-jaeger = "0.19.0"
43+
opentelemetry-stdout = { version = "0.1.0", features = ["trace"] }
4344
pprof = { version = "0.11.1", features = ["flamegraph", "criterion"] }
4445
futures-util = { version = "0.3", default-features = false }
4546
tokio = { version = "1", features = ["full"] }

src/layer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1160,10 +1160,10 @@ mod tests {
11601160
fn trace_id_from_existing_context() {
11611161
let tracer = TestTracer(Arc::new(Mutex::new(None)));
11621162
let subscriber = tracing_subscriber::registry().with(layer().with_tracer(tracer.clone()));
1163-
let trace_id = otel::TraceId::from(42u128.to_be_bytes());
1163+
let trace_id = otel::TraceId::from(42u128);
11641164
let existing_cx = OtelContext::current_with_span(TestSpan(otel::SpanContext::new(
11651165
trace_id,
1166-
otel::SpanId::from(1u64.to_be_bytes()),
1166+
otel::SpanId::from(1u64),
11671167
TraceFlags::default(),
11681168
false,
11691169
Default::default(),

src/lib.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,17 @@
5151
//! ## Examples
5252
//!
5353
//! ```
54-
//! use opentelemetry::sdk::export::trace::stdout;
54+
//! use opentelemetry::sdk::trace::TracerProvider;
55+
//! use opentelemetry::trace::{Tracer, TracerProvider as _};
5556
//! use tracing::{error, span};
5657
//! use tracing_subscriber::layer::SubscriberExt;
5758
//! use tracing_subscriber::Registry;
5859
//!
59-
//! // Create a new OpenTelemetry pipeline
60-
//! let tracer = stdout::new_pipeline().install_simple();
60+
//! // Create a new OpenTelemetry trace pipeline that prints to stdout
61+
//! let provider = TracerProvider::builder()
62+
//! .with_simple_exporter(opentelemetry_stdout::SpanExporter::default())
63+
//! .build();
64+
//! let tracer = provider.tracer("readme_example");
6165
//!
6266
//! // Create a tracing layer with the configured tracer
6367
//! let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);

src/metrics.rs

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@ use std::{collections::HashMap, fmt, sync::RwLock};
22
use tracing::{field::Visit, Subscriber};
33
use tracing_core::Field;
44

5-
use opentelemetry::{
6-
metrics::{Counter, Histogram, Meter, MeterProvider, UpDownCounter},
7-
sdk::metrics::controllers::BasicController,
8-
Context as OtelContext,
9-
};
5+
use opentelemetry::metrics::{Counter, Histogram, Meter, MeterProvider, UpDownCounter};
106
use tracing_subscriber::{layer::Context, registry::LookupSpan, Layer};
117

128
const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
@@ -44,7 +40,6 @@ pub(crate) enum InstrumentType {
4440
impl Instruments {
4541
pub(crate) fn update_metric(
4642
&self,
47-
cx: &OtelContext,
4843
meter: &Meter,
4944
instrument_type: InstrumentType,
5045
metric_name: &'static str,
@@ -78,55 +73,55 @@ impl Instruments {
7873
&self.u64_counter,
7974
metric_name,
8075
|| meter.u64_counter(metric_name).init(),
81-
|ctr| ctr.add(cx, value, &[]),
76+
|ctr| ctr.add(value, &[]),
8277
);
8378
}
8479
InstrumentType::CounterF64(value) => {
8580
update_or_insert(
8681
&self.f64_counter,
8782
metric_name,
8883
|| meter.f64_counter(metric_name).init(),
89-
|ctr| ctr.add(cx, value, &[]),
84+
|ctr| ctr.add(value, &[]),
9085
);
9186
}
9287
InstrumentType::UpDownCounterI64(value) => {
9388
update_or_insert(
9489
&self.i64_up_down_counter,
9590
metric_name,
9691
|| meter.i64_up_down_counter(metric_name).init(),
97-
|ctr| ctr.add(cx, value, &[]),
92+
|ctr| ctr.add(value, &[]),
9893
);
9994
}
10095
InstrumentType::UpDownCounterF64(value) => {
10196
update_or_insert(
10297
&self.f64_up_down_counter,
10398
metric_name,
10499
|| meter.f64_up_down_counter(metric_name).init(),
105-
|ctr| ctr.add(cx, value, &[]),
100+
|ctr| ctr.add(value, &[]),
106101
);
107102
}
108103
InstrumentType::HistogramU64(value) => {
109104
update_or_insert(
110105
&self.u64_histogram,
111106
metric_name,
112107
|| meter.u64_histogram(metric_name).init(),
113-
|rec| rec.record(cx, value, &[]),
108+
|rec| rec.record(value, &[]),
114109
);
115110
}
116111
InstrumentType::HistogramI64(value) => {
117112
update_or_insert(
118113
&self.i64_histogram,
119114
metric_name,
120115
|| meter.i64_histogram(metric_name).init(),
121-
|rec| rec.record(cx, value, &[]),
116+
|rec| rec.record(value, &[]),
122117
);
123118
}
124119
InstrumentType::HistogramF64(value) => {
125120
update_or_insert(
126121
&self.f64_histogram,
127122
metric_name,
128123
|| meter.f64_histogram(metric_name).init(),
129-
|rec| rec.record(cx, value, &[]),
124+
|rec| rec.record(value, &[]),
130125
);
131126
}
132127
};
@@ -144,18 +139,15 @@ impl<'a> Visit for MetricVisitor<'a> {
144139
}
145140

146141
fn record_u64(&mut self, field: &Field, value: u64) {
147-
let cx = OtelContext::current();
148142
if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) {
149143
self.instruments.update_metric(
150-
&cx,
151144
self.meter,
152145
InstrumentType::CounterU64(value),
153146
metric_name,
154147
);
155148
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) {
156149
if value <= I64_MAX {
157150
self.instruments.update_metric(
158-
&cx,
159151
self.meter,
160152
InstrumentType::UpDownCounterI64(value as i64),
161153
metric_name,
@@ -170,7 +162,6 @@ impl<'a> Visit for MetricVisitor<'a> {
170162
}
171163
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) {
172164
self.instruments.update_metric(
173-
&cx,
174165
self.meter,
175166
InstrumentType::HistogramU64(value),
176167
metric_name,
@@ -179,24 +170,20 @@ impl<'a> Visit for MetricVisitor<'a> {
179170
}
180171

181172
fn record_f64(&mut self, field: &Field, value: f64) {
182-
let cx = OtelContext::current();
183173
if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) {
184174
self.instruments.update_metric(
185-
&cx,
186175
self.meter,
187176
InstrumentType::CounterF64(value),
188177
metric_name,
189178
);
190179
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) {
191180
self.instruments.update_metric(
192-
&cx,
193181
self.meter,
194182
InstrumentType::UpDownCounterF64(value),
195183
metric_name,
196184
);
197185
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) {
198186
self.instruments.update_metric(
199-
&cx,
200187
self.meter,
201188
InstrumentType::HistogramF64(value),
202189
metric_name,
@@ -205,24 +192,20 @@ impl<'a> Visit for MetricVisitor<'a> {
205192
}
206193

207194
fn record_i64(&mut self, field: &Field, value: i64) {
208-
let cx = OtelContext::current();
209195
if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_MONOTONIC_COUNTER) {
210196
self.instruments.update_metric(
211-
&cx,
212197
self.meter,
213198
InstrumentType::CounterU64(value as u64),
214199
metric_name,
215200
);
216201
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_COUNTER) {
217202
self.instruments.update_metric(
218-
&cx,
219203
self.meter,
220204
InstrumentType::UpDownCounterI64(value),
221205
metric_name,
222206
);
223207
} else if let Some(metric_name) = field.name().strip_prefix(METRIC_PREFIX_HISTOGRAM) {
224208
self.instruments.update_metric(
225-
&cx,
226209
self.meter,
227210
InstrumentType::HistogramI64(value),
228211
metric_name,
@@ -246,14 +229,14 @@ impl<'a> Visit for MetricVisitor<'a> {
246229
/// use tracing_opentelemetry::MetricsLayer;
247230
/// use tracing_subscriber::layer::SubscriberExt;
248231
/// use tracing_subscriber::Registry;
249-
/// # use opentelemetry::sdk::metrics::controllers::BasicController;
232+
/// # use opentelemetry::sdk::metrics::MeterProvider;
250233
///
251-
/// // Constructing a BasicController is out-of-scope for the docs here, but there
234+
/// // Constructing a MeterProvider is out-of-scope for the docs here, but there
252235
/// // are examples in the opentelemetry repository. See:
253-
/// // https://github.com/open-telemetry/opentelemetry-rust/blob/d4b9befea04bcc7fc19319a6ebf5b5070131c486/examples/basic-otlp/src/main.rs#L35-L52
254-
/// # let controller: BasicController = unimplemented!();
236+
/// // https://github.com/open-telemetry/opentelemetry-rust/blob/dfeac078ff7853e7dc814778524b93470dfa5c9c/examples/metrics-basic/src/main.rs#L7
237+
/// # let meter_provider: MeterProvider = unimplemented!();
255238
///
256-
/// let opentelemetry_metrics = MetricsLayer::new(controller);
239+
/// let opentelemetry_metrics = MetricsLayer::new(meter_provider);
257240
/// let subscriber = Registry::default().with(opentelemetry_metrics);
258241
/// tracing::subscriber::set_global_default(subscriber).unwrap();
259242
/// ```
@@ -343,9 +326,16 @@ pub struct MetricsLayer {
343326

344327
impl MetricsLayer {
345328
/// Create a new instance of MetricsLayer.
346-
pub fn new(controller: BasicController) -> Self {
347-
let meter =
348-
controller.versioned_meter(INSTRUMENTATION_LIBRARY_NAME, Some(CARGO_PKG_VERSION), None);
329+
pub fn new<M>(meter_provider: M) -> Self
330+
where
331+
M: MeterProvider,
332+
{
333+
let meter = meter_provider.versioned_meter(
334+
INSTRUMENTATION_LIBRARY_NAME,
335+
Some(CARGO_PKG_VERSION),
336+
None::<&'static str>,
337+
None,
338+
);
349339
MetricsLayer {
350340
meter,
351341
instruments: Default::default(),

src/tracer.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ impl PreSampledTracer for Tracer {
8888
builder.span_kind.as_ref().unwrap_or(&SpanKind::Internal),
8989
builder.attributes.as_ref().unwrap_or(&OrderMap::default()),
9090
builder.links.as_deref().unwrap_or(&[]),
91-
self.instrumentation_library(),
9291
));
9392

9493
process_sampling_result(
@@ -169,7 +168,7 @@ mod tests {
169168
let provider = TracerProvider::default();
170169
let tracer = provider.tracer("test");
171170
let mut builder = SpanBuilder::from_name("empty".to_string());
172-
builder.span_id = Some(SpanId::from(1u64.to_be_bytes()));
171+
builder.span_id = Some(SpanId::from(1u64));
173172
builder.trace_id = None;
174173
let parent_cx = OtelContext::new();
175174
let cx = tracer.sampled_context(&mut OtelData { builder, parent_cx });
@@ -224,8 +223,8 @@ mod tests {
224223

225224
fn span_context(trace_flags: TraceFlags, is_remote: bool) -> SpanContext {
226225
SpanContext::new(
227-
TraceId::from(1u128.to_be_bytes()),
228-
SpanId::from(1u64.to_be_bytes()),
226+
TraceId::from(1u128),
227+
SpanId::from(1u64),
229228
trace_flags,
230229
is_remote,
231230
Default::default(),

0 commit comments

Comments
 (0)