feat: add profiling enablement flag (#6306)
* add flag and settings tweaks * add to deploy pipeline * letta error mesage
This commit is contained in:
@@ -123,8 +123,8 @@ class DatadogEnvFilter(logging.Filter):
|
|||||||
def filter(self, record: logging.LogRecord) -> bool:
|
def filter(self, record: logging.LogRecord) -> bool:
|
||||||
"""Add Datadog attributes to log record if Datadog is enabled."""
|
"""Add Datadog attributes to log record if Datadog is enabled."""
|
||||||
if telemetry_settings.enable_datadog:
|
if telemetry_settings.enable_datadog:
|
||||||
record.dd_env = telemetry_settings.datadog_env
|
record.dd_env = settings.environment or "development"
|
||||||
record.dd_service = "letta-server"
|
record.dd_service = telemetry_settings.datadog_service_name
|
||||||
else:
|
else:
|
||||||
# Provide defaults to prevent attribute errors if filter is applied incorrectly
|
# Provide defaults to prevent attribute errors if filter is applied incorrectly
|
||||||
record.dd_env = ""
|
record.dd_env = ""
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ def create_application() -> "FastAPI":
|
|||||||
if telemetry_settings.enable_datadog:
|
if telemetry_settings.enable_datadog:
|
||||||
try:
|
try:
|
||||||
dd_env = settings.environment or "development"
|
dd_env = settings.environment or "development"
|
||||||
print(f"▶ Initializing Datadog profiling (env={dd_env})")
|
print(f"▶ Initializing Datadog tracing (env={dd_env})")
|
||||||
|
|
||||||
# Configure environment variables before importing ddtrace (must be set in environment before importing ddtrace)
|
# Configure environment variables before importing ddtrace (must be set in environment before importing ddtrace)
|
||||||
os.environ.setdefault("DD_ENV", dd_env)
|
os.environ.setdefault("DD_ENV", dd_env)
|
||||||
@@ -273,32 +273,33 @@ def create_application() -> "FastAPI":
|
|||||||
os.environ.setdefault("DD_VERSION", letta_version)
|
os.environ.setdefault("DD_VERSION", letta_version)
|
||||||
os.environ.setdefault("DD_AGENT_HOST", telemetry_settings.datadog_agent_host)
|
os.environ.setdefault("DD_AGENT_HOST", telemetry_settings.datadog_agent_host)
|
||||||
os.environ.setdefault("DD_TRACE_AGENT_PORT", str(telemetry_settings.datadog_agent_port))
|
os.environ.setdefault("DD_TRACE_AGENT_PORT", str(telemetry_settings.datadog_agent_port))
|
||||||
os.environ.setdefault("DD_PROFILING_ENABLED", "true")
|
os.environ.setdefault("DD_PROFILING_ENABLED", str(telemetry_settings.datadog_profiling_enabled).lower())
|
||||||
os.environ.setdefault("DD_PROFILING_MEMORY_ENABLED", str(telemetry_settings.datadog_profiling_memory_enabled).lower())
|
os.environ.setdefault("DD_PROFILING_MEMORY_ENABLED", str(telemetry_settings.datadog_profiling_memory_enabled).lower())
|
||||||
os.environ.setdefault("DD_PROFILING_HEAP_ENABLED", str(telemetry_settings.datadog_profiling_heap_enabled).lower())
|
os.environ.setdefault("DD_PROFILING_HEAP_ENABLED", str(telemetry_settings.datadog_profiling_heap_enabled).lower())
|
||||||
|
|
||||||
from ddtrace.profiling import Profiler
|
if telemetry_settings.datadog_profiling_enabled:
|
||||||
|
from ddtrace.profiling import Profiler
|
||||||
|
|
||||||
# Initialize and start profiler
|
# Initialize and start profiler
|
||||||
profiler = Profiler(
|
profiler = Profiler(
|
||||||
env=dd_env,
|
env=dd_env,
|
||||||
service=telemetry_settings.datadog_service_name,
|
service=telemetry_settings.datadog_service_name,
|
||||||
version=letta_version,
|
version=letta_version,
|
||||||
)
|
)
|
||||||
profiler.start()
|
profiler.start()
|
||||||
|
|
||||||
# Log Git metadata for source code integration
|
# Log Git metadata for source code integration
|
||||||
git_info = ""
|
git_info = ""
|
||||||
if telemetry_settings.datadog_git_commit_sha:
|
if telemetry_settings.datadog_git_commit_sha:
|
||||||
git_info = f", commit={telemetry_settings.datadog_git_commit_sha[:8]}"
|
git_info = f", commit={telemetry_settings.datadog_git_commit_sha[:8]}"
|
||||||
if telemetry_settings.datadog_git_repository_url:
|
if telemetry_settings.datadog_git_repository_url:
|
||||||
git_info += f", repo={telemetry_settings.datadog_git_repository_url}"
|
git_info += f", repo={telemetry_settings.datadog_git_repository_url}"
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Datadog profiling enabled: env={dd_env}, "
|
f"Datadog profiling enabled: env={dd_env}, "
|
||||||
f"service={telemetry_settings.datadog_service_name}, "
|
f"service={telemetry_settings.datadog_service_name}, "
|
||||||
f"agent={telemetry_settings.datadog_agent_host}:{telemetry_settings.datadog_agent_port}{git_info}"
|
f"agent={telemetry_settings.datadog_agent_host}:{telemetry_settings.datadog_agent_port}{git_info}"
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to initialize Datadog profiling: {e}", exc_info=True)
|
logger.error(f"Failed to initialize Datadog profiling: {e}", exc_info=True)
|
||||||
if SENTRY_ENABLED:
|
if SENTRY_ENABLED:
|
||||||
|
|||||||
@@ -426,6 +426,9 @@ class TelemetrySettings(BaseSettings):
|
|||||||
)
|
)
|
||||||
datadog_agent_port: int = Field(default=8126, ge=1, le=65535, description="Datadog trace agent port (typically 8126 for traces).")
|
datadog_agent_port: int = Field(default=8126, ge=1, le=65535, description="Datadog trace agent port (typically 8126 for traces).")
|
||||||
datadog_service_name: str = Field(default="letta-server", description="Service name for Datadog profiling.")
|
datadog_service_name: str = Field(default="letta-server", description="Service name for Datadog profiling.")
|
||||||
|
|
||||||
|
datadog_profiling_enabled: bool = Field(default=False, description="Enable Datadog profiling.")
|
||||||
|
|
||||||
datadog_profiling_memory_enabled: bool = Field(default=False, description="Enable memory profiling in Datadog.")
|
datadog_profiling_memory_enabled: bool = Field(default=False, description="Enable memory profiling in Datadog.")
|
||||||
datadog_profiling_heap_enabled: bool = Field(default=False, description="Enable heap profiling in Datadog.")
|
datadog_profiling_heap_enabled: bool = Field(default=False, description="Enable heap profiling in Datadog.")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user