Compare commits

...
Sign in to create a new pull request.

3 commits

Author SHA1 Message Date
Ishaan Jaff
8479ab95b3 fix _get_datadog_service 2024-11-26 22:07:37 -08:00
Ishaan Jaff
9ee19cde39 test_datadog_payload_environment_variables 2024-11-26 22:06:11 -08:00
Ishaan Jaff
673fd7e257 dd logger, inherit from .envs 2024-11-26 22:01:06 -08:00
3 changed files with 77 additions and 13 deletions

View file

@ -279,11 +279,11 @@ class DataDogLogger(CustomBatchLogger):
verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload) verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload)
dd_payload = DatadogPayload( dd_payload = DatadogPayload(
ddsource=os.getenv("DD_SOURCE", "litellm"), ddsource=self._get_datadog_source(),
ddtags="", ddtags=self._get_datadog_tags(),
hostname="", hostname=self._get_datadog_hostname(),
message=json_payload, message=json_payload,
service="litellm-server", service=self._get_datadog_service(),
status=status, status=status,
) )
return dd_payload return dd_payload
@ -387,11 +387,11 @@ class DataDogLogger(CustomBatchLogger):
json_payload = json.dumps(_exception_payload) json_payload = json.dumps(_exception_payload)
verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload) verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload)
dd_payload = DatadogPayload( dd_payload = DatadogPayload(
ddsource=os.getenv("DD_SOURCE", "litellm"), ddsource=self._get_datadog_source(),
ddtags="", ddtags=self._get_datadog_tags(),
hostname="", hostname=self._get_datadog_hostname(),
message=json_payload, message=json_payload,
service="litellm-server", service=self._get_datadog_service(),
status=DataDogStatus.ERROR, status=DataDogStatus.ERROR,
) )
@ -473,11 +473,31 @@ class DataDogLogger(CustomBatchLogger):
verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload) verbose_logger.debug("Datadog: Logger - Logging payload = %s", json_payload)
dd_payload = DatadogPayload( dd_payload = DatadogPayload(
ddsource=os.getenv("DD_SOURCE", "litellm"), ddsource=self._get_datadog_source(),
ddtags="", ddtags=self._get_datadog_tags(),
hostname="", hostname=self._get_datadog_hostname(),
message=json_payload, message=json_payload,
service="litellm-server", service=self._get_datadog_service(),
status=DataDogStatus.INFO, status=DataDogStatus.INFO,
) )
return dd_payload return dd_payload
@staticmethod
def _get_datadog_tags():
return f"env:{os.getenv('DD_ENV', 'unknown')},service:{os.getenv('DD_SERVICE', 'litellm')},version:{os.getenv('DD_VERSION', 'unknown')}"
@staticmethod
def _get_datadog_source():
return os.getenv("DD_SOURCE", "litellm")
@staticmethod
def _get_datadog_service():
return os.getenv("DD_SERVICE", "litellm-server")
@staticmethod
def _get_datadog_hostname():
return ""
@staticmethod
def _get_datadog_env():
return os.getenv("DD_ENV", "unknown")

View file

@ -2,4 +2,4 @@ include:
- model_config.yaml - model_config.yaml
litellm_settings: litellm_settings:
callbacks: ["prometheus"] callbacks: ["datadog"]

View file

@ -422,3 +422,47 @@ async def test_datadog_post_call_failure_hook():
except Exception as e: except Exception as e:
pytest.fail(f"Test failed with exception: {str(e)}") pytest.fail(f"Test failed with exception: {str(e)}")
@pytest.mark.asyncio
async def test_datadog_payload_environment_variables():
"""Test that DataDog payload correctly includes environment variables in the payload structure"""
try:
# Set test environment variables
test_env = {
"DD_ENV": "test-env",
"DD_SERVICE": "test-service",
"DD_VERSION": "1.0.0",
"DD_SOURCE": "test-source",
"DD_API_KEY": "fake-key",
"DD_SITE": "datadoghq.com",
}
with patch.dict(os.environ, test_env):
dd_logger = DataDogLogger()
standard_payload = create_standard_logging_payload()
# Create the payload
dd_payload = dd_logger.create_datadog_logging_payload(
kwargs={"standard_logging_object": standard_payload},
response_obj=None,
start_time=datetime.now(),
end_time=datetime.now(),
)
print("dd payload=", json.dumps(dd_payload, indent=2))
# Verify payload structure and environment variables
assert (
dd_payload["ddsource"] == "test-source"
), "Incorrect source in payload"
assert (
dd_payload["service"] == "test-service"
), "Incorrect service in payload"
assert (
dd_payload["ddtags"]
== "env:test-env,service:test-service,version:1.0.0"
), "Incorrect tags in payload"
except Exception as e:
pytest.fail(f"Test failed with exception: {str(e)}")