-
Notifications
You must be signed in to change notification settings - Fork 1k
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 a new module supporting jaeger - opentracing #101
Conversation
cmoulliard
commented
Jun 6, 2017
- Added a new maven module supporting jaeger - opentracing
- Added a starter to deploy a Spring Boot Jaeger application
- Project has been tested using the ola spring boot application
@@ -20,6 +20,9 @@ | |||
<mockwebserver.version>0.0.12</mockwebserver.version> | |||
<restassured.version>3.0.2</restassured.version> | |||
<spock-spring.version>1.0-groovy-2.3</spock-spring.version> | |||
<version.jaeger>0.19.0</version.jaeger> | |||
<io.opentracing.version>0.22.0</io.opentracing.version> |
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.
fyi 0.22 is api incompatible with 0.30
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.
This is fine here, these versions match
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.
I will update the version as jaeger-core - 0.19.0 has a dep with opentracing 0.22
[INFO] com.uber.jaeger:jaeger-core:jar:0.19.0
[INFO] +- com.uber.jaeger:jaeger-thrift:jar:0.19.0:compile
[INFO] | \- org.apache.thrift:libthrift:jar:0.9.2:compile
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.2.5:compile
[INFO] | | +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile
[INFO] | \- org.apache.httpcomponents:httpcore:jar:4.2.4:compile
[INFO] +- io.opentracing:opentracing-api:jar:0.22.0:compile
[INFO] +- com.google.code.gson:gson:jar:2.8.0:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.16:compile
my 2p: this seems like more a community project than something we'd have in spring-cloud-kubernetes. sleuth is the spring-cloud's tracing solution. We don't want to inherit maintenance for third party apis, particularly api unstable ones never requested by an end user |
@ConfigurationProperties("spring.cloud.kubernetes.jaeger.discovery") | ||
public class KubernetesJaegerDiscoveryProperties { | ||
|
||
private String tracerServerName = "jaeger-all-in-one"; |
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.
Should be called agentServiceName
data could be sent to agent and collector.
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.
Will do that.
URL url = new URL(serviceURL); | ||
Sender sender = new UdpSender(url.getHost(), url.getPort(), 0); | ||
return new com.uber.jaeger.Tracer.Builder(serviceName, | ||
new RemoteReporter(sender, 100, 50, |
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.
Some of these properties should be configurable, see https://github.com/uber/jaeger-client-java/tree/master/jaeger-core#configuration-via-environment at least queue size and flush interval.
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.
+1
slueth is not OpenTracing compatible and we would like to go that direction. |
slueth is not OpenTracing compatible and we would like to go that
direction.
feel free to host your own integration. If users ask about it, we can
mention how to find yours!
|
+ <version.jaeger>0.19.0</version.jaeger>
+ <io.opentracing.version>0.22.0</io.opentracing.version>
This is fine here, these versions match
it isn't fine. the point is that this api breaks constantly and will
introduce thrash. bringing unstable components into a repo isn't something
to take lightly.
|
There's community effort (by a user of sleuth) here
https://github.com/DealerDotCom/sleuth-opentracing if opentracing
becomes stable and/or activity picks up there, we can consider
formalizing.
Adding this to the core repo ahead of demand and with known unstable
apis is just not a right time thing
|
It's true about api breaks (like it has also been the case for AMQP or WebSocket till 1.0 have been released). However, the OT API version 1.0 should be out soon (although the date is not settled) and will stabilize existing situation. Those breaking changes happen because of major new features like active span in-process propagation. Sleuth combines a variety of instrumentations and is harder to plug in instrumentation for a different framework, on the other hand, pure OT instrumentation allows us easily plug in different instrumentation together. So, if you refuse this PR because the OT Api isn't stable enough, I will argue you that you have implemented a Spring Boot starter for AMQP - 0.9 while the spec wasn't stable enough. This is not because a spec API is not yet stable that we should not propose/provide an implementation as proposed here based on the Uber Jaeger project which is not at all a "community project" as you suggest but a Microservices Distributed Tracing Project [1] [2] offering more features than Zipkin Moreover, as an API adapter has been proposed to the OpenTracing foundation [3] for spring Cloud Sleuth, that makes a lot of sense to continue to develop this PR, module. Do you agree ? [1] : https://eng.uber.com/distributed-tracing/ |
I'd recommend closing this issue |
Why ? |
The "community project" reference was not a qualitative reference about jaeger. It was that you can absolutely host this integration on your own, as a person in a community, in jaeger's org or opentracing's org or somewhere else. I'm not going to restate the myriad of reasons why it is not the right time, both from a stability pov, or a relevance POV to put something like this in the core repo! |
ps I'm not a maintainer of this project, so if contributors here decide to merge and maintain this ahead of user demand etc, that's its prerogative. I'm only commenting as a couple people were confused by this out-of-the-blue PR |
I will not comment about api stability, as it refers to things I am not familiar with. I am however, familiar with I don't see why we can't host this module here, same way we do for ribbon, hystrix, zipkin. Now, if spring-cloud has a policy like: "we host only one solution per problem (e.g. for tracing we will only host sleuth based stuff)", then I guess as a project that aspires to graduate, we will have to respect that. |
This PR offers the possibility for Spring project running on Google Kubernetes or Openshift platform to really benefit about a modern OpenTracing API, where instrumentation exists, is independent of the implementation, is vendor neutral. If you choose zipkin you have to stick with zipkin, OT allows you to change tracing backend with literally zero configuration change. There is no tracer API in zipkin - e.g. zipkin java tracer (brave) has totally different API that tracer in ruby or python. Because OpenTracing is vendor neutral it is possible (and it is a goal of OT) is to write instrumentation only once. OpenTracing instrumentation can be reused for Zipkin or Jaeger. The PR module proposed here could be turned into zipkin with minimal changes only tracer creation. So far all tracing system had to write instrumentation by themselves, the same over and over (instana, datadog, new relic...). OT allows you to write it only once and then focus on thighs which really matters. So why opentracing --> http://opentracing.io/documentation/#why-opentracing |
@cmoulliard I don't get why it's k8s-specific. What about consul or netflix users? Also, IMHO there would be little to no people to support it, and it doesn't belong to k8s repo. |
It's been marked for team discussion, which we will discuss tomorrow. |
@cmoulliard I've read the website and the tag line. Show me the tests that prove any of this works in practice. You do know stagemonitor needed to write a shim to work with two opentracing implementations. Now, they are rev-locked.. until everyone updates the same version. What you are doing now is wasting more time, and honestly I'm done responding to your trolls. |
I'll reopen discussion after our meeting tomorrow |
Thanks for the PR. There are a few things we'll comment on:
|