-
Notifications
You must be signed in to change notification settings - Fork 2.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
Add jaeger-v2 single binary based on OTEL collector #4766
Add jaeger-v2 single binary based on OTEL collector #4766
Conversation
I am not sure what benefits this approach will give us from the functionality standpoint. Also the Personally, I would prefer maintaining ecosystem that is closer to OTEL (collector builder) and have an opinionated OTELcol build with Jaeger components. |
@pavolloffay yeah, I tend to agree. Especially the binary size increase seems unreasonable to me. The alternative approach is to define another binary, but still with a hardcoded list of extensions, like in this PR, without using Do you have some thoughts on why we would want to use |
Codecov ReportAttention:
... and 1 file with indirect coverage changes 📢 Thoughts on this report? Let us know!. |
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Signed-off-by: Yuri Shkuro <github@ysh.us>
316b3ce
to
1d27c82
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏼 Amazing! Keen to see how this all fits together with the SPM feature, would be awesome to not require running a separate OTEL collector for the setup.
// add-ons | ||
storageexporter.NewFactory(), // generic exporter to Jaeger v1 spanstore.SpanWriter | ||
kafkaexporter.NewFactory(), | ||
// elasticsearch.NewFactory(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why exclude the elasticsearch exporter? Is it because storageexporter should already cover the ability to write to elasticsearch using jaeger's native elasticsearch span writer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh, because there isn't one, it's just the code I copied from Pavol's repo where es exporter module was defined, but was not implemented.
Initially yes, the generic support for existing storage backends is done via storageexporter
, which converts OTLP into Jaeger model and sends to SpanWriter one span at a time. As we build OTLP-native exporters people can migrate to those.
Co-authored-by: Albert <26584478+albertteoh@users.noreply.github.com> Signed-off-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
Which problem is this PR solving?
Description of the changes
jaeger-v2
using OTEL Collector frameworkjaeger-collector
normally hasRoadmap
https://docs.google.com/document/d/1s4_6VgAS7qAVp6iEm5KYvpiGw3h2Ja5T5HpKo29iv00/edit
Design
jaeger_query
extension (already working in this PR)Storage
In order to keep the flexibility of mixing & matching storage implementations, all backends can be configured via
jaeger_storage
extension (we may need to addjaeger_metrics_storage
extension in the future). It might look like this:The
jaeger_query
extension then references specific storage factories by name:It's not clear yet if
jaeger_query
extension should simply subsumejaeger_storage
extension, because Query is the only one that needs this generic access to storage, while things like exporters or Kafka ingester (receiver) always deal with a single implementation (because OTEL Coll pipeline allows to connect them with each other, which is not possible with extensions).Trade-offs
ocb
. That means people won't be able to assemble a different version of the collector with other extensions.ocb
in the future, as it makes it easier to write custom in-process exporters for custom storage. It will require converting all the components into their own modules.Next steps
Open Questions
2023-09-23T19:55:46.661-0400 warn zapgrpc/zapgrpc.go:195 [core] [Channel #2 SubChannel #3] grpc: addrConn.createTransport failed to connect to {Addr: ":16685", ServerName: "localhost:16685", }. Err: connection error: desc = "transport: Error while dialing: dial tcp :16685: connect: connection refused" {"grpc_log": true}