diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index b9f5bb03a3..db665feddc 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -120,6 +120,12 @@ By [@neominik](https://github.com/neominik) in https://github.com/apollographql/ ## 🛠 Maintenance +### Add outgoing request URLs for the subgraph calls in the OTEL spans ([Issue #2280](https://github.com/apollographql/router/issues/2280)) + +Add attribute named `http.url` containing the subgraph URL in span `subgraph_request`. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/2291 + ### Return more consistent errors ([Issue #2101](https://github.com/apollographql/router/issues/2101)) Change some of our errors we returned by following [this specs](https://www.apollographql.com/docs/apollo-server/data/errors/). It adds a `code` field in `extensions` describing the current error. diff --git a/apollo-router/src/services/subgraph_service.rs b/apollo-router/src/services/subgraph_service.rs index eb36b9c242..ebf578dc0d 100644 --- a/apollo-router/src/services/subgraph_service.rs +++ b/apollo-router/src/services/subgraph_service.rs @@ -148,7 +148,7 @@ impl tower::Service for SubgraphService { ); }); - let schema_uri = request.uri(); + let schema_uri = request.uri().clone(); let host = schema_uri.host().map(String::from).unwrap_or_default(); let port = schema_uri.port_u16().unwrap_or_else(|| { let scheme = schema_uri.scheme_str(); @@ -177,6 +177,7 @@ impl tower::Service for SubgraphService { "net.peer.name" = &display(host), "net.peer.port" = &display(port), "http.route" = &display(path), + "http.url" = &display(schema_uri), "net.transport" = "ip_tcp", "apollo.subgraph.name" = %service_name )) diff --git a/apollo-router/tests/snapshots/integration_tests__traced_basic_composition.snap b/apollo-router/tests/snapshots/integration_tests__traced_basic_composition.snap index ad67219b5d..aa302a1fa1 100644 --- a/apollo-router/tests/snapshots/integration_tests__traced_basic_composition.snap +++ b/apollo-router/tests/snapshots/integration_tests__traced_basic_composition.snap @@ -396,6 +396,10 @@ expression: get_spans() "http.route", "/" ], + [ + "http.url", + "https://products.demo.starstuff.dev/" + ], [ "net.transport", "ip_tcp" @@ -416,6 +420,7 @@ expression: get_spans() "net.peer.name", "net.peer.port", "http.route", + "http.url", "net.transport", "apollo.subgraph.name" ] @@ -625,6 +630,10 @@ expression: get_spans() "http.route", "/" ], + [ + "http.url", + "https://reviews.demo.starstuff.dev/" + ], [ "net.transport", "ip_tcp" @@ -645,6 +654,7 @@ expression: get_spans() "net.peer.name", "net.peer.port", "http.route", + "http.url", "net.transport", "apollo.subgraph.name" ] @@ -878,6 +888,10 @@ expression: get_spans() "http.route", "/" ], + [ + "http.url", + "https://products.demo.starstuff.dev/" + ], [ "net.transport", "ip_tcp" @@ -898,6 +912,7 @@ expression: get_spans() "net.peer.name", "net.peer.port", "http.route", + "http.url", "net.transport", "apollo.subgraph.name" ] @@ -1109,6 +1124,10 @@ expression: get_spans() "http.route", "/" ], + [ + "http.url", + "https://accounts.demo.starstuff.dev/" + ], [ "net.transport", "ip_tcp" @@ -1129,6 +1148,7 @@ expression: get_spans() "net.peer.name", "net.peer.port", "http.route", + "http.url", "net.transport", "apollo.subgraph.name" ] diff --git a/apollo-router/tests/snapshots/integration_tests__traced_basic_request.snap b/apollo-router/tests/snapshots/integration_tests__traced_basic_request.snap index df53b8b1fd..4aeec38297 100644 --- a/apollo-router/tests/snapshots/integration_tests__traced_basic_request.snap +++ b/apollo-router/tests/snapshots/integration_tests__traced_basic_request.snap @@ -374,6 +374,10 @@ expression: get_spans() "http.route", "/" ], + [ + "http.url", + "https://products.demo.starstuff.dev/" + ], [ "net.transport", "ip_tcp" @@ -394,6 +398,7 @@ expression: get_spans() "net.peer.name", "net.peer.port", "http.route", + "http.url", "net.transport", "apollo.subgraph.name" ]