diff --git a/.gitignore b/.gitignore index 944bbd1..dd45c5a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ target/ Cargo.lock -.idea/ \ No newline at end of file +.idea/ +.DS_Store diff --git a/Cargo.toml b/Cargo.toml index 19eb720..258c1a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ddtrace" -version = "0.1.1" +version = "0.1.2" authors = ["David Steiner "] edition = "2021" license = "MIT" @@ -16,16 +16,17 @@ exclude = [".pre-commit-config.yaml"] axum = ["dep:axum", "dep:tokio", "dep:axum-tracing-opentelemetry"] [dependencies] -axum = { version = "^0.6.10", optional = true } -axum-tracing-opentelemetry = { version = "^0.11.0", optional = true } +axum = { version = "^0.7.5", optional = true } +axum-tracing-opentelemetry = { version = "0.19.0", optional = true } chrono = "^0.4.24" -opentelemetry = { version = "^0.19.0", features = ["rt-tokio"] } -opentelemetry-datadog = "^0.7.0" -opentelemetry-otlp = { version = "^0.12.0" } +opentelemetry = { version = "0.23.0" } +opentelemetry-datadog = "0.11.0" +opentelemetry-otlp = { version = "0.16.0" , features = ["tls-roots"]} +opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"] } serde = { version = "^1.0.156", features = ["derive"] } serde_json = "^1.0.95" tokio = { version = "^1.26.0", features = ["signal"], optional = true } tracing = "^0.1.37" -tracing-opentelemetry = "^0.19.0" +tracing-opentelemetry = "0.24.0" tracing-serde = "^0.1.3" tracing-subscriber = { version = "^0.3.16", features = ["env-filter", "json"] } diff --git a/src/axum.rs b/src/axum.rs index bee36b6..c3c59c9 100644 --- a/src/axum.rs +++ b/src/axum.rs @@ -5,9 +5,7 @@ //! //! [`axum-tracing-opentelemetry`]: https://github.com/davidB/axum-tracing-opentelemetry -pub use axum_tracing_opentelemetry::opentelemetry_tracing_layer; -pub use axum_tracing_opentelemetry::opentelemetry_tracing_layer_grpc; - +pub use axum_tracing_opentelemetry::middleware::OtelAxumLayer; pub async fn shutdown_signal() { tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()) .expect("failed to install signal handler") diff --git a/src/formatter.rs b/src/formatter.rs index 8fb47be..8d73a2b 100644 --- a/src/formatter.rs +++ b/src/formatter.rs @@ -8,6 +8,7 @@ use std::io; use chrono::Utc; +use opentelemetry::trace::TraceContextExt; use opentelemetry::trace::{SpanId, TraceId}; use serde::ser::{SerializeMap, Serializer as _}; use serde::Serialize; @@ -45,7 +46,7 @@ where S: Subscriber + for<'a> LookupSpan<'a>, { span_ref.extensions().get::().map(|o| TraceInfo { - trace_id: o.builder.trace_id.unwrap_or(TraceId::INVALID).into(), + trace_id: o.parent_cx.span().span_context().trace_id().into(), span_id: o.builder.span_id.unwrap_or(SpanId::INVALID).into(), }) } diff --git a/src/tracer.rs b/src/tracer.rs index 17d89b8..a2d208d 100644 --- a/src/tracer.rs +++ b/src/tracer.rs @@ -4,11 +4,11 @@ //! to send traces to the Datadog agent in batches over gRPC. //! //! It also contains a convenience function to build a layer with the tracer. -use opentelemetry::sdk::trace::{RandomIdGenerator, Sampler, Tracer}; -use opentelemetry::sdk::{trace, Resource}; pub use opentelemetry::trace::{TraceError, TraceResult}; use opentelemetry::KeyValue; use opentelemetry_otlp::WithExportConfig; +use opentelemetry_sdk::trace::{RandomIdGenerator, Sampler, Tracer}; +use opentelemetry_sdk::{trace, Resource}; use std::time::Duration; use tracing::Subscriber; use tracing_opentelemetry::{OpenTelemetryLayer, PreSampledTracer}; @@ -18,7 +18,6 @@ pub fn build_tracer(service_name: &str) -> TraceResult { let exporter = opentelemetry_otlp::new_exporter() .tonic() .with_timeout(Duration::from_secs(3)); - opentelemetry_otlp::new_pipeline() .tracing() .with_trace_config( @@ -31,7 +30,7 @@ pub fn build_tracer(service_name: &str) -> TraceResult { .with_id_generator(RandomIdGenerator::default()), ) .with_exporter(exporter) - .install_batch(opentelemetry::runtime::Tokio) + .install_batch(opentelemetry_sdk::runtime::Tokio) } pub fn build_layer(service_name: &str) -> TraceResult>