Skip to content

Commit 8085d6d

Browse files
authored
feat(deps): upgrade to opentelemetry 0.27 (#181)
> I followed the migration guide described in open-telemetry/opentelemetry-rust#2221
1 parent 0e5912d commit 8085d6d

File tree

4 files changed

+56
-60
lines changed

4 files changed

+56
-60
lines changed

Cargo.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,27 @@ axum = { version = "0.7", default-features = false }
2727
http = "^1"
2828
hyper = "1"
2929
insta = { version = "1.40", features = ["yaml", "redactions"] }
30-
opentelemetry = { version = "0.26", features = [
30+
opentelemetry = { version = "0.27", features = [
3131
"trace",
3232
], default-features = false }
33-
opentelemetry_sdk = { version = "0.26", default-features = false, features = [
33+
opentelemetry_sdk = { version = "0.27", default-features = false, features = [
3434
"rt-tokio",
3535
] }
3636
opentelemetry-aws = { version = "0.14", default-features = false }
37-
opentelemetry-jaeger-propagator = { version = "0.26", default-features = false }
37+
opentelemetry-jaeger-propagator = { version = "0.27", default-features = false }
3838
opentelemetry-resource-detectors = { version = "0.5", default-features = false }
39-
opentelemetry-semantic-conventions = { version = "0.26", default-features = false }
40-
opentelemetry-zipkin = { version = "0.26", default-features = false }
41-
opentelemetry-otlp = { version = "0.26", default-features = false }
42-
opentelemetry-proto = { version = "0.26", default-features = false }
43-
opentelemetry-stdout = { version = "0.26" }
39+
opentelemetry-semantic-conventions = { version = "0.27", default-features = false }
40+
opentelemetry-zipkin = { version = "0.27", default-features = false }
41+
opentelemetry-otlp = { version = "0.27", default-features = false }
42+
opentelemetry-proto = { version = "0.27", default-features = false }
43+
opentelemetry-stdout = { version = "0.27" }
4444
rstest = "0.23"
4545
tokio = { version = "1", default-features = false }
4646
tokio-stream = { version = "0.1", default-features = false }
4747
tonic = { version = "0.12", default-features = false } #should be sync with opentelemetry-proto
4848
tower = { version = "0.5", default-features = false }
4949
tracing = "0.1"
50-
tracing-opentelemetry = "0.27"
50+
tracing-opentelemetry = "0.28"
5151

5252
[profile.dev.package.insta]
5353
opt-level = 3

fake-opentelemetry-collector/src/lib.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::time::{Duration, Instant};
1212

1313
use futures::StreamExt;
1414
use opentelemetry::trace::TracerProvider;
15-
use opentelemetry_otlp::WithExportConfig;
15+
use opentelemetry_otlp::{LogExporter, SpanExporter, WithExportConfig};
1616
use opentelemetry_proto::tonic::collector::logs::v1::logs_service_server::LogsServiceServer;
1717
use opentelemetry_proto::tonic::collector::trace::v1::trace_service_server::TraceServiceServer;
1818
use tokio::sync::mpsc;
@@ -98,30 +98,33 @@ async fn recv_many<T>(rx: &mut Receiver<T>, at_least: usize, timeout: Duration)
9898
pub async fn setup_tracer(fake_server: &FakeCollectorServer) -> opentelemetry_sdk::trace::Tracer {
9999
// if the environment variable is set (in test or in caller), `with_endpoint` value is ignored
100100
std::env::remove_var("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT");
101-
opentelemetry_otlp::new_pipeline()
102-
.tracing()
103-
.with_exporter(
104-
opentelemetry_otlp::new_exporter()
105-
.tonic()
106-
.with_endpoint(fake_server.endpoint()),
101+
102+
opentelemetry_sdk::trace::TracerProvider::builder()
103+
.with_batch_exporter(
104+
SpanExporter::builder()
105+
.with_tonic()
106+
.with_endpoint(fake_server.endpoint())
107+
.build()
108+
.expect("failed to install tracer"),
109+
opentelemetry_sdk::runtime::Tokio,
107110
)
108-
.install_batch(opentelemetry_sdk::runtime::Tokio)
109-
.expect("failed to install tracer")
111+
.build()
110112
.tracer("")
111113
}
112114

113115
pub async fn setup_logger(
114116
fake_server: &FakeCollectorServer,
115117
) -> opentelemetry_sdk::logs::LoggerProvider {
116-
opentelemetry_otlp::new_pipeline()
117-
.logging()
118-
.with_exporter(
119-
opentelemetry_otlp::new_exporter()
120-
.tonic()
121-
.with_endpoint(fake_server.endpoint()),
118+
opentelemetry_sdk::logs::LoggerProvider::builder()
119+
//Install simple so we don't have to wait for batching in tests
120+
.with_simple_exporter(
121+
LogExporter::builder()
122+
.with_tonic()
123+
.with_endpoint(fake_server.endpoint())
124+
.build()
125+
.expect("failed to install logging"),
122126
)
123-
.install_simple() //Install simple so we don't have to wait for batching in tests
124-
.expect("failed to install logging")
127+
.build()
125128
}
126129

127130
#[cfg(test)]

init-tracing-opentelemetry/src/otlp.rs

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
use std::{collections::HashMap, str::FromStr};
22

33
use opentelemetry::trace::TraceError;
4-
use opentelemetry_otlp::SpanExporterBuilder;
4+
use opentelemetry_otlp::{SpanExporter, WithHttpConfig};
55
use opentelemetry_sdk::{trace::Sampler, trace::TracerProvider, Resource};
66
#[cfg(feature = "tls")]
7-
use tonic::transport::ClientTlsConfig;
7+
use {opentelemetry_otlp::WithTonicConfig, tonic::transport::ClientTlsConfig};
88

99
#[must_use]
10-
pub fn identity(
11-
v: opentelemetry_otlp::OtlpTracePipeline<SpanExporterBuilder>,
12-
) -> opentelemetry_otlp::OtlpTracePipeline<SpanExporterBuilder> {
10+
pub fn identity(v: opentelemetry_sdk::trace::Builder) -> opentelemetry_sdk::trace::Builder {
1311
v
1412
}
1513

@@ -19,9 +17,7 @@ pub fn init_tracerprovider<F>(
1917
transform: F,
2018
) -> Result<TracerProvider, TraceError>
2119
where
22-
F: FnOnce(
23-
opentelemetry_otlp::OtlpTracePipeline<SpanExporterBuilder>,
24-
) -> opentelemetry_otlp::OtlpTracePipeline<SpanExporterBuilder>,
20+
F: FnOnce(opentelemetry_sdk::trace::Builder) -> opentelemetry_sdk::trace::Builder,
2521
{
2622
use opentelemetry_otlp::WithExportConfig;
2723

@@ -30,35 +26,34 @@ where
3026
infer_protocol_and_endpoint(maybe_protocol.as_deref(), maybe_endpoint.as_deref());
3127
tracing::debug!(target: "otel::setup", OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = endpoint);
3228
tracing::debug!(target: "otel::setup", OTEL_EXPORTER_OTLP_TRACES_PROTOCOL = protocol);
33-
let exporter: SpanExporterBuilder = match protocol.as_str() {
34-
"http/protobuf" => opentelemetry_otlp::new_exporter()
35-
.http()
29+
let exporter: SpanExporter = match protocol.as_str() {
30+
"http/protobuf" => SpanExporter::builder()
31+
.with_http()
3632
.with_endpoint(endpoint)
3733
.with_headers(read_headers_from_env())
38-
.into(),
34+
.build()?,
3935
#[cfg(feature = "tls")]
40-
"grpc/tls" => opentelemetry_otlp::new_exporter()
41-
.tonic()
36+
"grpc/tls" => SpanExporter::builder()
37+
.with_tonic()
4238
.with_tls_config(ClientTlsConfig::new().with_native_roots())
4339
.with_endpoint(endpoint)
44-
.into(),
45-
_ => opentelemetry_otlp::new_exporter()
46-
.tonic()
40+
.build()?,
41+
_ => SpanExporter::builder()
42+
.with_tonic()
4743
.with_endpoint(endpoint)
48-
.into(),
44+
.build()?,
4945
};
5046

51-
let mut pipeline = opentelemetry_otlp::new_pipeline()
52-
.tracing()
53-
.with_exporter(exporter)
54-
.with_trace_config(
47+
let mut trace_provider: opentelemetry_sdk::trace::Builder = TracerProvider::builder()
48+
.with_config(
5549
opentelemetry_sdk::trace::Config::default()
5650
.with_resource(resource)
5751
.with_sampler(read_sampler_from_env()),
58-
);
59-
pipeline = transform(pipeline);
60-
let provider = pipeline.install_batch(opentelemetry_sdk::runtime::Tokio)?;
61-
Ok(provider)
52+
)
53+
.with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio);
54+
55+
trace_provider = transform(trace_provider);
56+
Ok(trace_provider.build())
6257
}
6358

6459
/// turn a string of "k1=v1,k2=v2,..." into an iterator of (key, value) tuples

init-tracing-opentelemetry/src/stdio.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use opentelemetry::trace::{TraceError, TracerProvider as _};
2-
use opentelemetry::InstrumentationLibrary;
2+
use opentelemetry::InstrumentationScope;
33
use opentelemetry_sdk::trace as sdktrace;
44
use opentelemetry_sdk::trace::BatchSpanProcessor;
55
use opentelemetry_sdk::trace::TracerProvider;
@@ -31,13 +31,11 @@ where
3131
);
3232
provider_builder = transform(provider_builder);
3333
// tracer used in libraries/crates that optionally includes version and schema url
34-
let library = std::sync::Arc::new(
35-
InstrumentationLibrary::builder(env!("CARGO_PKG_NAME"))
36-
.with_version(env!("CARGO_PKG_VERSION"))
37-
.with_schema_url("https://opentelemetry.io/schema/1.0.0")
38-
.build(),
39-
);
40-
Ok(provider_builder.build().library_tracer(library))
34+
let scope = InstrumentationScope::builder(env!("CARGO_PKG_NAME"))
35+
.with_version(env!("CARGO_PKG_VERSION"))
36+
.with_schema_url("https://opentelemetry.io/schema/1.0.0")
37+
.build();
38+
Ok(provider_builder.build().tracer_with_scope(scope))
4139
}
4240

4341
#[derive(Debug, Default)]

0 commit comments

Comments
 (0)