Skip to content

Ability to customize internal telemetry #10663

@yurishkuro

Description

@yurishkuro

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions