Catch the highlights of GraphQLConf 2023! Click for recordings. Or check out our recap blog post.
Documentation
Plugins
Telemetry

Telemetry

The telemetry plugin exports traces information about Conductor to a telemetry backend.

The telemetry plugin exports traces information about the following aspects of Conductor:

  • GraphQL parser (timing)

  • GraphQL execution (operation type, operation body, operation name, timing, errors)

  • Query planning (timing, operation body, operation name)

  • Incoming HTTP requests (attributes, timing, errors)

  • Outgoing HTTP requests (attributes, timing, errors)

When used with a telemtry backend, you can expect to see the following information:

img

Configuration

Reference

service_name
string
default: "conductor"

Configures the service name that reports the telemetry data. This will appear in the telemetry data as the service.name attribute.

targets
array
required

A list of telemetry targets to send telemetry data to.

The telemtry data is scoped per endpoint, and you can specify multiple targets if you need to export stats to multiple backends.

The following options are valid for this field:
stdout

Sends telemetry data to stdout in a human-readable format.

Use this source for debugging purposes, or if you want to pipe the telemetry data to another process.

type
literal: stdout
required

To use this variation, please specify the type: stdout in your configuration.

zipkin

Sends telemetry traces data to a Zipkin collector, using the HTTP protocol.

To get started with Zipkin, use the following command to start the Zipkin collector and UI in your local machine, using Docker:

docker run -d -p 9411:9411 openzipkin/zipkin

type
literal: zipkin
required

To use this variation, please specify the type: zipkin in your configuration.

collector_endpoint
string
default: "http://127.0.0.1:9411/api/v2/spans"

The Zipkin endpoint. Please use full URL endpoint format, e.g. http://127.0.0.1:9411/api/v2/spans.

Open Telemetry (OTLP)

Sends telemetry traces data to an OpenTelemetry backend, using the OTLP protocol.

You can find here a list backends that supports the OTLP format.

type
literal: otlp
required

To use this variation, please specify the type: otlp in your configuration.

endpoint
string
required

The OTLP backend endpoint. The format is based on full URL, e.g. http://localhost:7201.

protocol
default: "grpc"

The OTLP transport to use to export telemetry data.

❗️ The gRPC transport is not supported on WASM runtime (CloudFlare Worker).

The following options are valid for this field:
grpc

Uses GRPC with tonic to send telemetry data.

http

Uses HTTP with http-proto to send telemetry data.

timeout
string
default: "10s"

Export timeout. You can use the human-readable format in this field, e.g. 10s.

gzip_compression
boolean
default: false

Whether to use gzip compression when sending telemetry data.

Please verify your backend supports and enables gzip compression before enabling this option.

Datadog

Sends telemetry traces data to a Datadog agent (local or remote).

To get started with Datadog, make sure you have a Datadog agent running.

type
literal: datadog
required

To use this variation, please specify the type: datadog in your configuration.

agent_endpoint
string
default: "127.0.0.1:8126"

The Datadog agent endpoint. The format is based on hostname and port only, e.g. 127.0.0.1:8126.

Jaeger

Sends telemetry traces data to a Jaeger backend, using the native protocol of Jaeger (UDP) using thrift.

Note: Jaeger also supports OTLP format, so it’s preferred to use the otlp target.

❗️ This target is not available on WASM runtime (CloudFlare Worker).

To get started with Jaeger, use the following command to start the Jaeger backend and UI in your local machine, using Docker:

docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest

type
literal: jaeger
required

To use this variation, please specify the type: jaeger in your configuration.

endpoint
string
default: "127.0.0.1:6831"

The UDP endpoint of the Jaeger backend. The format is based on hostname and port only, e.g. 127.0.0.1:6831.