Skip to content
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

SDK: Implement Jaeger exporter #469

Closed
pavolloffay opened this issue Jul 19, 2019 · 7 comments · Fixed by #481
Closed

SDK: Implement Jaeger exporter #469

pavolloffay opened this issue Jul 19, 2019 · 7 comments · Fixed by #481
Labels

Comments

@pavolloffay
Copy link
Member

Implement span exporter for Jaeger server.

hint: import from OpenCencus.

@pavolloffay pavolloffay added this to the Basic exporters milestone Jul 19, 2019
@jpkrohling
Copy link
Member

I'm working on this one.

@jpkrohling
Copy link
Member

We have a few options here.

  1. The easiest for a first implementation is probably to add a dependency on the Jaeger Client for Java. A new OpenTelemetry SpanExporter would then create a Jaeger Span, which gets reported to Jaeger Agent/Collector via its own client;
  2. For the long term, it might make sense to avoid a dependency to the Jaeger Client for Java. In the name of maintainability, we'd implement only gRPC/protobuf (preferred) or Thrift. Sending spans to the Jaeger Agent in protobuf format isn't supported yet, so, if we decide to use it already for the first implementation, we'd have support only for communication with the Jaeger Collector, bypassing the agent.

@jpkrohling
Copy link
Member

cc @objectiser, @yurishkuro

@bogdandrutu
Copy link
Member

Please for the moment put it in a separate gradle subproject under exporters/ directory, so that SDK does not depend on this.

@jpkrohling
Copy link
Member

jpkrohling commented Jul 24, 2019

@bogdandrutu, what's the preferred approach? Should we attempt to avoid a dependency to the Jaeger Client, or should we reuse the Jaeger Client when possible (making sure to isolate this as its own module)?

@bogdandrutu
Copy link
Member

I think we aim to become the official client for Jaeger or (recommended), so I think we need to directly implement the wire protocol. Also we already have all the batching logic etc, so no point in using the client unless they have a raw client that is a helper to just talk to the server.

@jpkrohling
Copy link
Member

unless they have a raw client that is a helper to just talk to the server

There's a reporter+sender that could be directly used, but we might want to start supporting gRPC only, as we were already looking to phase out the Thrift channels. And for gRPC, it's quite easy to build the client. The biggest "problem" is to get the proto files, or their outcomes (generated client/models).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants