DatadogExtension

This extension adds support for tracing with Datadog.

Note

Make sure you have ddtrace installed before using this extension.

Terminal window
pip install ddtrace

Usage example:

import strawberry
from strawberry.extensions.tracing import DatadogTracingExtension
schema = strawberry.Schema(
Query,
extensions=[
DatadogTracingExtension,
],
)
Note

If you are not running in an Async context then you’ll need to use the sync version:

import strawberry
from strawberry.extensions.tracing import DatadogTracingExtensionSync
schema = strawberry.Schema(
Query,
extensions=[
DatadogTracingExtensionSync,
],
)

API reference:

No arguments

Extending the extension

Overriding the create_span method

You can customize any of the spans or add tags to them by overriding the create_span method.

Example:

from ddtrace import Span
from strawberry.extensions import LifecycleStep
from strawberry.extensions.tracing import DatadogTracingExtension
class DataDogExtension(DatadogTracingExtension):
def create_span(
self,
lifecycle_step: LifecycleStep,
name: str,
**kwargs,
) -> Span:
span = super().create_span(lifecycle_step, name, **kwargs)
if lifecycle_step == LifecycleStep.OPERATION:
span.set_tag("graphql.query", self.execution_context.query)
return span