mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
feat(integrations): add telemetry.dev logging integration
This commit is contained in:
parent
c274cf321c
commit
90682100e0
6 changed files with 78 additions and 0 deletions
|
|
@ -128,6 +128,7 @@ _custom_logger_compatible_callbacks_literal = Literal[
|
|||
"arize",
|
||||
"arize_phoenix",
|
||||
"langtrace",
|
||||
"telemetry_dev",
|
||||
"gcs_bucket",
|
||||
"azure_storage",
|
||||
"opik",
|
||||
|
|
|
|||
3
litellm/integrations/telemetry_dev/__init__.py
Normal file
3
litellm/integrations/telemetry_dev/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from litellm.integrations.telemetry_dev.telemetry_dev import TelemetryDevLogger
|
||||
|
||||
__all__ = ["TelemetryDevLogger"]
|
||||
47
litellm/integrations/telemetry_dev/telemetry_dev.py
Normal file
47
litellm/integrations/telemetry_dev/telemetry_dev.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import os
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from litellm.integrations.opentelemetry import OpenTelemetry
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from litellm.integrations.opentelemetry import OpenTelemetryConfig
|
||||
from litellm.types.integrations.arize import Protocol
|
||||
else:
|
||||
Protocol = Any
|
||||
OpenTelemetryConfig = Any
|
||||
|
||||
|
||||
class TelemetryDevConfig:
|
||||
"""Configuration for the telemetry.dev OTLP integration."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
otlp_auth_headers: str,
|
||||
protocol: Protocol,
|
||||
endpoint: str,
|
||||
):
|
||||
self.otlp_auth_headers = otlp_auth_headers
|
||||
self.protocol = protocol
|
||||
self.endpoint = endpoint
|
||||
|
||||
|
||||
class TelemetryDevLogger(OpenTelemetry):
|
||||
"""telemetry.dev logger that extends OpenTelemetry for OTLP export."""
|
||||
|
||||
@staticmethod
|
||||
def get_telemetry_dev_config() -> TelemetryDevConfig:
|
||||
api_key = os.environ.get("TELEMETRY_DEV_API_KEY")
|
||||
if not api_key:
|
||||
raise ValueError(
|
||||
"TELEMETRY_DEV_API_KEY environment variable is required for the telemetry.dev integration."
|
||||
)
|
||||
|
||||
base_url = os.environ.get(
|
||||
"TELEMETRY_DEV_BASE_URL", "https://ingest.telemetry.dev"
|
||||
).rstrip("/")
|
||||
|
||||
return TelemetryDevConfig(
|
||||
otlp_auth_headers=f"Authorization=Bearer {api_key}",
|
||||
protocol="otlp_http",
|
||||
endpoint=f"{base_url}/v1/traces",
|
||||
)
|
||||
|
|
@ -85,6 +85,7 @@ class CustomLoggerRegistry:
|
|||
"langfuse_otel": OpenTelemetry,
|
||||
"arize_phoenix": OpenTelemetry,
|
||||
"langtrace": OpenTelemetry,
|
||||
"telemetry_dev": OpenTelemetry,
|
||||
"weave_otel": OpenTelemetry,
|
||||
"levo": OpenTelemetry,
|
||||
"mlflow": MlflowLogger,
|
||||
|
|
|
|||
|
|
@ -3825,6 +3825,31 @@ def _init_custom_logger_compatible_class(
|
|||
_levo_otel_logger = LevoLogger(config=otel_config, callback_name="levo")
|
||||
_in_memory_loggers.append(_levo_otel_logger)
|
||||
return _levo_otel_logger # type: ignore
|
||||
elif logging_integration == "telemetry_dev":
|
||||
from litellm.integrations.opentelemetry import OpenTelemetryConfig
|
||||
from litellm.integrations.telemetry_dev.telemetry_dev import (
|
||||
TelemetryDevLogger,
|
||||
)
|
||||
|
||||
telemetry_dev_config = TelemetryDevLogger.get_telemetry_dev_config()
|
||||
otel_config = OpenTelemetryConfig(
|
||||
exporter=telemetry_dev_config.protocol,
|
||||
endpoint=telemetry_dev_config.endpoint,
|
||||
headers=telemetry_dev_config.otlp_auth_headers,
|
||||
)
|
||||
|
||||
for callback in _in_memory_loggers:
|
||||
if (
|
||||
isinstance(callback, TelemetryDevLogger)
|
||||
and callback.callback_name == "telemetry_dev"
|
||||
):
|
||||
return callback # type: ignore
|
||||
|
||||
telemetry_dev_logger = TelemetryDevLogger(
|
||||
config=otel_config, callback_name="telemetry_dev"
|
||||
)
|
||||
_in_memory_loggers.append(telemetry_dev_logger)
|
||||
return telemetry_dev_logger # type: ignore
|
||||
elif logging_integration == "otel":
|
||||
# Gate the new typed V2 adapter behind LITELLM_OTEL_V2. When off,
|
||||
# the legacy 3,227-line god-class is used unchanged. The two are
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ expected_env_vars = {
|
|||
"GOOGLE_APPLICATION_CREDENTIALS": "gcs_credentials",
|
||||
"OPIK_API_KEY": "opik_api_key",
|
||||
"LANGTRACE_API_KEY": "langtrace_api_key",
|
||||
"TELEMETRY_DEV_API_KEY": "td_live_test",
|
||||
"LOGFIRE_TOKEN": "logfire_token",
|
||||
"ARIZE_SPACE_KEY": "arize_space_key",
|
||||
"ARIZE_API_KEY": "arize_api_key",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue