-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Make OTel Collector serve Jaeger Remote Sampling directly #500
Comments
Does the Opentelemetry collector have a Kafka exporter that would make the ideal option possible? |
@joe-elliott I just looked and while OpenCensus Collector had one, it was removed when it changed to OTel Collector. |
We are currently planning to run the below which has the same number of components as your ideal path and supports remote sampling. Would this work for you all?
I intend to submit fixes for #491 and #492 this week which should make this a possibility. |
It wouldn't work for what we are trying to do. The idea is to experiment with OTel Collector features (tail sampling, zpages, multiples exporters) while keeping the functionalities of Jaeger almost the same (Remote Sampling hardcoded in a file, the UI, etc) |
I believe this is really two separate issues:
In both cases this would be replacing pieces of the Jaeger backend instead of just supporting export to the Jaeger backend. As such, if we decide to do it, I think they should be implemented in contrib instead of the main repo. Kafka Sampling Strategies However, the difficult part is that the Jaeger Collector accepts spans on the same port that it serves the sampling strategy. Additionally the Jaeger agent can not be configured to push spans to a different port then it gets its sampling strategy from (otelcol as a Jaeger agent can). Options include:
@tigrannajaryan @pjanotti Thoughts? |
The rest makes sense. Good catch about that same port problem 👍 |
@joe-elliott I think option 2 is reasonable: it keeps the same behavior that the Jaeger agent expects and it is part of their "protocol". It should be configurable so it can be enabled/disabled as needed. |
@ledor473 @joe-elliott how common is the usage of the Kafka exporter on Jaeger Collector? At first, my guess is that it fits better on the contrib repo but not 100% sure. |
So I don't mind doing this in main repo. It would be easier and more flexible than putting it in contrib. I was just pointing out that these changes would be the first things that replace Jaeger collector functionality. Everything else we've done interfaces with the Jaeger collector and sees that as the beginning of the "Jaeger backend". As far as usage of the Kafka exporter, I can't say. We personally use Kafka. I would be glad to move forward with both of these additions in either contrib or the main repo pending a decision. |
We do use Kafka as well and as far as I know Uber does as well |
@joe-elliott we don't target replacing the Jaeger collector but my impression is that the usability of the Jaeger agent receiver itself gets very limited by the lack of supporting the config file. That's why my preference is to implement it on the core repo. /cc @open-telemetry/collector-maintainers and @open-telemetry/collector-approvers @ledor473 we can start with a Kafka exporter on contrib and later if deemed appropriate we can move it to core. |
Added support for hosting a jaeger remote sampling file as requested in #500. This was added to the core repo per discussion there. Link to tracking Issue: Fixes #500 Testing: Tests were added covering config, receiver creation and receiver functionality. Documentation: Added documentation on the new strategy_file config option.
I've been catching up on this (fairly old) issue and the lineage of changes related to JaegerRemoteSampler, such as this mix of merged/abandoned PRs:
One thing that's throwing me off a little:
Is it accurate to interpret this functionality (collector proxying config files to agents) as being usable by either Jaeger instrumentation or supporting OpenTelemetry agent implementations? I.e., can OTEL agents retrieve this config from collector (when configured to hit the config endpoint) even if they're not actually submitting Jaeger-format traces at all? Maybe the packaging is an artifact of some portion of the code being reused from jaeger, and not wanting that to leak out into the core collector packages? Finally, I find this line of work to be interesting and worth continuing: #2681. That PR has been abandoned for some time because the author didn't have the bandwidth to finish. Is there any other (e.g,. new in the years that have passed) blocker to building such polling behavior, or to further extend this remote sampler configuration serving functionality with optional/configurable additions? Edit: today, I discovered this seemingly newer (from 2022) "extension" (!= "receiver") for JaegerRemoteSampler configuration serving. Is anyone with an interest in this (i.e., in this issue or other linked issues) interested in and/or using this new extension? Should it be perceived as a preferred alternative to the Thanks! |
The Jaeger Remote Sampling was introduced in #448 but as of it is now, it only fetches the configuration from a remote Jaeger Collector. This makes it impossible to drop the OTel Collector as a replacement for the Jaeger Collector.
If we could add a way to parse and serve the sampling configuration directly, we would be closer to be able to replace it. Here's the related documentation: https://www.jaegertracing.io/docs/1.16/sampling/#collector-sampling-configuration
The architecture without OTel would look like this:
The current implementation would force us to run this:
Ideally, we would run this:
The text was updated successfully, but these errors were encountered: