Skip to content

Commit fda4af3

Browse files
authored
Remove reqwest/tower from default OTLP graph (#1248)
* chore: remove reqwest from default OTLP dependency graph * fix: run OTLP hyper exporters on tokio async runtime * fix: propagate OTLP init errors without panic * fix: surface OTLP exporter failures in default logs * feat: use awc for OTLP HTTP exports * refactor: share awc client construction with telemetry
1 parent 8db4f03 commit fda4af3

5 files changed

Lines changed: 288 additions & 231 deletions

File tree

Cargo.lock

Lines changed: 6 additions & 188 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ tracing-opentelemetry = "0.32"
8787
tracing-actix-web = { version = "0.7", default-features = false, features = ["opentelemetry_0_31"] }
8888
tracing-log = "0.2"
8989
opentelemetry = "0.31"
90-
opentelemetry_sdk = { version = "0.31", features = ["metrics", "rt-tokio-current-thread", "spec_unstable_metrics_views"] }
91-
opentelemetry-otlp = { version = "0.31", features = ["http-proto", "grpc-tonic", "metrics"] }
90+
opentelemetry_sdk = { version = "0.31", features = ["metrics", "rt-tokio", "spec_unstable_metrics_views", "experimental_trace_batch_span_processor_with_async_runtime", "experimental_metrics_periodicreader_with_async_runtime"] }
91+
opentelemetry-otlp = { version = "0.31", default-features = false, features = ["http-proto", "metrics"] }
92+
opentelemetry-http = { version = "0.31", default-features = false }
9293
opentelemetry-semantic-conventions = { version = "0.31", features = ["semconv_experimental"] }
9394

9495

src/main.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ use sqlpage::{
77

88
#[actix_web::main]
99
async fn main() {
10-
init_logging();
10+
if let Err(e) = init_logging() {
11+
eprintln!("Failed to initialize logging/telemetry: {e:#}");
12+
std::process::exit(1);
13+
}
1114
if let Err(e) = start().await {
1215
log::error!("{e:?}");
1316
std::process::exit(1);
@@ -33,10 +36,10 @@ async fn start() -> anyhow::Result<()> {
3336
Ok(())
3437
}
3538

36-
fn init_logging() {
39+
fn init_logging() -> anyhow::Result<()> {
3740
let load_env = dotenvy::dotenv();
3841

39-
let otel_active = telemetry::init_telemetry();
42+
let otel_active = telemetry::init_telemetry()?;
4043

4144
match load_env {
4245
Ok(path) => log::info!("Loaded environment variables from {path:?}"),
@@ -49,4 +52,6 @@ fn init_logging() {
4952
if otel_active {
5053
log::info!("OpenTelemetry tracing enabled (OTEL_EXPORTER_OTLP_ENDPOINT is set)");
5154
}
55+
56+
Ok(())
5257
}

0 commit comments

Comments
 (0)