Skip to content

Commit 5f2275d

Browse files
committed
fix(otel): enrich http traces
1 parent c079c96 commit 5f2275d

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/packages/api-builder/src/middleware.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{net::SocketAddr, time::Instant};
33
use anyhow::Result;
44
use axum::{
55
body::{Body, HttpBody},
6-
extract::{ConnectInfo, State},
6+
extract::{ConnectInfo, MatchedPath, State},
77
http::{Request, StatusCode},
88
middleware::Next,
99
response::Response,
@@ -67,6 +67,11 @@ pub async fn http_logging_middleware(
6767
ray_id = %request_ids.ray_id,
6868
req_id = %request_ids.req_id,
6969
);
70+
req_span.set_attribute("http.request.method", req.method().to_string());
71+
req_span.set_attribute("http.path", req.uri().to_string());
72+
if let Some(path) = req.extensions().get::<MatchedPath>() {
73+
req_span.set_attribute("http.route", path.as_str().to_string());
74+
}
7075
req_span.add_link(current_span_ctx);
7176

7277
// Extract headers for logging
@@ -122,6 +127,8 @@ pub async fn http_logging_middleware(
122127
let status = response.status();
123128
let status_code = status.as_u16();
124129

130+
tracing::Span::current().set_attribute("http.response.status_code", status_code as i64);
131+
125132
let error = response.extensions().get::<ErrorExt>();
126133

127134
// Log based on status

engine/packages/guard-core/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ serde.workspace = true
4141
tokio-rustls.workspace = true
4242
tokio-tungstenite.workspace = true
4343
tokio.workspace = true
44+
tracing-opentelemetry.workspace = true
4445
tracing-subscriber = { workspace = true, features = ["env-filter"] }
4546
tracing.workspace = true
4647
url.workspace = true

engine/packages/guard-core/src/proxy_service.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use rivet_api_builder::{RequestIds, X_RIVET_RAY_ID};
1212
use rivet_error::{INTERNAL_ERROR, RivetError};
1313
use rivet_util::Id;
1414
use serde_json;
15+
use tracing_opentelemetry::OpenTelemetrySpanExt;
1516

1617
use rivet_runner_protocol as protocol;
1718
use std::{
@@ -2009,9 +2010,10 @@ impl ProxyService {
20092010
let request_ids = RequestIds::new(self.state.config.dc_label());
20102011
req.extensions_mut().insert(request_ids);
20112012

2012-
tracing::Span::current()
2013-
.record("req_id", request_ids.req_id.to_string())
2014-
.record("ray_id", request_ids.ray_id.to_string());
2013+
let current_span = tracing::Span::current();
2014+
2015+
current_span.record("req_id", request_ids.req_id.to_string());
2016+
current_span.record("ray_id", request_ids.ray_id.to_string());
20152017

20162018
// Extract request information for logging and analytics before consuming the request
20172019
let incoming_ray_id = req
@@ -2033,6 +2035,9 @@ impl ProxyService {
20332035
.unwrap_or_else(|| req.uri().path().to_string());
20342036
let method = req.method().clone();
20352037

2038+
current_span.set_attribute("http.request.method", method.to_string());
2039+
current_span.set_attribute("http.path", uri_string.clone());
2040+
20362041
let user_agent = req
20372042
.headers()
20382043
.get(hyper::header::USER_AGENT)
@@ -2213,6 +2218,8 @@ impl ProxyService {
22132218

22142219
let status = res.status().as_u16();
22152220

2221+
current_span.set_attribute("http.response.status_code", status as i64);
2222+
22162223
let content_length = res
22172224
.headers()
22182225
.get(hyper::header::CONTENT_LENGTH)

0 commit comments

Comments
 (0)