diff --git a/apollo-router-core/src/layers/instrument.rs b/apollo-router-core/src/layers/instrument.rs index ff9db39a7b..b7ca550c3d 100644 --- a/apollo-router-core/src/layers/instrument.rs +++ b/apollo-router-core/src/layers/instrument.rs @@ -1,3 +1,20 @@ +//! Instrumentation layer that allows services to be wrapped in a span. +//! +//! See [`Layer`] and [`Service`] for more details. +//! +//! Using ServiceBuilderExt: +//! ```rust +//! use tower::ServiceBuilder; +//! use tracing::info_span; +//! use apollo_router_core::ServiceBuilderExt; +//! +//! let instrumented = ServiceBuilder::new() +//! .instrument(|_request| info_span!("query_planning")) +//! .service(service); +//! ``` +//! Now calls to the wrapped service will be wrapped in a span. You can attach attributes to the span from the request. +//! + use futures::future::BoxFuture; use futures::FutureExt; use std::marker::PhantomData; @@ -6,6 +23,7 @@ use tower::Layer; use tower_service::Service; use tracing::Instrument; +/// [`Layer`] for instrumentation. pub struct InstrumentLayer where F: Fn(&Request) -> tracing::Span, @@ -42,6 +60,7 @@ where } } +/// [`Service`] for instrumentation. pub struct InstrumentService where S: Service, diff --git a/apollo-router-core/src/query_cache.rs b/apollo-router-core/src/query_cache.rs index 8c38c1f256..87c364c251 100644 --- a/apollo-router-core/src/query_cache.rs +++ b/apollo-router-core/src/query_cache.rs @@ -1,3 +1,4 @@ +//! A cache for queries. use crate::prelude::graphql::*; use crate::CacheResolver; use std::sync::Arc; diff --git a/apollo-router/src/axum_http_server_factory.rs b/apollo-router/src/axum_http_server_factory.rs index 118eca82a0..1d06249f10 100644 --- a/apollo-router/src/axum_http_server_factory.rs +++ b/apollo-router/src/axum_http_server_factory.rs @@ -1,3 +1,4 @@ +//! Axum http server factory. Axum provides routing capability on top of Hyper HTTP. use crate::configuration::{Configuration, Cors, ListenAddr}; use crate::http_server_factory::{HttpServerFactory, HttpServerHandle, Listener, NetworkStream}; use crate::FederatedServerError; @@ -34,7 +35,7 @@ use tower_http::trace::{DefaultMakeSpan, MakeSpan, TraceLayer}; use tower_service::Service; use tracing::{Level, Span}; -/// A basic http server using warp. +/// A basic http server using Axum. /// Uses streaming as primary method of response. /// Redirects to studio for GET requests. #[derive(Debug)] diff --git a/apollo-router/src/plugins/telemetry/apollo.rs b/apollo-router/src/plugins/telemetry/apollo.rs index ec02c613da..dd8f9d960c 100644 --- a/apollo-router/src/plugins/telemetry/apollo.rs +++ b/apollo-router/src/plugins/telemetry/apollo.rs @@ -1,3 +1,4 @@ +//! Configuration for apollo telemetry. use crate::graphql::serde_utils::deserialize_header_name; use http::header::HeaderName; use schemars::JsonSchema; diff --git a/apollo-router/src/plugins/telemetry/config.rs b/apollo-router/src/plugins/telemetry/config.rs index 3f646ebdb0..a79697f641 100644 --- a/apollo-router/src/plugins/telemetry/config.rs +++ b/apollo-router/src/plugins/telemetry/config.rs @@ -1,3 +1,4 @@ +//! Configuration for the telemetry plugin. use super::*; use crate::plugins::telemetry::metrics; use opentelemetry::sdk::Resource; diff --git a/apollo-router/src/plugins/telemetry/otlp.rs b/apollo-router/src/plugins/telemetry/otlp.rs index ccf0790761..5eaffa5562 100644 --- a/apollo-router/src/plugins/telemetry/otlp.rs +++ b/apollo-router/src/plugins/telemetry/otlp.rs @@ -1,3 +1,4 @@ +//! Shared configuration for Otlp tracing and metrics. use crate::configuration::ConfigurationError; use crate::plugins::telemetry::config::GenericWith; use opentelemetry_otlp::{HttpExporterBuilder, TonicExporterBuilder, WithExportConfig}; diff --git a/apollo-router/src/plugins/telemetry/tracing/apollo.rs b/apollo-router/src/plugins/telemetry/tracing/apollo.rs index ce89ba33a1..6988a3a105 100644 --- a/apollo-router/src/plugins/telemetry/tracing/apollo.rs +++ b/apollo-router/src/plugins/telemetry/tracing/apollo.rs @@ -1,3 +1,4 @@ +//! Tracing configuration for apollo telemetry. use crate::plugins::telemetry::apollo::Config; use crate::plugins::telemetry::config::Trace; use crate::plugins::telemetry::tracing::apollo_telemetry::{SpaceportConfig, StudioGraph}; diff --git a/apollo-router/src/plugins/telemetry/tracing/datadog.rs b/apollo-router/src/plugins/telemetry/tracing/datadog.rs index ab7dd55641..0ec91f5dae 100644 --- a/apollo-router/src/plugins/telemetry/tracing/datadog.rs +++ b/apollo-router/src/plugins/telemetry/tracing/datadog.rs @@ -1,3 +1,4 @@ +//! Configuration for datadog tracing. use crate::plugins::telemetry::config::{GenericWith, Trace}; use crate::plugins::telemetry::tracing::TracingConfigurator; use opentelemetry::sdk::trace::Builder; diff --git a/apollo-router/src/plugins/telemetry/tracing/jaeger.rs b/apollo-router/src/plugins/telemetry/tracing/jaeger.rs index 6d7e4ebddf..085b0cfdfc 100644 --- a/apollo-router/src/plugins/telemetry/tracing/jaeger.rs +++ b/apollo-router/src/plugins/telemetry/tracing/jaeger.rs @@ -1,3 +1,4 @@ +//! Configuration for jaeger tracing. use crate::plugins::telemetry::config::{GenericWith, Trace}; use crate::plugins::telemetry::tracing::TracingConfigurator; use opentelemetry::sdk::trace::{BatchSpanProcessor, Builder}; diff --git a/apollo-router/src/plugins/telemetry/tracing/otlp.rs b/apollo-router/src/plugins/telemetry/tracing/otlp.rs index a309afb2ae..d6c4834c52 100644 --- a/apollo-router/src/plugins/telemetry/tracing/otlp.rs +++ b/apollo-router/src/plugins/telemetry/tracing/otlp.rs @@ -1,3 +1,4 @@ +//! Configuration for Otlp tracing. use crate::plugins::telemetry::config::Trace; use crate::plugins::telemetry::tracing::TracingConfigurator; use opentelemetry::sdk::trace::Builder; diff --git a/apollo-router/src/plugins/telemetry/tracing/zipkin.rs b/apollo-router/src/plugins/telemetry/tracing/zipkin.rs index edce1e93cd..c4a9e73c4f 100644 --- a/apollo-router/src/plugins/telemetry/tracing/zipkin.rs +++ b/apollo-router/src/plugins/telemetry/tracing/zipkin.rs @@ -1,3 +1,4 @@ +//! Configuration for zipkin tracing. use crate::plugins::telemetry::config::{GenericWith, Trace}; use crate::plugins::telemetry::tracing::TracingConfigurator; use opentelemetry::sdk::trace::Builder;