Hello Microprofile community,
The review of "Distributed Tracing" begins now. The proposal is available here:
https://github.com/eclipse/microprofile-evolution-process/pull/27
Reviews are an important part of the Microprofile evolution process. All reviews should be sent to the Microprofile mailing list at
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Microprofile. When writing your review, here are some questions you might want to answer in your review:
More information about the Microprofile evolution process is available at
https://github.com/microprofile/evolution/blob/master/process.md
Thank you,
The MicroProfile core team
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/e481c57e-3e2e-4a0c-b0ad-c7e1f60567a8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/efbe1b0e-bfae-411d-ba42-9267e3623b34%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
That's fine if OpenTracing does not want to / cannot define defaults, but at least we at MicroProfile _should_!LieGrue,strub
That would be pretty much the extent of the spec. We would have to decide what parameters are required / optional for the two new annotations.
Steve
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/6a7ee267-a787-4616-a8df-5212a2d39e5b%40googlegroups.com.
It will be good to support separate annotations for start and finish, to cater for situations where the span needs to be started and finished in different locations. We may also want a single annotation that could be added to a method that scoped the complete task, i.e. so it started the span when the method was called and automatically finished when the method ended - so just @DistributedTrace(operation=....).
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/25de6b47-c0e2-404b-800f-fc0d834aa071%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/95f41086-b292-42bd-9231-e1bac8b61d96%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
I think @Trace is to generic. If I saw an @Trace annotation, I would think it was adding normal tracing, like - here is the line of code I'm at, and here is what the values of variables are, etc.
Distributed tracing is different than normal tracing, that is why I proposed @DistributedTrace.
I know you could always go look at what package the @Trace annotation came from, but I think it is more clear when reading the code if the annotation is more specific.
Given the comment that there should only be one annotation, I don't know enough about CDI to see if it has any problems. Any comments on item 3 below?
Also not sure how to differentiate between API and SPI in the specification.
Proposal:
1. Support configuration of an opentracing.io compliant Tracer.
(Specification does not need to contain how this would be implemented.)
2. Provide support in the framework to enable basic distributed tracing without modification to existing microprofile.io applications.
(Specification does not need to contain how this would be implemented.)
Is this a required part of the spec, or can it be a decision left to the implementor?
<ej>The spec can just state the existing app can opt in to be traced. The opt in can be controlled e.g. via a system property.</ej>
3. Provide support in the framework to add distributed tracing records explicitly where needed by the developer.
This would be implemented with one annotation:
@DistributedTrace([value={*START* | FINISH | MODIFY}, operation=<tracepointname>, tags=<map of tags>, log=<map of log data>, baggage=<map of baggage>])
Can you enforce constraints on parameters? Do we need to?
- If tag is applied to a block, then action must be START. FINISH is implied by end of block.
- If action is START, and block is not a method, then operation is required, else operation is method name?
- Any other behaviors we need to specify?
Other behaviors
- FINISH and MODIFY with no operation specified act on the active Span.
<ej>All constraints can be checked when processing annotation.</ej>
4.Provide programmatic access for distributed tracing operations
This would be implemented by providing access to the configured Tracer object.
Is this the part that would be SPI?
@Tracer should work here, since that is the type of the object we will be returning.
<ej> This part will be SPIs to be used by powerful users.</ej>
Steve
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/cd55e5e4-66c1-421f-b33f-674b4e771e6d%40googlegroups.com.
I think @Trace is to generic. If I saw an @Trace annotation, I would think it was adding normal tracing, like - here is the line of code I'm at, and here is what the values of variables are, etc.
Distributed tracing is different than normal tracing, that is why I proposed @DistributedTrace.
I know you could always go look at what package the @Trace annotation came from, but I think it is more clear when reading the code if the annotation is more specific.
Given the comment that there should only be one annotation, I don't know enough about CDI to see if it has any problems. Any comments on item 3 below?
Also not sure how to differentiate between API and SPI in the specification.
Proposal:
1. Support configuration of an opentracing.io compliant Tracer.
(Specification does not need to contain how this would be implemented.)
2. Provide support in the framework to enable basic distributed tracing without modification to existing microprofile.io applications.
(Specification does not need to contain how this would be implemented.)
Is this a required part of the spec, or can it be a decision left to the implementor?
3. Provide support in the framework to add distributed tracing records explicitly where needed by the developer.
This would be implemented with one annotation:
@DistributedTrace([value={*START* | FINISH | MODIFY}, operation=<tracepointname>, tags=<map of tags>, log=<map of log data>, baggage=<map of baggage>])
On Thursday, May 18, 2017 at 11:17:28 PM UTC+2, Steve Fontes wrote:I think @Trace is to generic. If I saw an @Trace annotation, I would think it was adding normal tracing, like - here is the line of code I'm at, and here is what the values of variables are, etc.
Distributed tracing is different than normal tracing, that is why I proposed @DistributedTrace.
I know you could always go look at what package the @Trace annotation came from, but I think it is more clear when reading the code if the annotation is more specific.Tracing can be also used in not distributed environments. @Trace makes sense to me.This proposal focuses on adding additional visibility into business logic by creating local spans. What about having annotation which would enable tracing for the whole app/framework. In jax-rs the annotation would be applied to application class and everything would be traced. The annotation could be used at different "levels", application class, resource class or even resource method. This would be framework agnostic and could be applied to e.g. jax-rs, spring, servlets.Given the comment that there should only be one annotation, I don't know enough about CDI to see if it has any problems. Any comments on item 3 below?
Also not sure how to differentiate between API and SPI in the specification.
Proposal:
1. Support configuration of an opentracing.io compliant Tracer.
(Specification does not need to contain how this would be implemented.)
2. Provide support in the framework to enable basic distributed tracing without modification to existing microprofile.io applications.
(Specification does not need to contain how this would be implemented.)
Is this a required part of the spec, or can it be a decision left to the implementor?
3. Provide support in the framework to add distributed tracing records explicitly where needed by the developer.
This would be implemented with one annotation:
@DistributedTrace([value={*START* | FINISH | MODIFY}, operation=<tracepointname>, tags=<map of tags>, log=<map of log data>, baggage=<map of baggage>])Is FINISH required? My assumption is that span is automatically finished after the execution of a given block/method. Span should ideally represent one operation(method).
Logs and baggage are not required at START. Even OpenTracing API does not allow you to add logs when starting a span. Logs are a time-based event usually scoped within a span lifecycle. Wouldn't it be better to split this to something like:1. Handle span lifecycle
@Trace(operation, tags, newTrace)* operation - can be made optional, and use class and/or method name by default.* boolean:newTrace - ignores current active span and starts new trace2. Enrich span with additional data@TraceDecorate(operation, tags, logs, baggage)Here are three options, if there is no active span it could be noop or it could start a new span or result in an exception. (The same applies to MODIFY if there is no active span)This can be merged into one annotation as was proposed, not sure what people like more. What I propose is cleaner from OT span lifecycle perspective.Regards,Can you enforce constraints on parameters? Do we need to?
- If tag is applied to a block, then action must be START. FINISH is implied by end of block.
- If action is START, and block is not a method, then operation is required, else operation is method name?
- Any other behaviors we need to specify?
Other behaviors
- FINISH and MODIFY with no operation specified act on the active Span.
4.Provide programmatic access for distributed tracing operations
This would be implemented by providing access to the configured Tracer object.
Is this the part that would be SPI?
@Tracer should work here, since that is the type of the object we will be returning.
Steve
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/9c09e5d2-d51c-4a60-9f30-526f4209f146%40googlegroups.com.
On Mon, May 22, 2017 at 2:19 PM, <plo...@redhat.com> wrote:
Tracing can be also used in not distributed environments. @Trace makes sense to me.This proposal focuses on adding additional visibility into business logic by creating local spans. What about having annotation which would enable tracing for the whole app/framework. In jax-rs the annotation would be applied to application class and everything would be traced. The annotation could be used at different "levels", application class, resource class or even resource method. This would be framework agnostic and could be applied to e.g. jax-rs, spring, servlets.
Is FINISH required? My assumption is that span is automatically finished after the execution of a given block/method. Span should ideally represent one operation(method).Ideally in most cases users would only want to provide additional spans around a method - however in more async situations it may be necessary to be able to supporting starting and finishing a span in different parts of the code, although then it puts more burden on the developer to ensure each newly started span is finished (only once).
Logs and baggage are not required at START. Even OpenTracing API does not allow you to add logs when starting a span. Logs are a time-based event usually scoped within a span lifecycle. Wouldn't it be better to split this to something like:1. Handle span lifecycle
@Trace(operation, tags, newTrace)* operation - can be made optional, and use class and/or method name by default.* boolean:newTrace - ignores current active span and starts new trace2. Enrich span with additional data@TraceDecorate(operation, tags, logs, baggage)Here are three options, if there is no active span it could be noop or it could start a new span or result in an exception. (The same applies to MODIFY if there is no active span)This can be merged into one annotation as was proposed, not sure what people like more. What I propose is cleaner from OT span lifecycle perspective.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
All,
I was too focused on distributed function, but as plo...@redhat.com pointed out, this is valid for tracing of a single process also.
@Trace will be good for the main annotation.
@Tracer can be used to give direct access to the Tracer implementation object, so that the opentracing.io APIs can be used directly.
Open questions:
1. Single or multiple annotations
@Trace(action=*START*|FINISH, name=<Span name>, boolean:newTrace, tags=<map of tags>)
@TraceDecorate(name=<Span name>,tags=<map of tags>,logs=<map of logs>, baggage=<map of baggage>)
or
@Trace(action=*START*|FINISH|DECORATE, name=<Span name>, boolean:newTrace, tags=<map of tags>, logs=<map of logs>, baggage=<map of baggage>)
I prefer one annotation
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/4ca171e8-39d3-46bc-863b-98f56fbb89c9%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe5TiS2KAJ9rjW1LTNohCC30AXuBeJKOfQPTDC%2BztsPx7A%40mail.gmail.com.
Hello Microprofile community,
The review of "Distributed Tracing" begins now. The proposal is available here:
https://github.com/eclipse/microprofile-evolution-process/pull/27
Reviews are an important part of the Microprofile evolution process. All reviews should be sent to the Microprofile mailing list at
What goes into a review?
The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Microprofile. When writing your review, here are some questions you might want to answer in your review:
- What is your evaluation of the proposal?
- Is the problem being addressed significant enough to warrant a change to Microprofile?
- Does this proposal fit well with the feel and direction of Microprofile?
- If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
- How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
More information about the Microprofile evolution process is available at
https://github.com/microprofile/evolution/blob/master/process.md
Thank you,
The MicroProfile core team
Tracing without distributing the span info is merely an improved way of logging...
LieGrue,
Strub
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/d376aece-c70b-48b4-a119-005a9294b252%40googlegroups.com.
Hi MarkI agree that having a standard for context propagation would be useful in some situations, however it is not essential in this case - i.e. it is not a blocker to this proposal.For distributed tracing information to be of use, all services in a call chain must report their data to a single tracing backend (to be able to reconstruct the end to end trace).
Therefore as each service is having to use a tracing client associated with that backend, these tracing clients will know how to exchange the tracing context information (using their own internal format). The transfer of the tracing context is provided through an inject/extract mechanism provided by the tracer implementation, so the application does not need to be aware of what headers are used.RegardsGary
On Wed, Jun 14, 2017 at 11:04 PM, Mark Struberg <markst...@gmail.com> wrote:
Well, my -1 is not on opentracing per se. I'm just thinking that without any guaranteed interoperbility you loose quite a lot of the benefits.
And it would be rather easy to define default token names to solve this problem.
Tracing without distributing the span info is merely an improved way of logging...
LieGrue,
Strub
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To post to this group, send email to microp...@googlegroups.com.
Don't get me wrong, I like the proposal and agree with all said in this thread except one thing - I see that the solution in the proposal doesn't adress anything distributed at all! It only states that implementations should provide some tracer, but that's really nothing. I like the introduction and description of the problem, but the solution is just for tracing, which is, as Mark said, only an improved logging. I would like at least to have an agreement that we aim to solve the distributed things too in future versions. Otherwise there's no point in calling it "distributed", while it only aims at standardizing tracing config in general.
I just want to avoid an initial big mistake that would confuse people to think that we have a solution for something that isn't actually addresses at all.
--Ondro