Skip to content

Commit ffe0d4a

Browse files
authored
Merge branch 'main' into value-map-interface-change
2 parents 1f54f90 + a736604 commit ffe0d4a

File tree

107 files changed

+1886
-2163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+1886
-2163
lines changed

CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ For a deeper discussion, see:
140140

141141
Currently, the Opentelemetry Rust SDK has two ways to handle errors. In the situation where errors are not allowed to return. One should call global error handler to process the errors. Otherwise, one should return the errors.
142142

143-
The Opentelemetry Rust SDK comes with an error type `opentelemetry::Error`. For different function, one error has been defined. All error returned by trace module MUST be wrapped in `opentelemetry::trace::TraceError`. All errors returned by metrics module MUST be wrapped in `opentelemetry::metrics::MetricsError`. All errors returned by logs module MUST be wrapped in `opentelemetry::logs::LogsError`.
143+
The Opentelemetry Rust SDK comes with an error type `opentelemetry::Error`. For different function, one error has been defined. All error returned by trace module MUST be wrapped in `opentelemetry::trace::TraceError`. All errors returned by metrics module MUST be wrapped in `opentelemetry::metrics::MetricError`. All errors returned by logs module MUST be wrapped in `opentelemetry::logs::LogsError`.
144144

145145
For users that want to implement their own exporters. It's RECOMMENDED to wrap all errors from the exporter into a crate-level error type, and implement `ExporterError` trait.
146146

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ hyper-util = "0.1"
3030
log = "0.4.21"
3131
once_cell = "1.13"
3232
ordered-float = "4.0"
33-
pin-project-lite = "0.2"
33+
pin-project-lite = "=0.2.14" # 0.2.15 is failing for cargo-check-external-types
3434
prost = "0.13"
3535
prost-build = "0.13"
3636
prost-types = "0.13"

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,12 @@ you're more than welcome to participate!
198198
* [Harold Dost](https://github.com/hdost)
199199
* [Julian Tescher](https://github.com/jtescher)
200200
* [Lalit Kumar Bhasin](https://github.com/lalitb)
201+
* [Utkarsh Umesan Pillai](https://github.com/utpilla)
201202
* [Zhongyang Wu](https://github.com/TommyCpp)
202203

203204
### Approvers
204205

205206
* [Shaun Cox](https://github.com/shaun-cox)
206-
* [Utkarsh Umesan Pillai](https://github.com/utpilla)
207207

208208
### Emeritus
209209

examples/metrics-advanced/src/main.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
4545
};
4646

4747
// Build exporter using Delta Temporality.
48-
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
48+
let exporter = opentelemetry_stdout::MetricExporterBuilder::default()
4949
.with_temporality(Temporality::Delta)
5050
.build();
5151

@@ -77,7 +77,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
7777
.f64_histogram("my_histogram")
7878
.with_unit("ms")
7979
.with_description("My histogram example description")
80-
.init();
80+
.build();
8181

8282
// Record measurements using the histogram instrument.
8383
histogram.record(
@@ -91,7 +91,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9191
);
9292

9393
// Example 2 - Drop unwanted attributes using view.
94-
let counter = meter.u64_counter("my_counter").init();
94+
let counter = meter.u64_counter("my_counter").build();
9595

9696
// Record measurements using the Counter instrument.
9797
// Though we are passing 4 attributes here, only 1 will be used
@@ -115,7 +115,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
115115
.f64_histogram("my_second_histogram")
116116
.with_unit("ms")
117117
.with_description("My histogram example description")
118-
.init();
118+
.build();
119119

120120
// Record measurements using the histogram instrument.
121121
// The values recorded are in the range of 1.2 to 1.5, warranting

examples/metrics-basic/src/main.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::error::Error;
66
use std::vec;
77

88
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
9-
let exporter = opentelemetry_stdout::MetricsExporterBuilder::default()
9+
let exporter = opentelemetry_stdout::MetricExporterBuilder::default()
1010
// Build exporter using Delta Temporality (Defaults to Temporality::Cumulative)
1111
// .with_temporality(data::Temporality::Delta)
1212
.build();
@@ -31,7 +31,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
3131
let meter = global::meter("mylibraryname");
3232

3333
// Create a Counter Instrument.
34-
let counter = meter.u64_counter("my_counter").init();
34+
let counter = meter.u64_counter("my_counter").build();
3535

3636
// Record measurements using the Counter instrument.
3737
counter.add(
@@ -56,10 +56,10 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
5656
],
5757
)
5858
})
59-
.init();
59+
.build();
6060

6161
// Create a UpCounter Instrument.
62-
let updown_counter = meter.i64_up_down_counter("my_updown_counter").init();
62+
let updown_counter = meter.i64_up_down_counter("my_updown_counter").build();
6363

6464
// Record measurements using the UpCounter instrument.
6565
updown_counter.add(
@@ -84,7 +84,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8484
],
8585
)
8686
})
87-
.init();
87+
.build();
8888

8989
// Create a Histogram Instrument.
9090
let histogram = meter
@@ -93,7 +93,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9393
// Setting boundaries is optional. By default, the boundaries are set to
9494
// [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 10000.0]
9595
.with_boundaries(vec![0.0, 5.0, 10.0, 15.0, 20.0, 25.0])
96-
.init();
96+
.build();
9797

9898
// Record measurements using the histogram instrument.
9999
histogram.record(
@@ -111,7 +111,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
111111
.f64_gauge("my_gauge")
112112
.with_description("A gauge set to 1.0")
113113
.with_unit("myunit")
114-
.init();
114+
.build();
115115

116116
gauge.record(
117117
1.0,
@@ -135,7 +135,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
135135
],
136136
)
137137
})
138-
.init();
138+
.build();
139139

140140
// Metrics are exported by default every 30 seconds when using stdout exporter,
141141
// however shutting down the MeterProvider here instantly flushes

examples/self-diagnostics/src/main.rs

+24-18
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use opentelemetry::global::{self, set_error_handler, Error as OtelError};
22
use opentelemetry::KeyValue;
33
use opentelemetry_appender_tracing::layer;
4-
use opentelemetry_otlp::WithExportConfig;
4+
use opentelemetry_otlp::{LogExporter, MetricExporter, WithExportConfig};
5+
use opentelemetry_sdk::metrics::PeriodicReader;
56
use tracing_subscriber::filter::{EnvFilter, LevelFilter};
67
use tracing_subscriber::fmt;
78
use tracing_subscriber::prelude::*;
@@ -51,15 +52,16 @@ fn custom_error_handler(err: OtelError) {
5152
}
5253

5354
fn init_logger_provider() -> opentelemetry_sdk::logs::LoggerProvider {
54-
let provider = opentelemetry_otlp::new_pipeline()
55-
.logging()
56-
.with_exporter(
57-
opentelemetry_otlp::new_exporter()
58-
.http()
59-
.with_endpoint("http://localhost:4318/v1/logs"),
60-
)
61-
.install_batch(opentelemetry_sdk::runtime::Tokio)
55+
let exporter = LogExporter::builder()
56+
.with_http()
57+
.with_endpoint("http://localhost:4318/v1/logs")
58+
.build()
6259
.unwrap();
60+
61+
let provider = opentelemetry_sdk::logs::LoggerProvider::builder()
62+
.with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio)
63+
.build();
64+
6365
let cloned_provider = provider.clone();
6466

6567
// Add a tracing filter to filter events from crates used by opentelemetry-otlp.
@@ -107,16 +109,20 @@ fn init_logger_provider() -> opentelemetry_sdk::logs::LoggerProvider {
107109
}
108110

109111
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
110-
let provider = opentelemetry_otlp::new_pipeline()
111-
.metrics(opentelemetry_sdk::runtime::Tokio)
112-
.with_period(std::time::Duration::from_secs(1))
113-
.with_exporter(
114-
opentelemetry_otlp::new_exporter()
115-
.http()
116-
.with_endpoint("http://localhost:4318/v1/metrics"),
117-
)
112+
let exporter = MetricExporter::builder()
113+
.with_http()
114+
.with_endpoint("http://localhost:4318/v1/metrics")
118115
.build()
119116
.unwrap();
117+
118+
let reader = PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio)
119+
.with_interval(std::time::Duration::from_secs(1))
120+
.build();
121+
122+
let provider = opentelemetry_sdk::metrics::SdkMeterProvider::builder()
123+
.with_reader(reader)
124+
.build();
125+
120126
let cloned_provider = provider.clone();
121127
global::set_meter_provider(cloned_provider);
122128
provider
@@ -137,7 +143,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
137143
// Create a meter from the above MeterProvider.
138144
let meter = global::meter("example");
139145
// Create a Counter Instrument.
140-
let counter = meter.u64_counter("my_counter").init();
146+
let counter = meter.u64_counter("my_counter").build();
141147

142148
// Record measurements with unique key-value pairs to exceed the cardinality limit
143149
// of 2000 and trigger error message

examples/tracing-jaeger/src/main.rs

+9-10
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,26 @@ use opentelemetry::{
44
trace::{TraceContextExt, TraceError, Tracer},
55
KeyValue,
66
};
7-
use opentelemetry_otlp::WithExportConfig;
7+
use opentelemetry_sdk::trace::TracerProvider;
88
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
99
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
1010

1111
use std::error::Error;
1212

1313
fn init_tracer_provider() -> Result<opentelemetry_sdk::trace::TracerProvider, TraceError> {
14-
opentelemetry_otlp::new_pipeline()
15-
.tracing()
16-
.with_exporter(
17-
opentelemetry_otlp::new_exporter()
18-
.tonic()
19-
.with_endpoint("http://localhost:4317"),
20-
)
21-
.with_trace_config(
14+
let exporter = opentelemetry_otlp::SpanExporter::builder()
15+
.with_tonic()
16+
.build()?;
17+
18+
Ok(TracerProvider::builder()
19+
.with_batch_exporter(exporter, runtime::Tokio)
20+
.with_config(
2221
sdktrace::Config::default().with_resource(Resource::new(vec![KeyValue::new(
2322
SERVICE_NAME,
2423
"tracing-jaeger",
2524
)])),
2625
)
27-
.install_batch(runtime::Tokio)
26+
.build())
2827
}
2928

3029
#[tokio::main]

opentelemetry-appender-log/src/lib.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,10 @@
9797
use log::{Level, Metadata, Record};
9898
use opentelemetry::{
9999
logs::{AnyValue, LogRecord, Logger, LoggerProvider, Severity},
100-
Key,
100+
InstrumentationScope, Key,
101101
};
102102
#[cfg(feature = "experimental_metadata_attributes")]
103103
use opentelemetry_semantic_conventions::attribute::{CODE_FILEPATH, CODE_LINENO, CODE_NAMESPACE};
104-
use std::borrow::Cow;
105104

106105
pub struct OpenTelemetryLogBridge<P, L>
107106
where
@@ -170,11 +169,12 @@ where
170169
L: Logger + Send + Sync,
171170
{
172171
pub fn new(provider: &P) -> Self {
172+
let scope = InstrumentationScope::builder("opentelemetry-log-appender")
173+
.with_version(env!("CARGO_PKG_VERSION"))
174+
.build();
175+
173176
OpenTelemetryLogBridge {
174-
logger: provider
175-
.logger_builder("opentelemetry-log-appender")
176-
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
177-
.build(),
177+
logger: provider.logger_with_scope(scope),
178178
_phantom: Default::default(),
179179
}
180180
}

opentelemetry-appender-tracing/benches/logs.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
use async_trait::async_trait;
1717
use criterion::{criterion_group, criterion_main, Criterion};
1818
use opentelemetry::logs::LogResult;
19-
use opentelemetry::{InstrumentationLibrary, KeyValue};
19+
use opentelemetry::{InstrumentationScope, KeyValue};
2020
use opentelemetry_appender_tracing::layer as tracing_layer;
2121
use opentelemetry_sdk::export::logs::{LogBatch, LogExporter};
2222
use opentelemetry_sdk::logs::{LogProcessor, LogRecord, LoggerProvider};
@@ -55,7 +55,7 @@ impl NoopProcessor {
5555
}
5656

5757
impl LogProcessor for NoopProcessor {
58-
fn emit(&self, _: &mut LogRecord, _: &InstrumentationLibrary) {
58+
fn emit(&self, _: &mut LogRecord, _: &InstrumentationScope) {
5959
// no-op
6060
}
6161

opentelemetry-appender-tracing/src/layer.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use opentelemetry::{
22
logs::{AnyValue, LogRecord, Logger, LoggerProvider, Severity},
3-
Key,
3+
InstrumentationScope, Key,
44
};
55
use std::borrow::Cow;
66
use tracing_core::Level;
@@ -136,11 +136,12 @@ where
136136
L: Logger + Send + Sync,
137137
{
138138
pub fn new(provider: &P) -> Self {
139+
let scope = InstrumentationScope::builder(INSTRUMENTATION_LIBRARY_NAME)
140+
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
141+
.build();
142+
139143
OpenTelemetryTracingBridge {
140-
logger: provider
141-
.logger_builder(INSTRUMENTATION_LIBRARY_NAME)
142-
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
143-
.build(),
144+
logger: provider.logger_with_scope(scope),
144145
_phantom: Default::default(),
145146
}
146147
}

opentelemetry-jaeger-propagator/src/propagator.rs

+17-12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
use opentelemetry::propagation::PropagationError;
21
use opentelemetry::{
3-
global::{self, Error},
2+
otel_warn,
43
propagation::{text_map_propagator::FieldIter, Extractor, Injector, TextMapPropagator},
5-
trace::{SpanContext, SpanId, TraceContextExt, TraceError, TraceFlags, TraceId, TraceState},
4+
trace::{SpanContext, SpanId, TraceContextExt, TraceFlags, TraceId, TraceState},
65
Context,
76
};
87
use std::borrow::Cow;
@@ -82,10 +81,11 @@ impl Propagator {
8281

8382
let parts = header_value.split_terminator(':').collect::<Vec<&str>>();
8483
if parts.len() != 4 {
85-
global::handle_error(Error::Propagation(PropagationError::extract(
86-
"invalid jaeger header format",
87-
"JaegerPropagator",
88-
)));
84+
otel_warn!(
85+
name: "JaegerPropagator.InvalidHeader",
86+
message = "Invalid jaeger header format",
87+
header_value = header_value.to_string(),
88+
);
8989
return None;
9090
}
9191

@@ -100,10 +100,11 @@ impl Propagator {
100100
Some(SpanContext::new(trace_id, span_id, flags, true, state))
101101
}
102102
_ => {
103-
global::handle_error(Error::Propagation(PropagationError::extract(
104-
"invalid jaeger header format",
105-
"JaegerPropagator",
106-
)));
103+
otel_warn!(
104+
name: "JaegerPropagator.InvalidHeader",
105+
message = "Invalid jaeger header format",
106+
header_value = header_value.to_string(),
107+
);
107108
None
108109
}
109110
}
@@ -171,7 +172,11 @@ impl Propagator {
171172
match TraceState::from_key_value(baggage_keys) {
172173
Ok(trace_state) => Ok(trace_state),
173174
Err(trace_state_err) => {
174-
global::handle_error(Error::Trace(TraceError::Other(Box::new(trace_state_err))));
175+
otel_warn!(
176+
name: "JaegerPropagator.InvalidTraceState",
177+
message = "Invalid trace state",
178+
reason = format!("{:?}", trace_state_err),
179+
);
175180
Err(()) //todo: assign an error type instead of using ()
176181
}
177182
}

0 commit comments

Comments
 (0)