[model-gateway] add OTEL integration to grpc router (#14671)

This commit is contained in:
Simo Lin
2025-12-08 14:45:05 -08:00
committed by GitHub
parent 6abb8051e8
commit edde5e5d40
6 changed files with 239 additions and 108 deletions
@@ -12,12 +12,15 @@ use std::{
use tonic::{transport::Channel, Request, Streaming};
use tracing::{debug, warn};
use crate::protocols::{
chat::ChatCompletionRequest,
common::{ResponseFormat, StringOrArray, ToolChoice, ToolChoiceValue},
generate::GenerateRequest,
responses::ResponsesRequest,
sampling_params::SamplingParams as GenerateSamplingParams,
use crate::{
observability::otel_trace::inject_trace_context_grpc,
protocols::{
chat::ChatCompletionRequest,
common::{ResponseFormat, StringOrArray, ToolChoice, ToolChoiceValue},
generate::GenerateRequest,
responses::ResponsesRequest,
sampling_params::SamplingParams as GenerateSamplingParams,
},
};
// Include the generated protobuf code
@@ -163,7 +166,11 @@ impl SglangSchedulerClient {
) -> Result<AbortOnDropStream, Box<dyn std::error::Error + Send + Sync>> {
let request_id = req.request_id.clone();
let mut client = self.client.clone();
let request = Request::new(req);
let mut request = Request::new(req);
// Inject W3C trace context into gRPC metadata for distributed tracing
inject_trace_context_grpc(request.metadata_mut());
let response = client.generate(request).await?;
Ok(AbortOnDropStream::new(
@@ -12,12 +12,15 @@ use std::{
use tonic::{transport::Channel, Request, Streaming};
use tracing::{debug, warn};
use crate::protocols::{
chat::ChatCompletionRequest,
common::{ResponseFormat, StringOrArray, ToolChoice, ToolChoiceValue},
generate::GenerateRequest,
responses::ResponsesRequest,
sampling_params::SamplingParams as GenerateSamplingParams,
use crate::{
observability::otel_trace::inject_trace_context_grpc,
protocols::{
chat::ChatCompletionRequest,
common::{ResponseFormat, StringOrArray, ToolChoice, ToolChoiceValue},
generate::GenerateRequest,
responses::ResponsesRequest,
sampling_params::SamplingParams as GenerateSamplingParams,
},
};
// Include the generated protobuf code
@@ -163,7 +166,11 @@ impl VllmEngineClient {
) -> Result<AbortOnDropStream, Box<dyn std::error::Error + Send + Sync>> {
let request_id = req.request_id.clone();
let mut client = self.client.clone();
let request = Request::new(req);
let mut request = Request::new(req);
// Inject W3C trace context into gRPC metadata for distributed tracing
inject_trace_context_grpc(request.metadata_mut());
let response = client.generate(request).await?;
Ok(AbortOnDropStream::new(