OTEL backend for metrics/traces/logs (#4632)

Co-authored-by: Benji Visser <benji@093b.org>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Shuchang Zheng
2026-02-04 17:54:07 -08:00
committed by GitHub
parent be00c65071
commit 566a108d5d
19 changed files with 2935 additions and 2807 deletions

View File

@@ -8,6 +8,7 @@ from cachetools import TTLCache
from fastapi import Header, HTTPException, status
from jose import jwt
from jose.exceptions import JWTError
from opentelemetry import trace
from pydantic import ValidationError
from skyvern.config import settings
@@ -17,13 +18,6 @@ from skyvern.forge.sdk.db.agent_db import AgentDB
from skyvern.forge.sdk.models import TokenPayload
from skyvern.forge.sdk.schemas.organizations import Organization, OrganizationAuthToken, OrganizationAuthTokenType
try:
from ddtrace import tracer
_DDTRACE_AVAILABLE = True
except ImportError:
_DDTRACE_AVAILABLE = False
LOG = structlog.get_logger()
AUTHENTICATION_TTL = 60 * 60 # one hour
@@ -66,12 +60,16 @@ async def get_current_org(
curr_ctx.organization_id = organization.organization_id
curr_ctx.organization_name = organization.organization_name
if _DDTRACE_AVAILABLE:
span = tracer.current_span()
if span:
span.set_tag("organization_id", organization.organization_id)
if organization.organization_name:
span.set_tag("organization_name", organization.organization_name)
# Set organization info on OTEL span for tracing
if settings.OTEL_ENABLED:
try:
span = trace.get_current_span()
if span:
span.set_attribute("organization_id", organization.organization_id)
if organization.organization_name:
span.set_attribute("organization_name", organization.organization_name)
except Exception:
pass # Silently ignore OTEL errors
except Exception:
pass