-
Notifications
You must be signed in to change notification settings - Fork 893
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
Can the exemplar filter and reservoir be merged? #3812
Comments
This should actually be false, according to the specification. ExemplarReservior SHOULD have access to context, especially since we need TraceContext for IDs we record. I think the point @jmacd made was that you can highly optimise what information you unpack look at using a global filter by preventing a lot of allocations/boilerplate filtering before passing to the reservoir.
Again, this is already true in the specification.
I understand the notion of a decorator. Can you expand how this would interact with configuration? If you look at #3820 - I do a few things to help with this question:
Basically, my opinion, is that the specification today would require an SDK-wide filter configuration parameter of |
You are correct 👍 . I'll update the description. |
This sounds good to me 👍. I'm in favor of that change as a way to resolve this issue. |
…d as an interface.
…emetry#3820) Fixes open-telemetry#2922 Fixes open-telemetry#3812 Related to open-telemetry#3756 ## Changes - Cleans up language around exposing `ExemplarReservoir`. (Remove TODO, e.g.) - Remove `ExemplarFilter` interface but keep configuration options. (see open-telemetry#3812) - Clarify / simplify Spec Compliance matrix for existing state of the Exemplar Specification. Prototype in java: open-telemetry/opentelemetry-java#5960
Exemplar filters filter measurements prior to offering them to an exemplar reservoir. This "pre-filtering" functionality overlaps with the exemplar reservoir which will also sample measurements it is offered. Do we need these two different objects or can they be simplified into one?
Scope
Single global On/Off switch
The exemplar filter has be stated to be an object associated with the entire SDK, not just a single metric pipeline like the exemplar reservoir. This means that it can be used to "globally" apply pre-filtering functionality (i.e. turn on or off exemplars). For this reason it is argued that exemplar filters should remain independent.
Conversely, exemplar filters cannot be applied more specific then the entire SDK. If a user want some instruments to offer all measurements, some to only offer sampled, and others to drop all they cannot achieve this using exemplar filters. For this reason it is argued that exemplar filters should be combinable with exemplar reservoirs directly.
Preventing repetition
Because exemplar filters are applied to the entire SDK, this means every exemplar reservoirs do not need to reproduce the functionality of the exemplar filters. If an exemplar filter was merged into the exemplar reservoir directly, the exemplar reservoir would need to be configurable with each filter setting or a separate reservoir would be needed for each combination of filter-to-reservoir (i.e one for keep all into a random naive reservoir, keep only sampled into a naive reservoir).
For this reason it is argued that exemplar filters should remain independent.
Proposals
Providing decorator exemplar reservoirs
cc @jack-berg @jsuereth @jmacd
The text was updated successfully, but these errors were encountered: