From 9d11df933cd32b3ee128121243f5d21cf3e7512a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Daba=C5=A1inskas?= Date: Fri, 24 Apr 2026 14:36:04 +0300 Subject: [PATCH] fix(runtime): add OpenTelemetry tracer to runtime initialization Initialize runtime instances with an OpenTelemetry tracer named "cagent" to enable distributed tracing across agent invocations. This ensures consistent tracing instrumentation in: - Agent-to-agent adapter runtime - MCP server tool handler runtime - Session manager runtime --- pkg/a2a/adapter.go | 2 ++ pkg/mcp/server.go | 2 ++ pkg/server/session_manager.go | 3 +++ 3 files changed, 7 insertions(+) diff --git a/pkg/a2a/adapter.go b/pkg/a2a/adapter.go index fc892f605..18e91f098 100644 --- a/pkg/a2a/adapter.go +++ b/pkg/a2a/adapter.go @@ -7,6 +7,7 @@ import ( "log/slog" "strings" + "go.opentelemetry.io/otel" "google.golang.org/adk/agent" "google.golang.org/adk/model" adksession "google.golang.org/adk/session" @@ -56,6 +57,7 @@ func runDockerAgent(ctx agent.InvocationContext, t *team.Team, agentName string, // Create runtime rt, err := runtime.New(t, runtime.WithCurrentAgent(agentName), + runtime.WithTracer(otel.Tracer("cagent")), ) if err != nil { yield(nil, fmt.Errorf("failed to create runtime: %w", err)) diff --git a/pkg/mcp/server.go b/pkg/mcp/server.go index 84d48d5ec..0b11fb5df 100644 --- a/pkg/mcp/server.go +++ b/pkg/mcp/server.go @@ -11,6 +11,7 @@ import ( "slices" "github.com/modelcontextprotocol/go-sdk/mcp" + "go.opentelemetry.io/otel" "github.com/docker/docker-agent/pkg/agent" "github.com/docker/docker-agent/pkg/config" @@ -169,6 +170,7 @@ func CreateToolHandler(t *team.Team, agentName string) func(context.Context, *mc rt, err := runtime.New(t, runtime.WithCurrentAgent(agentName), + runtime.WithTracer(otel.Tracer("cagent")), ) if err != nil { return nil, ToolOutput{}, fmt.Errorf("failed to create runtime: %w", err) diff --git a/pkg/server/session_manager.go b/pkg/server/session_manager.go index 594e44ca3..d90fabb07 100644 --- a/pkg/server/session_manager.go +++ b/pkg/server/session_manager.go @@ -11,6 +11,8 @@ import ( "sync" "time" + "go.opentelemetry.io/otel" + "github.com/docker/docker-agent/pkg/api" "github.com/docker/docker-agent/pkg/concurrent" "github.com/docker/docker-agent/pkg/config" @@ -418,6 +420,7 @@ func (sm *SessionManager) runtimeForSession(ctx context.Context, sess *session.S runtime.WithCurrentAgent(currentAgent), runtime.WithManagedOAuth(false), runtime.WithSessionStore(sm.sessionStore), + runtime.WithTracer(otel.Tracer("cagent")), } run, err := runtime.New(t, opts...) if err != nil {