Skip to content

Commit d32e1c3

Browse files
committed
Merge branch 'main' into bump_v175
2 parents 2f0e49c + d0ef365 commit d32e1c3

File tree

42 files changed

+1580
-1577
lines changed

Some content is hidden

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

42 files changed

+1580
-1577
lines changed

examples/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This directory contains some examples that should help you get start crates from
77
This example uses following crates from this repo:
88

99
- opentelemetry(log)
10-
- opentelemetry-appender-log
10+
- opentelemetry-appender-tracing
1111
- opentelemetry-stdout
1212

1313
Check this example if you want to understand *how to instrument logs using opentelemetry*.

examples/metrics-advanced/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use opentelemetry::KeyValue;
44
use opentelemetry_sdk::metrics::{
55
Aggregation, Instrument, PeriodicReader, SdkMeterProvider, Stream, Temporality,
66
};
7-
use opentelemetry_sdk::{runtime, Resource};
7+
use opentelemetry_sdk::Resource;
88
use std::error::Error;
99

1010
fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
@@ -49,7 +49,7 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
4949
.with_temporality(Temporality::Delta)
5050
.build();
5151

52-
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
52+
let reader = PeriodicReader::builder(exporter).build();
5353
let provider = SdkMeterProvider::builder()
5454
.with_reader(reader)
5555
.with_resource(Resource::new([KeyValue::new(

examples/metrics-basic/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use opentelemetry::{global, KeyValue};
22
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
3-
use opentelemetry_sdk::{runtime, Resource};
3+
use opentelemetry_sdk::Resource;
44
use std::error::Error;
55
use std::vec;
66

@@ -9,7 +9,7 @@ fn init_meter_provider() -> opentelemetry_sdk::metrics::SdkMeterProvider {
99
// Build exporter using Delta Temporality (Defaults to Temporality::Cumulative)
1010
// .with_temporality(opentelemetry_sdk::metrics::Temporality::Delta)
1111
.build();
12-
let reader = PeriodicReader::builder(exporter, runtime::Tokio).build();
12+
let reader = PeriodicReader::builder(exporter).build();
1313
let provider = SdkMeterProvider::builder()
1414
.with_reader(reader)
1515
.with_resource(Resource::new([KeyValue::new(

examples/self-diagnostics/Cargo.toml

Lines changed: 0 additions & 15 deletions
This file was deleted.

examples/self-diagnostics/README.md

Lines changed: 0 additions & 28 deletions
This file was deleted.

examples/self-diagnostics/src/main.rs

Lines changed: 0 additions & 73 deletions
This file was deleted.

opentelemetry-otlp/examples/basic-otlp-http/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ license = "Apache-2.0"
66
publish = false
77

88
[features]
9-
default = ["reqwest"]
9+
default = ["reqwest", "experimental_metrics_periodicreader_with_async_runtime"]
1010
reqwest = ["opentelemetry-otlp/reqwest-client"]
1111
hyper = ["opentelemetry-otlp/hyper-client"]
12+
experimental_metrics_periodicreader_with_async_runtime = ["opentelemetry_sdk/experimental_metrics_periodicreader_with_async_runtime"]
1213

1314

1415
[dependencies]
1516
once_cell = { workspace = true }
1617
opentelemetry = { path = "../../../opentelemetry" }
17-
opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio", "metrics", "logs"]}
18+
opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio", "experimental_metrics_periodicreader_with_async_runtime"]}
1819
opentelemetry-http = { path = "../../../opentelemetry-http", optional = true, default-features = false}
1920
opentelemetry-otlp = { path = "../..", features = ["http-proto", "http-json", "logs"] , default-features = false}
2021
opentelemetry-appender-tracing = { path = "../../../opentelemetry-appender-tracing", default-features = false}

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

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use opentelemetry_otlp::WithExportConfig;
1010
use opentelemetry_otlp::{LogExporter, MetricExporter, Protocol, SpanExporter};
1111
use opentelemetry_sdk::{
1212
logs::LoggerProvider,
13-
metrics::{MetricError, PeriodicReader, SdkMeterProvider},
13+
metrics::{MetricError, SdkMeterProvider},
1414
runtime,
1515
trace::{self as sdktrace, TracerProvider},
1616
};
@@ -63,20 +63,25 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
6363
.with_endpoint("http://localhost:4318/v1/metrics")
6464
.build()?;
6565

66+
#[cfg(feature = "experimental_metrics_periodicreader_with_async_runtime")]
67+
let reader =
68+
opentelemetry_sdk::metrics::periodic_reader_with_async_runtime::PeriodicReader::builder(
69+
exporter,
70+
runtime::Tokio,
71+
)
72+
.build();
73+
// TODO: This does not work today. See https://github.com/open-telemetry/opentelemetry-rust/issues/2400
74+
#[cfg(not(feature = "experimental_metrics_periodicreader_with_async_runtime"))]
75+
let reader = opentelemetry_sdk::metrics::PeriodicReader::builder(exporter).build();
76+
6677
Ok(SdkMeterProvider::builder()
67-
.with_reader(PeriodicReader::builder(exporter, runtime::Tokio).build())
78+
.with_reader(reader)
6879
.with_resource(RESOURCE.clone())
6980
.build())
7081
}
7182

7283
#[tokio::main]
7384
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
74-
let tracer_provider = init_traces()?;
75-
global::set_tracer_provider(tracer_provider.clone());
76-
77-
let meter_provider = init_metrics()?;
78-
global::set_meter_provider(meter_provider.clone());
79-
8085
let logger_provider = init_logs()?;
8186

8287
// Create a new OpenTelemetryTracingBridge using the above LoggerProvider.
@@ -115,6 +120,12 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
115120
.with(fmt_layer)
116121
.init();
117122

123+
let tracer_provider = init_traces()?;
124+
global::set_tracer_provider(tracer_provider.clone());
125+
126+
let meter_provider = init_metrics()?;
127+
global::set_meter_provider(meter_provider.clone());
128+
118129
let common_scope_attributes = vec![KeyValue::new("scope-key", "scope-value")];
119130
let scope = InstrumentationScope::builder("basic")
120131
.with_version("1.0")

opentelemetry-otlp/examples/basic-otlp/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ publish = false
77

88
[dependencies]
99
once_cell = { workspace = true }
10-
opentelemetry = { path = "../../../opentelemetry", features = ["metrics", "logs"] }
11-
opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio", "logs"] }
12-
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", features = ["tonic", "metrics", "logs"] }
10+
opentelemetry = { path = "../../../opentelemetry" }
11+
opentelemetry_sdk = { path = "../../../opentelemetry-sdk", features = ["rt-tokio"] }
12+
opentelemetry-otlp = { path = "../../../opentelemetry-otlp" }
1313
opentelemetry-semantic-conventions = { path = "../../../opentelemetry-semantic-conventions" }
1414
tokio = { version = "1.0", features = ["full"] }
1515
opentelemetry-appender-tracing = { path = "../../../opentelemetry-appender-tracing", default-features = false}

opentelemetry-otlp/examples/basic-otlp/README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,16 @@ The example employs a `BatchExporter` for logs and traces, which is the
1414
recommended approach when using OTLP exporters. While it can be modified to use
1515
a `SimpleExporter`, this requires the main method to be a `tokio::main` function
1616
since the `tonic` client requires a Tokio runtime. If you prefer not to use
17-
`tokio::main`, then the `init_logs`, `init_traces`, and `init_metrics` functions
18-
must be executed within a Tokio runtime. Below is an example:
17+
`tokio::main`, then the `init_logs` and `init_traces` functions must be executed
18+
within a Tokio runtime.
19+
20+
This examples uses the default `PeriodicReader` for metrics, which uses own
21+
thread for background processing/exporting. Since the `tonic` client requires a
22+
Tokio runtime, the main method must be a `tokio::main` function. If you prefer not
23+
to use `tokio::main`, then the `init_metrics` function must be executed within a
24+
Tokio runtime.
25+
26+
Below is an example on how to use non `tokio::main`:
1927

2028
```rust
2129
fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {

0 commit comments

Comments
 (0)