Skip to content

Commit 09f7cb8

Browse files
authored
Merge branch 'main' into log-async-trait-impl
2 parents 7627224 + 80629c8 commit 09f7cb8

File tree

6 files changed

+26
-61
lines changed

6 files changed

+26
-61
lines changed

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

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

88
[features]
9-
default = ["reqwest", "experimental_metrics_periodicreader_with_async_runtime"]
10-
reqwest = ["opentelemetry-otlp/reqwest-client"]
9+
default = ["reqwest-blocking"]
10+
reqwest-blocking = ["opentelemetry-otlp/reqwest-blocking-client"]
1111
hyper = ["opentelemetry-otlp/hyper-client"]
12-
experimental_metrics_periodicreader_with_async_runtime = ["opentelemetry_sdk/experimental_metrics_periodicreader_with_async_runtime"]
13-
1412

1513
[dependencies]
1614
once_cell = { workspace = true }

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ applications, these filters should be adjusted appropriately.
1313

1414
The example employs a `BatchExporter` for logs and traces, which is the
1515
recommended approach when using OTLP exporters. While it can be modified to use
16-
a `SimpleExporter`, this requires enabling feature flag `reqwest-blocking-client` and
17-
making the `main()` a normal main and *not* `tokio::main`
16+
a `SimpleExporter`, this requires making the main function a regular main and
17+
*not* tokio main.
1818

19-
// TODO: Metrics does not work with non tokio main when using `reqwest-blocking-client` today, fix that when switching
20-
// default to use own thread.
2119
// TODO: Document `hyper` feature flag when using SimpleProcessor.
2220

2321
## Usage

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use opentelemetry_otlp::{LogExporter, MetricExporter, Protocol, SpanExporter};
1111
use opentelemetry_sdk::{
1212
logs::LoggerProvider,
1313
metrics::{MetricError, SdkMeterProvider},
14-
runtime,
1514
trace::{self as sdktrace, TracerProvider},
1615
};
1716
use opentelemetry_sdk::{
@@ -50,7 +49,9 @@ fn init_traces() -> Result<sdktrace::TracerProvider, TraceError> {
5049
.build()?;
5150

5251
Ok(TracerProvider::builder()
53-
.with_batch_exporter(exporter, runtime::Tokio)
52+
// TODO: Enable BatchExporter after
53+
// https://github.com/open-telemetry/opentelemetry-rust/pull/2456
54+
.with_simple_exporter(exporter)
5455
.with_resource(RESOURCE.clone())
5556
.build())
5657
}
@@ -62,15 +63,6 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
6263
.with_endpoint("http://localhost:4318/v1/metrics")
6364
.build()?;
6465

65-
#[cfg(feature = "experimental_metrics_periodicreader_with_async_runtime")]
66-
let reader =
67-
opentelemetry_sdk::metrics::periodic_reader_with_async_runtime::PeriodicReader::builder(
68-
exporter,
69-
runtime::Tokio,
70-
)
71-
.build();
72-
// TODO: This does not work today. See https://github.com/open-telemetry/opentelemetry-rust/issues/2400
73-
#[cfg(not(feature = "experimental_metrics_periodicreader_with_async_runtime"))]
7466
let reader = opentelemetry_sdk::metrics::PeriodicReader::builder(exporter).build();
7567

7668
Ok(SdkMeterProvider::builder()
@@ -79,8 +71,10 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
7971
.build())
8072
}
8173

82-
#[tokio::main]
83-
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
74+
// #[tokio::main]
75+
// TODO: Re-enable tokio::main, if needed, after
76+
// https://github.com/open-telemetry/opentelemetry-rust/pull/2456
77+
fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8478
let logger_provider = init_logs()?;
8579

8680
// Create a new OpenTelemetryTracingBridge using the above LoggerProvider.

opentelemetry-stdout/examples/basic.rs

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use once_cell::sync::Lazy;
44
use opentelemetry::{global, KeyValue};
55

66
#[cfg(feature = "trace")]
7-
use opentelemetry::trace::{Span, Tracer};
7+
use opentelemetry::trace::Tracer;
88

99
#[cfg(feature = "metrics")]
1010
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
@@ -60,52 +60,23 @@ fn init_logs() -> opentelemetry_sdk::logs::LoggerProvider {
6060

6161
#[cfg(feature = "trace")]
6262
fn emit_span() {
63-
use opentelemetry::{
64-
trace::{SpanContext, SpanId, TraceFlags, TraceId, TraceState},
65-
InstrumentationScope,
66-
};
63+
use opentelemetry::{trace::TraceContextExt, InstrumentationScope};
6764

6865
let scope = InstrumentationScope::builder("stdout-example")
6966
.with_version("v1")
7067
.with_attributes([KeyValue::new("scope_key", "scope_value")])
7168
.build();
7269

7370
let tracer = global::tracer_with_scope(scope);
74-
let mut span = tracer.start("example-span");
75-
span.set_attribute(KeyValue::new("attribute_key1", "attribute_value1"));
76-
span.set_attribute(KeyValue::new("attribute_key2", "attribute_value2"));
77-
span.add_event(
78-
"example-event-name",
79-
vec![KeyValue::new("event_attribute1", "event_value1")],
80-
);
81-
span.add_link(
82-
SpanContext::new(
83-
TraceId::from_hex("58406520a006649127e371903a2de979").expect("invalid"),
84-
SpanId::from_hex("b6d7d7f6d7d6d7f6").expect("invalid"),
85-
TraceFlags::default(),
86-
false,
87-
TraceState::NONE,
88-
),
89-
vec![
90-
KeyValue::new("link_attribute1", "link_value1"),
91-
KeyValue::new("link_attribute2", "link_value2"),
92-
],
93-
);
94-
95-
span.add_link(
96-
SpanContext::new(
97-
TraceId::from_hex("23401120a001249127e371903f2de971").expect("invalid"),
98-
SpanId::from_hex("cd37d765d743d7f6").expect("invalid"),
99-
TraceFlags::default(),
100-
false,
101-
TraceState::NONE,
102-
),
103-
vec![
104-
KeyValue::new("link_attribute1", "link_value1"),
105-
KeyValue::new("link_attribute2", "link_value2"),
106-
],
107-
);
108-
span.end();
71+
tracer.in_span("example-span", |cx| {
72+
let span = cx.span();
73+
span.set_attribute(KeyValue::new("my-attribute", "my-value"));
74+
span.add_event(
75+
"example-event-name",
76+
vec![KeyValue::new("event_attribute1", "event_value1")],
77+
);
78+
emit_log();
79+
})
10980
}
11081

11182
#[cfg(feature = "metrics")]

opentelemetry-stdout/src/logs/exporter.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ fn print_logs(batch: &LogBatch<'_>) {
8585
if let Some(trace_context) = record.trace_context() {
8686
println!("\t TraceId: {:?}", trace_context.trace_id);
8787
println!("\t SpanId: {:?}", trace_context.span_id);
88+
if let Some(trace_flags) = trace_context.trace_flags {
89+
println!("\t TraceFlags: {:?}", trace_flags);
90+
}
8891
}
8992
if let Some(timestamp) = record.timestamp() {
9093
let datetime: DateTime<Utc> = timestamp.into();

opentelemetry-stdout/src/trace/exporter.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ fn print_spans(batch: Vec<export::trace::SpanData>) {
9696
println!("\tName : {}", &span.name);
9797
println!("\tTraceId : {}", &span.span_context.trace_id());
9898
println!("\tSpanId : {}", &span.span_context.span_id());
99+
println!("\tTraceFlags : {:?}", &span.span_context.trace_flags());
99100
println!("\tParentSpanId: {}", &span.parent_span_id);
100101
println!("\tKind : {:?}", &span.span_kind);
101102

0 commit comments

Comments
 (0)