OpenTelemetryExtension

This extension adds tracing information that is compatible with Open Telemetry.

📝 Note

This extension requires additional requirements:

pip install 'strawberry-graphql[opentelemetry]'

Usage example:

import strawberry
from strawberry.extensions.tracing import OpenTelemetryExtension
schema = strawberry.Schema(
Query,
extensions=[
OpenTelemetryExtension,
],
)
📝 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 OpenTelemetryExtensionSync
schema = strawberry.Schema(
Query,
extensions=[
OpenTelemetryExtensionSync,
],
)

API reference:

class OpenTelemetryExtension(arg_filter=None):
...

arg_filter: Optional[ArgFilter]

A function to filter certain field arguments from being included in the tracing data.

ArgFilter = Callable[[Dict[str, Any], GraphQLResolveInfo], Dict[str, Any]]

More examples:

Using arg_filter
import strawberry
from strawberry.extensions.tracing import OpenTelemetryExtensionSync
def arg_filter(kwargs, info):
filtered_kwargs = {}
for name, value in kwargs:
# Never include any arguments called "password"
if name == "password":
continue
filtered_kwargs[name] = value
return filtered_kwargs
schema = strawberry.Schema(
Query,
extensions=[
OpenTelemetryExtensionSync(
arg_filter=arg_filter,
),
],
)

Was this helpful? What can we improve?

Edit on Github

Newsletter 💌

Do you want to receive the latest updates on Strawberry? Subscribe to our newsletter!