Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document enhanced tracing in Studio via OTel #5967

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions docs/source/configuration/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -865,6 +865,20 @@ You won't see an immediate change in checks behavior when you first turn on exte

</Note>

<MinVersion version="1.49.0">

### Enhanced tracing in Studio via OpenTelemetry

</MinVersion>

<ExperimentalFeature />

Beginning in v1.49.0, the router supports sending traces to Studio via the more detailed OTel (OpenTelemetry) protocol.
Support for OTel traces has historically only been available for 3rd party APM tools. With this option,
Studio can now provide a much more granular view of Router internals than the legacy Apollo tracing protocol.

See [Enhanced tracing in Studio via OTel](./telemetry/apollo-telemetry#enhanced-tracing-in-studio-via-opentelemetry).
Comment on lines +876 to +880
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Beginning in v1.49.0, the router supports sending traces to Studio via the more detailed OTel (OpenTelemetry) protocol.
Support for OTel traces has historically only been available for 3rd party APM tools. With this option,
Studio can now provide a much more granular view of Router internals than the legacy Apollo tracing protocol.
See [Enhanced tracing in Studio via OTel](./telemetry/apollo-telemetry#enhanced-tracing-in-studio-via-opentelemetry).
Beginning in v1.49.0, the router supports sending traces to Studio via the OpenTelemetry Protocol (OTLP).
Support for OTLP traces has historically only been available for third-party APM tools. With this option,
Studio can now provide a much more granular and detailed view of router internals than the previous Apollo tracing protocol.
To learn more, see [Enhanced tracing in Studio via OpenTelemetry](./telemetry/apollo-telemetry#enhanced-tracing-in-studio-via-opentelemetry).


### Safelisting with persisted queries

You can enhance your graph's security with GraphOS Router by maintaining a persisted query list (PQL), an operation safelist made by your first-party apps. As opposed to automatic persisted queries (APQ) where operations are automatically cached, operations must be preregistered to the PQL. Once configured, the router checks incoming requests against the PQL.
Expand Down
64 changes: 64 additions & 0 deletions docs/source/configuration/telemetry/apollo-telemetry.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,70 @@ telemetry:
field_level_instrumentation_sampler: always_off
```

<MinVersion version="1.49.0">

### Enhanced tracing in Studio via OpenTelemetry

</MinVersion>

<ExperimentalFeature />

Beginning in v1.49.0, the router supports sending traces to Studio via the more detailed OTel (OpenTelemetry) protocol.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing references to "OTel protocol" to "OTLP" to be consistent with the option's name and the well-known OTLP acronym

Suggested change
Beginning in v1.49.0, the router supports sending traces to Studio via the more detailed OTel (OpenTelemetry) protocol.
Beginning in v1.49.0, the router supports sending traces to Studio via the OpenTelemetry protocol (OTLP).
Support for OTLP traces has historically only been available for third-party APM tools. With this option,
Studio can now provide a much more granular and detailed view of router internals than the previous Apollo tracing protocol.

Support for OTel traces has historically only been available for 3rd party APM tools. With this option,
Studio can now provide a much more granular view of Router internals than the legacy Apollo tracing protocol.

Benefits include:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Benefits include:
Benefits of OTLP traces include:


- A comprehensive way to visualize the Router execution path in Studio.
- Additional spans that were previously not included in Studio traces, such as query parsing, planning, execution, and more.
- Additional attributes including HTTP request details, REST connector details, and more.
Comment on lines +89 to +91
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- A comprehensive way to visualize the Router execution path in Studio.
- Additional spans that were previously not included in Studio traces, such as query parsing, planning, execution, and more.
- Additional attributes including HTTP request details, REST connector details, and more.
- Comprehensive visualization of the router execution path in Studio
- New spans in Studio traces, including query parsing, planning, execution, and more
- New attributes, including HTTP request details, REST connector details, and more


It is expected that this will become the default in a future version of Router.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing, generally we don't document roadmap in docs

Suggested change
It is expected that this will become the default in a future version of Router.


#### Configuration

This change adds a new configuration option `telemetry.apollo.experimental_otlp_tracing_sampler`. Use this option to send
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This change adds a new configuration option `telemetry.apollo.experimental_otlp_tracing_sampler`. Use this option to send
You can configure OTel traces with the `telemetry.apollo.experimental_otlp_tracing_sampler` option. Use this option to send

a percentage of traces to Studio via OTLP instead of the native Apollo Usage Reporting protocol. Supported values:

- `always_off` (default): send all traces via the legacy Apollo Usage Reporting protocol.
- `always_on`: send all traces via OTLP.
- `0.0 - 1.0` (used for testing): the ratio of traces to send via OTLP (0.5 = 50 / 50).
Comment on lines +100 to +102
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `always_off` (default): send all traces via the legacy Apollo Usage Reporting protocol.
- `always_on`: send all traces via OTLP.
- `0.0 - 1.0` (used for testing): the ratio of traces to send via OTLP (0.5 = 50 / 50).
- `always_off` (default): send all traces via the legacy Apollo Usage Reporting protocol
- `always_on`: send all traces via OTLP
- `0.0 - 1.0` (used for testing): the ratio of traces to send via OTLP (0.4 = 40% OTLP / 60% legacy)


Note that this sampler is only applied _after_ the common tracing sampler, for example:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Note that this sampler is only applied _after_ the common tracing sampler, for example:
This sampler is applied after the common tracing sampler.


#### Sample 1% of traces, send all traces via OTLP:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#### Sample 1% of traces, send all traces via OTLP:
#### Example configuration
An example configuration that samples 1% of traces and sends all traces via OTLP:


```yaml
telemetry:
apollo:
# Send all traces via OTLP
experimental_otlp_tracing_sampler: always_on

exporters:
tracing:
common:
# Sample traces at 1% of all traffic
sampler: 0.01
```

OTel traces sent to Studio will not necessarily be identical to the ones sent to 3rd Party APM tools via OTLP:

- Only specific OTLP attributes will be included for parity with what is provided in legacy traces today. This ensures that data privacy
is maintained in an equivalent manner. The existing Router configuration options for Apollo telemetry will continue to function
with OTLP traces, such as forwarding of GraphQL errors, headers, and variables.
- Some features of OTLP traces may only be available in Studio and not in 3rd Party APM tools (e.g. resolver-level timing information from
[Federated Tracing](../../federation/metrics/#enabling-federated-tracing)).
Comment on lines +121 to +127
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
OTel traces sent to Studio will not necessarily be identical to the ones sent to 3rd Party APM tools via OTLP:
- Only specific OTLP attributes will be included for parity with what is provided in legacy traces today. This ensures that data privacy
is maintained in an equivalent manner. The existing Router configuration options for Apollo telemetry will continue to function
with OTLP traces, such as forwarding of GraphQL errors, headers, and variables.
- Some features of OTLP traces may only be available in Studio and not in 3rd Party APM tools (e.g. resolver-level timing information from
[Federated Tracing](../../federation/metrics/#enabling-federated-tracing)).
OTLP traces sent to Studio aren't necessarily identical to ones sent to third-party APM tools via OTLP:
- Only specific OTLP attributes are included for parity with legacy traces today. This ensures that data privacy is maintained in an equivalent manner. Existing router configuration options for Apollo telemetry will continue to function with OTLP traces, including forwarding of GraphQL errors, headers, and variables.
- Some features of OTLP traces are available only in Studio and not in third-party APM tools, such as resolver-level timing information from [Federated Tracing](../../federation/metrics/#enabling-federated-tracing)


<Note>

This change results in using a new wire protocol for traces, and some users may experience an increase in tracing traffic
to GraphOS Studio due to the additional detail being captured. In exceptional situations it may be necessary to send fewer traces.
This can be achieved via sending fewer traces (`telemetry.exporters.tracing.common.sampler`) or as a last resort, falling back
to the old protocol via `telemetry.apollo.otlp_tracing_sampler` to send fewer OTLP traces or fully disable them.
Any performance regressions due to the new tracing protocol should also be reported to the Apollo support team.
Comment on lines +131 to +135
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This change results in using a new wire protocol for traces, and some users may experience an increase in tracing traffic
to GraphOS Studio due to the additional detail being captured. In exceptional situations it may be necessary to send fewer traces.
This can be achieved via sending fewer traces (`telemetry.exporters.tracing.common.sampler`) or as a last resort, falling back
to the old protocol via `telemetry.apollo.otlp_tracing_sampler` to send fewer OTLP traces or fully disable them.
Any performance regressions due to the new tracing protocol should also be reported to the Apollo support team.
You may experience an increase in tracing traffic sent to GraphOS Studio due to the additional detail captured by the new wire protocol. In exceptional situations, you may need to send fewer traces.
To send fewer traces, configure `telemetry.exporters.tracing.common.sampler` or revert to the old protocol via `telemetry.apollo.otlp_tracing_sampler` to send fewer OTLP traces or to disable them.
For performance regressions due to the new tracing protocol, you should report them to the [Apollo support team](https://www.apollographql.com/support).


</Note>

### Experimental local field metrics

Apollo Router can send field-level metrics to GraphOS without using FTV1 tracing. This feature is experimental and is not yet displayable in GraphOS Studio.
Expand Down
Loading