Skip to content

Commit 502885e

Browse files
authored
Merge branch 'main' into exp-hist-internal-log
2 parents d48133f + 80dc298 commit 502885e

File tree

50 files changed

+1264
-1157
lines changed

Some content is hidden

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

50 files changed

+1264
-1157
lines changed

examples/metrics-advanced/src/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 24 additions & 18 deletions
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, MetricsExporter, 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 = MetricsExporter::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

Lines changed: 9 additions & 10 deletions
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-otlp/CHANGELOG.md

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ Released 2024-Sep-30
1010
- Update `opentelemetry-http` dependency version to 0.26
1111
- Update `opentelemetry-proto` dependency version to 0.26
1212
- Bump MSRV to 1.71.1 [2140](https://github.com/open-telemetry/opentelemetry-rust/pull/2140)
13-
- **BREAKING**: [#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)
14-
- **Replaced**: The `MetricsExporterBuilder` interface is modified from `with_temporality_selector` to `with_temporality` example can be seen below:
13+
- **BREAKING**:
14+
- ([#2217](https://github.com/open-telemetry/opentelemetry-rust/pull/2217)) **Replaced**: The `MetricsExporterBuilder` interface is modified from `with_temporality_selector` to `with_temporality` example can be seen below:
1515
Previous Signature:
1616
```rust
1717
MetricsExporterBuilder::default().with_temporality_selector(DeltaTemporalitySelector::new())
@@ -20,6 +20,34 @@ Released 2024-Sep-30
2020
```rust
2121
MetricsExporterBuilder::default().with_temporality(Temporality::Delta)
2222
```
23+
- ([#2221](https://github.com/open-telemetry/opentelemetry-rust/pull/2221)) **Replaced**:
24+
- The `opentelemetry_otlp::new_pipeline().{trace,logging,metrics}()` interface is now replaced with `{TracerProvider,SdkMeterProvider,LoggerProvider}::builder()`.
25+
- The `opentelemetry_otlp::new_exporter()` interface is now replaced with `{SpanExporter,MetricsExporter,LogExporter}::builder()`.
26+
27+
Pull request [#2221](https://github.com/open-telemetry/opentelemetry-rust/pull/2221) has a detailed migration guide in the description. See example below,
28+
and [basic-otlp](https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry-otlp/examples/basic-otlp/src/main.rs) for more details:
29+
30+
Previous Signature:
31+
```rust
32+
let logger_provider: LoggerProvider = opentelemetry_otlp::new_pipeline()
33+
.logging()
34+
.with_exporter(
35+
opentelemetry_otlp::new_exporter()
36+
.tonic()
37+
.with_endpoint("http://localhost:4317")
38+
)
39+
.install_batch(runtime::Tokio)?;
40+
```
41+
Updated Signature:
42+
```rust
43+
let logger_provider: LoggerProvider = LoggerProvider::builder()
44+
.install_batch_exporter(
45+
LogExporter::builder()
46+
.with_tonic()
47+
.with_endpoint("http://localhost:4317")
48+
.build()?,
49+
).build();
50+
```
2351

2452
## v0.25.0
2553

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ use opentelemetry::{
66
KeyValue,
77
};
88
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
9-
use opentelemetry_otlp::Protocol;
10-
use opentelemetry_otlp::{HttpExporterBuilder, WithExportConfig};
11-
use opentelemetry_sdk::trace::{self as sdktrace, Config};
9+
use opentelemetry_otlp::WithExportConfig;
10+
use opentelemetry_otlp::{LogExporter, MetricsExporter, Protocol, SpanExporter};
11+
use opentelemetry_sdk::{
12+
logs::LoggerProvider,
13+
metrics::{PeriodicReader, SdkMeterProvider},
14+
runtime,
15+
trace::{self as sdktrace, Config, TracerProvider},
16+
};
1217
use opentelemetry_sdk::{
1318
logs::{self as sdklogs},
1419
Resource,
@@ -18,6 +23,9 @@ use tracing::info;
1823
use tracing_subscriber::prelude::*;
1924
use tracing_subscriber::EnvFilter;
2025

26+
#[cfg(feature = "hyper")]
27+
use opentelemetry_otlp::WithHttpConfig;
28+
2129
#[cfg(feature = "hyper")]
2230
mod hyper;
2331

@@ -28,47 +36,46 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
2836
)])
2937
});
3038

31-
fn http_exporter() -> HttpExporterBuilder {
32-
let exporter = opentelemetry_otlp::new_exporter().http();
39+
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
40+
let exporter_builder = LogExporter::builder()
41+
.with_http()
42+
.with_endpoint("http://localhost:4318/v1/logs")
43+
.with_protocol(Protocol::HttpBinary);
44+
3345
#[cfg(feature = "hyper")]
34-
let exporter = exporter.with_http_client(hyper::HyperClient::default());
35-
exporter
36-
}
46+
let exporter_builder = exporter_builder.with_http_client(hyper::HyperClient::default());
3747

38-
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
39-
opentelemetry_otlp::new_pipeline()
40-
.logging()
48+
let exporter = exporter_builder.build()?;
49+
50+
Ok(LoggerProvider::builder()
51+
.with_batch_exporter(exporter, runtime::Tokio)
4152
.with_resource(RESOURCE.clone())
42-
.with_exporter(
43-
http_exporter()
44-
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
45-
.with_endpoint("http://localhost:4318/v1/logs"),
46-
)
47-
.install_batch(opentelemetry_sdk::runtime::Tokio)
53+
.build())
4854
}
4955

5056
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
51-
opentelemetry_otlp::new_pipeline()
52-
.tracing()
53-
.with_exporter(
54-
http_exporter()
55-
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
56-
.with_endpoint("http://localhost:4318/v1/traces"),
57-
)
58-
.with_trace_config(Config::default().with_resource(RESOURCE.clone()))
59-
.install_batch(opentelemetry_sdk::runtime::Tokio)
57+
let exporter = SpanExporter::builder()
58+
.with_http()
59+
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
60+
.with_endpoint("http://localhost:4318/v1/traces")
61+
.build()?;
62+
Ok(TracerProvider::builder()
63+
.with_batch_exporter(exporter, runtime::Tokio)
64+
.with_config(Config::default().with_resource(RESOURCE.clone()))
65+
.build())
6066
}
6167

6268
fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, MetricsError> {
63-
opentelemetry_otlp::new_pipeline()
64-
.metrics(opentelemetry_sdk::runtime::Tokio)
65-
.with_exporter(
66-
http_exporter()
67-
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
68-
.with_endpoint("http://localhost:4318/v1/metrics"),
69-
)
69+
let exporter = MetricsExporter::builder()
70+
.with_http()
71+
.with_protocol(Protocol::HttpBinary) //can be changed to `Protocol::HttpJson` to export in JSON format
72+
.with_endpoint("http://localhost:4318/v1/metrics")
73+
.build()?;
74+
75+
Ok(SdkMeterProvider::builder()
76+
.with_reader(PeriodicReader::builder(exporter, runtime::Tokio).build())
7077
.with_resource(RESOURCE.clone())
71-
.build()
78+
.build())
7279
}
7380

7481
#[tokio::main]
@@ -136,7 +143,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
136143
.u64_counter("test_counter")
137144
.with_description("a simple counter for demo purposes.")
138145
.with_unit("my_unit")
139-
.init();
146+
.build();
140147
for _ in 0..10 {
141148
counter.add(1, &[KeyValue::new("test_key", "test_value")]);
142149
}

0 commit comments

Comments
 (0)