-
Notifications
You must be signed in to change notification settings - Fork 2k
Ability to customize internal telemetry #10663
Description
Is your feature request related to a problem? Please describe.
Jaeger v2 is built as a custom distribution of collector that combines ingestion capabilities with Jaeger Query & UI extension. Historically we allowed 100% trace sampling for all query endpoints, and none for the receiver endpoints (because tracing receiver endpoints creates a potential for infinite recursive loop of traces).
Now that we're looking at enabling internal telemetry in collector, the TracerProvider is initialized exclusively by collector core and passed to components. Even if the configuration allows to configure a sampler, it would be the same sampler for receivers and extensions.
We need an ability to differentiate how traces are produced for receivers and extensions.
Describe the solution you'd like
There can be multiple options:
- extensive sampler configuration that can vary settings by endpoints
- or just a hook in the core API to customize how providers are created, e.g. a way to inject a custom sampler (for which there may be no configuration support for a while)
Describe alternatives you've considered
We have an option of ignoring TracerProvider passed from the core in some of our components. E.g. we can instruct the user not to configure service: telemetry: traces: (so that Noop provider is passed by default) and instantiate our own provider in the extensions.