Endpoint data for cs (client send) and cr (client receive)

276 views
Skip to first unread message

Eirik Sletteberg

unread,
May 20, 2014, 9:32:49 AM5/20/14
to zipki...@googlegroups.com
An Endpoint consists off an ip, a port and a service name.

When doing a trace, Brave (the Java implementation of Zipkin) uses different service names for the client and server.

For example, a trace from Service A to Service B:
1) Client send (with endpoint service name Service A)
2) Server receive (with endpoint service name Service B)
3) Server send (with endpoint service name Service B)
4) Client receive (with endpoint service name Service A)

However, that results in a Zipkin view where the span's service name is shown as "Service A,Service B", while the expected result should be "Service B".

Is there a bug in Brave (which is configured to use the same service name globally - if Service A calls Service B and Service C, it will always always identify itself as Service A and submit that in the Endpoint for cs and cr)?

- Eirik

Jeff Smick

unread,
May 20, 2014, 12:05:07 PM5/20/14
to zipki...@googlegroups.com
I don't know enough about Brave, but if it supposed to use the same service name in the client and the server, it sounds like there might be.


--

---
You received this message because you are subscribed to the Google Groups "zipkin-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to zipkin-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Jeff Smick
@sprsquish

Eirik Sletteberg

unread,
May 20, 2014, 1:34:45 PM5/20/14
to zipki...@googlegroups.com
Would it be possible for you to upload a valid JSON dump of an example zipkin trace (censored maybe), just so we could try and compare?
- Eirik

Tim Drisdelle

unread,
May 20, 2014, 6:26:03 PM5/20/14
to zipki...@googlegroups.com
This would be very helpful for me as well. I cannot tell whether it's a fault of the Brave implementation or my own use of the API.

A more traditional Finagle/Zipkin snapshot of the JSON would be very appreciated.

Kristof Adriaenssens

unread,
May 21, 2014, 2:24:08 AM5/21/14
to zipki...@googlegroups.com
Hi all,

I'm not sure if the problem is with the actual EndPoint but I found a problem with span name being different at client vs server side.
I answered on the issue Eirik submitted. See here for more details: https://github.com/kristofa/brave/issues/18



Kristof


Op dinsdag 20 mei 2014 15:32:49 UTC+2 schreef Eirik Sletteberg:

Kristof Adriaenssens

unread,
May 21, 2014, 2:32:15 AM5/21/14
to zipki...@googlegroups.com
About the EndPoint and span names.  I assume following, if service a calls service b with request c:

- client side span has span name 'request c'. end point of client side span has 'service a'
- server side span has span name 'request c'. end point of server side span has 'service b'

There was a bug with span names not being exactly the same which resulted in inconsistent results in zipkin-web. But this is fixed. The question Eirik and Tim are asking is if it is correct that client side span and server side span have different end points.  I think this is to be expected as it shows which service is calling which other service?


Thanks,
Kristof

 

Op dinsdag 20 mei 2014 18:05:07 UTC+2 schreef Jeff Smick:

Eirik Sletteberg

unread,
May 21, 2014, 4:22:49 AM5/21/14
to zipki...@googlegroups.com
Kristof's viewpoint makes sense to me. A span call from Service A to Service B should be shown as calling "Service B" in the Zipkin UI, and not "Service A, Service B". Yet, that seems to be the behaviour of the Zipkin UI. Is there a good reason why?

Brian Degenhardt

unread,
May 22, 2014, 6:56:55 PM5/22/14
to zipkin-user
On Tue, May 20, 2014 at 11:32 PM, Kristof Adriaenssens <kristof.ad...@gmail.com> wrote:
About the EndPoint and span names.  I assume following, if service a calls service b with request c:

- client side span has span name 'request c'. end point of client side span has 'service a'
This is wrong.  Client-side spans should name the destination service name.

Eirik Sletteberg

unread,
May 23, 2014, 1:19:30 PM5/23/14
to zipki...@googlegroups.com
Ok, then it's clear that Brave's implementation is different than Zipkin's design.
The question is - what is the strength of asking the client to report the destination's service name (therefore needing to know its name via a handshake or similar), instead of reporting its own name?
Is it necessary to make Zipkin work?

Shikhar Bhushan

unread,
Feb 25, 2015, 3:31:45 PM2/25/15
to zipki...@googlegroups.com
I found this thread in googling what the semantics of endpoint data on annotations should be.

zipkin-finagle itself seems to use the client endpoint (basing this on RawZipkinTracer.record() -- setEndpoint is called when tracing.Annotation.LocalAddr received)
Reply all
Reply to author
Forward
0 new messages