Skip to content

Latest commit

 

History

History
101 lines (71 loc) · 1.75 KB

File metadata and controls

101 lines (71 loc) · 1.75 KB
title summary tags
Datadog
Add Datadog tracing to your GraphQL server.
tracing

DatadogExtension

This extension adds support for tracing with Datadog.

Make sure you have ddtrace installed before using this extension.

pip install ddtrace

Usage example:

import strawberry
from strawberry.extensions.tracing import DatadogTracingExtension


@strawberry.type
class Query:
    @strawberry.field
    def hello(self) -> str:
        return "Hello, world!"


schema = strawberry.Schema(
    Query,
    extensions=[
        DatadogTracingExtension,
    ],
)

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


@strawberry.type
class Query:
    @strawberry.field
    def hello(self) -> str:
        return "Hello, world!"


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