openwhisk-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juraci Paixão Kröhling <>
Subject Re: Adding OpenTracing support
Date Thu, 22 Jun 2017 05:24:09 GMT
On 06/22/2017 01:54 AM, Rodric Rabbah wrote:
> 1. How does a whisk subject get access to the trace data?

I believe this would be a deployment concern. On a scenario where 
OpenWhisk is deployed in a single tenant mode (single company), a system 
like Jaeger would be deployed internally and anyone with valid 
credentials would be able to access the tool.

> 2. How will the tracing work for multiple tenants?

I have to admit that I don't really know how multi-tenancy works in 
OpenWhisk, so, it's not something I can answer right now.

> 3. From the description of the PR and screen shot, it looks like you're
> tracing from the invoker side only around the "run". Why not also the
> "init"?

I'm tracing only the invoker because I had to start somewhere :) Adding 
the init part to the trace is a really good point, I'll change the PR 

> 4. Measuring the "run" span should correlate with the reported duration of
> the action in the whisk activation record, if you also measure "init", is
> that right?

That's my understanding, yes.

> 5. Are you also thinking about tracing inside the container? If so, what
> are your thoughts around this?

I'm currently extending the PR to begin the tracing at the controller, 
creating the span context based on the incoming HTTP headers (extract 
operation, in OpenTracing terms), and adding it to the 
ActivationMessage, which seems to be _the_ "transaction context" in 

Then, at HttpUtils#post, do the OpenTracing inject operation, to 
"serialize" the span context into the outgoing HTTP request. On the next 
action, the extract operation above would re-build the span context, and 
we would then be able to connect spans in a distributed trace.

I have not started to consider the possibilities of allowing the action 
itself to generate "business spans". This would require the action to 
have access to the concrete Trace implementation, and it has to be the 
same as the tracer from outside of the container, as each tracer 
implementation serializes the span context differently. So, it's 
probably a complex matter that is better left out for a next iteration.

- Juca.

View raw message