Graphical spans?

Hi,

I'd like to trace what my microservices are doing and have a visual representation of a call, much like zipkin.

MIcroserviceA/hello takes 50 ms, but 20 of those were spent in an external http call to MicroserviceB/getHello2.

This link seems to show that spans are visualized:
https://www.elastic.co/guide/en/kibana/master/spans.html

However, my span doesn't show any visualization. I just see the one external call on its own when i click spans. Any thoughts?

Thanks,
Jas

Hi,

Thanks for trying Elastic APM.

Can you give us some more details of your setup? ie. Agent you are using, versions, how are you instrumenting you code, how are your microservices built, etc.

Also how is Service A calling Service B? ie. if you are using Java which library are you specifically using. The call would show depending wether that library is auto-instrumented or not.

Alvaro

Hi Alvaro,

I'm using 6.4 of the ELK stack. My two microservices are written in Node.js (javascript). They are instrumented with the following package:

"elastic-apm-node": "^1.11.0",

They have the following code at the top of the

// Add this to the VERY top of the first file loaded in your app
var apm = require('elastic-apm-node').start({
    // Set required service name (allowed characters: a-z, A-Z, 0-9, -, _, and space)
    serviceName: 'microserviceA',

    // Set custom APM Server URL (default: http://localhost:8200)
    serverUrl: 'http://apm:8200'
});

microserviceA and microserviceB both speak REST and make calls to each other via an node.js http client. The one we are using is:
const httpClient = require('request-promise-native');

So here are my questions/concerns:

  1. I don't see a visualization of the spans, as seen here: https://www.elastic.co/guide/en/kibana/master/spans.html
  2. i see the average transaction time for a service, but is there no way to see the average of each span?
  3. when i click view spans, it looks like it is specifying a specific span as opposed to some aggregate of spans. I have to explicitly remove the filter. is that normal?

Thanks,
jas

Hi jas

Thomas here, jumping in for Alvaro. If I understand you correctly, you're interested in seeing a "span waterfall" showing all the spans in the trace originating in service A, calling service B, entering service B, and including the spans in service B as well - all on the same screen. This requires a feature called distributed tracing. The span visualization you linked to in the Kibana documentation is for a single service only.

Elastic APM does not yet support distributed tracing. So we can't currently show you all services involved in the request/trace on the same screen. We do record the transaction in each individual service for you, and we do show the external call as a span from one service to the next, but we do not tie them together in the UI.

We are however working on releasing support for distributed tracing soon, so this will be supported in the future. But for now you'll have to manually connect the dots unfortunately, which I know is probably not what you wanted.

I'm sorry of course if I misunderstood your question. If so please let me know :slight_smile:

Best,
Thomas

Hi thomas,

Thanks for the clarification. Do you know if there is a time frame for distributed tracing? That sounds awesome.

Thanks,
jas

I can't give you any timeframe unfortunately as things can change. But it's one of the next big features we'll be releasing, so it's hopefully not going to be long.

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.