Skip to content

Commit 1479571

Browse files
authored
Merge branch 'main' into chang-timeout-value-to-miliseconds
2 parents b139d92 + 2997c4b commit 1479571

File tree

7 files changed

+70
-10
lines changed

7 files changed

+70
-10
lines changed

examples/logs-basic/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["logs"] }
1010
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["logs"]}
1111
opentelemetry-appender-tracing = { path = "../../opentelemetry-appender-tracing", default-features = false}
1212
tracing = { workspace = true, features = ["std"]}
13-
tracing-subscriber = { workspace = true, features = ["registry", "std"] }
13+
tracing-subscriber = { workspace = true, features = ["env-filter","registry", "std", "fmt"] }

examples/logs-basic/src/main.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use opentelemetry_appender_tracing::layer;
22
use opentelemetry_sdk::logs::SdkLoggerProvider;
33
use opentelemetry_sdk::Resource;
44
use tracing::error;
5-
use tracing_subscriber::prelude::*;
5+
use tracing_subscriber::{prelude::*, EnvFilter};
66

77
fn main() {
88
let exporter = opentelemetry_stdout::LogExporter::default();
@@ -14,8 +14,37 @@ fn main() {
1414
)
1515
.with_simple_exporter(exporter)
1616
.build();
17-
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
18-
tracing_subscriber::registry().with(layer).init();
17+
18+
// For the OpenTelemetry layer, add a tracing filter to filter events from
19+
// OpenTelemetry and its dependent crates (opentelemetry-otlp uses crates
20+
// like reqwest/tonic etc.) from being sent back to OTel itself, thus
21+
// preventing infinite telemetry generation. The filter levels are set as
22+
// follows:
23+
// - Allow `info` level and above by default.
24+
// - Restrict `opentelemetry`, `hyper`, `tonic`, and `reqwest` completely.
25+
// Note: This will also drop events from crates like `tonic` etc. even when
26+
// they are used outside the OTLP Exporter. For more details, see:
27+
// https://github.com/open-telemetry/opentelemetry-rust/issues/761
28+
let filter_otel = EnvFilter::new("info")
29+
.add_directive("hyper=off".parse().unwrap())
30+
.add_directive("opentelemetry=off".parse().unwrap())
31+
.add_directive("tonic=off".parse().unwrap())
32+
.add_directive("h2=off".parse().unwrap())
33+
.add_directive("reqwest=off".parse().unwrap());
34+
let otel_layer = layer::OpenTelemetryTracingBridge::new(&provider).with_filter(filter_otel);
35+
36+
// Create a new tracing::Fmt layer to print the logs to stdout. It has a
37+
// default filter of `info` level and above, and `debug` and above for logs
38+
// from OpenTelemetry crates. The filter levels can be customized as needed.
39+
let filter_fmt = EnvFilter::new("info").add_directive("opentelemetry=debug".parse().unwrap());
40+
let fmt_layer = tracing_subscriber::fmt::layer()
41+
.with_thread_names(true)
42+
.with_filter(filter_fmt);
43+
44+
tracing_subscriber::registry()
45+
.with(otel_layer)
46+
.with(fmt_layer)
47+
.init();
1948

2049
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", message = "This is an example message");
2150
let _ = provider.shutdown();

examples/tracing-grpc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"]
1919
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["trace"] }
2020
prost = { workspace = true }
2121
tokio = { workspace = true, features = ["full"] }
22-
tonic = { workspace = true }
22+
tonic = { workspace = true, features = ["server"] }
2323

2424
[build-dependencies]
2525
tonic-build = { workspace = true }

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ tracing-opentelemetry = { version = "0.29", optional = true }
2323
log = { workspace = true }
2424
opentelemetry-stdout = { path = "../opentelemetry-stdout", features = ["logs"] }
2525
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["logs", "testing"] }
26-
tracing-subscriber = { workspace = true, features = ["registry", "std", "env-filter"] }
26+
tracing = { workspace = true, features = ["std"]}
27+
tracing-subscriber = { workspace = true, features = ["env-filter","registry", "std", "fmt"] }
2728
tracing-log = "0.2"
2829
criterion = { workspace = true }
2930
tokio = { workspace = true, features = ["full"]}

opentelemetry-appender-tracing/examples/basic.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use opentelemetry_appender_tracing::layer;
44
use opentelemetry_sdk::{logs::SdkLoggerProvider, Resource};
55
use tracing::error;
6-
use tracing_subscriber::prelude::*;
6+
use tracing_subscriber::{prelude::*, EnvFilter};
77

88
fn main() {
99
let exporter = opentelemetry_stdout::LogExporter::default();
@@ -15,8 +15,37 @@ fn main() {
1515
)
1616
.with_simple_exporter(exporter)
1717
.build();
18-
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
19-
tracing_subscriber::registry().with(layer).init();
18+
19+
// For the OpenTelemetry layer, add a tracing filter to filter events from
20+
// OpenTelemetry and its dependent crates (opentelemetry-otlp uses crates
21+
// like reqwest/tonic etc.) from being sent back to OTel itself, thus
22+
// preventing infinite telemetry generation. The filter levels are set as
23+
// follows:
24+
// - Allow `info` level and above by default.
25+
// - Restrict `opentelemetry`, `hyper`, `tonic`, and `reqwest` completely.
26+
// Note: This will also drop events from crates like `tonic` etc. even when
27+
// they are used outside the OTLP Exporter. For more details, see:
28+
// https://github.com/open-telemetry/opentelemetry-rust/issues/761
29+
let filter_otel = EnvFilter::new("info")
30+
.add_directive("hyper=off".parse().unwrap())
31+
.add_directive("opentelemetry=off".parse().unwrap())
32+
.add_directive("tonic=off".parse().unwrap())
33+
.add_directive("h2=off".parse().unwrap())
34+
.add_directive("reqwest=off".parse().unwrap());
35+
let otel_layer = layer::OpenTelemetryTracingBridge::new(&provider).with_filter(filter_otel);
36+
37+
// Create a new tracing::Fmt layer to print the logs to stdout. It has a
38+
// default filter of `info` level and above, and `debug` and above for logs
39+
// from OpenTelemetry crates. The filter levels can be customized as needed.
40+
let filter_fmt = EnvFilter::new("info").add_directive("opentelemetry=debug".parse().unwrap());
41+
let fmt_layer = tracing_subscriber::fmt::layer()
42+
.with_thread_names(true)
43+
.with_filter(filter_fmt);
44+
45+
tracing_subscriber::registry()
46+
.with(otel_layer)
47+
.with(fmt_layer)
48+
.init();
2049

2150
error!(name: "my-event-name", target: "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", message = "This is an example message");
2251
let _ = provider.shutdown();

opentelemetry-otlp/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ opentelemetry_sdk = { features = ["trace", "rt-tokio", "testing"], path = "../op
5151
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
5252
futures-util = { workspace = true }
5353
temp-env = { workspace = true }
54+
tonic = { workspace = true, features = ["server"] }
5455

5556
[features]
5657
# telemetry pillars and functions

opentelemetry-proto/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ default = ["full"]
3333
full = ["gen-tonic", "trace", "logs", "metrics", "zpages", "with-serde", "internal-logs"]
3434

3535
# crates used to generate rs files
36-
gen-tonic = ["gen-tonic-messages", "tonic/transport"]
36+
gen-tonic = ["gen-tonic-messages", "tonic/channel"]
3737
gen-tonic-messages = ["tonic", "prost"]
3838

3939
# telemetry pillars and functions

0 commit comments

Comments
 (0)