Re: how to get zipkin tracing of REST calls from one microservice to all microservices calls from any task defined in apache ignite

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: how to get zipkin tracing of REST calls from one microservice to all microservices calls from any task defined in apache ignite

Aditya Kumar

Hi Team,

I was using ignite as dependecy in our application and was able to trace end to end trace microservice calls.
Then, to let ignite handle our services in compute task, we removed all spring-boot dependencies and created task for each service we had in our microservice.

The issue we are facing is explained using below POC done at our end.


We created a sample app where below things have been done and deployed in ignite:
1. created beans and interceptors needed to start and track zipkin and brave trace
2. craeted a task using org.apache.ignite.compute.ComputeTaskAdapter
3. registered the task in the config file used while starting ignite server

Below are the list of services(each service is exposing a REST endpoint) created to test this scenario:
1. ms1 (spring boot app)
2. ser2 (spring mvc app having a rest endpoint to serve the incoming request)
3. ser3 (spring mvc app using Ignite ComputeTaskAdapter to serve the incoming request from '/ignite'. used ignite's ignite-rest-http.jar to enable '/ignite' endpoint)
4. ms4 (spring boot app)
5. ms5 (spring boot app)

Then, there were two scenarios of executions:
Case1. ms1 -> ser2 -> ms4 -> ms5   ==> we get single unit of traing in zipkin from ms1 to ms5 (i.e. ms1 -> ser2 -> ms4 -> ms5)
Case2. ms1 -> ser3 -> ms4 -> ms5   ==> we get two unit of tracing in zipkin. One is ms1 -> ser3 and another is ser3 -> ms4 -> ms5

I need to get single unit of tracing in zipkin using Case2 execution(i.e. as we get in Case1)

The sample app (ser3) is checked-in at https://github.com/aditya2910/adzzz1/tree/master/ignite-rest-task

Any help will be appreciated.
Please let me know incase you need any more info.

Thanks,
Aditya
This email and any files transmitted with it are confidential, proprietary and intended solely for the individual or entity to whom they are addressed. If you have received this email in error please delete it immediately.
Reply | Threaded
Open this post in threaded view
|

Re: how to get zipkin tracing of REST calls from one microservice to all microservices calls from any task defined in apache ignite

Ivan Pavlukhin
Hi,

As far as I remember zipkin defines tracing units in a current thread
of execution. I cannot say for sure what goes wrong in your case. But
it might be that traced execution on ser3 side switches from one
thread to another and you see 2 units as a result.

чт, 14 мар. 2019 г. в 02:09, Aditya Kumar <[hidden email]>:

>
>
> Hi Team,
>
> I was using ignite as dependecy in our application and was able to trace end to end trace microservice calls.
> Then, to let ignite handle our services in compute task, we removed all spring-boot dependencies and created task for each service we had in our microservice.
>
> The issue we are facing is explained using below POC done at our end.
>
>
> We created a sample app where below things have been done and deployed in ignite:
> 1. created beans and interceptors needed to start and track zipkin and brave trace
> 2. craeted a task using org.apache.ignite.compute.ComputeTaskAdapter
> 3. registered the task in the config file used while starting ignite server
>
> Below are the list of services(each service is exposing a REST endpoint) created to test this scenario:
> 1. ms1 (spring boot app)
> 2. ser2 (spring mvc app having a rest endpoint to serve the incoming request)
> 3. ser3 (spring mvc app using Ignite ComputeTaskAdapter to serve the incoming request from '/ignite'. used ignite's ignite-rest-http.jar to enable '/ignite' endpoint)
> 4. ms4 (spring boot app)
> 5. ms5 (spring boot app)
>
> Then, there were two scenarios of executions:
> Case1. ms1 -> ser2 -> ms4 -> ms5   ==> we get single unit of traing in zipkin from ms1 to ms5 (i.e. ms1 -> ser2 -> ms4 -> ms5)
> Case2. ms1 -> ser3 -> ms4 -> ms5   ==> we get two unit of tracing in zipkin. One is ms1 -> ser3 and another is ser3 -> ms4 -> ms5
>
> I need to get single unit of tracing in zipkin using Case2 execution(i.e. as we get in Case1)
>
> The sample app (ser3) is checked-in at https://github.com/aditya2910/adzzz1/tree/master/ignite-rest-task
>
> Any help will be appreciated.
> Please let me know incase you need any more info.
>
> Thanks,
> Aditya
> This email and any files transmitted with it are confidential, proprietary and intended solely for the individual or entity to whom they are addressed. If you have received this email in error please delete it immediately.



--
Best regards,
Ivan Pavlukhin
Reply | Threaded
Open this post in threaded view
|

Re: how to get zipkin tracing of REST calls from one microservice to all microservices calls from any task defined in apache ignite

Andrey Kuznetsov
Hi!

As far as I know, Ignite does not support Zipkin trace propagation out of
the box, unlike Spring Cloud. Hence request handler in {{rest-http}} loses
tracing-context-specific headers (see [1]) sent with request and the span
gets broken into two parts. This can be worked around by
replacing {{rest-http}} with Spring Cloud request handler, that in turn
should execute Ignite Compute Task explicitly.

[1]
https://cloud.spring.io/spring-cloud-sleuth/single/spring-cloud-sleuth.html#_propagation

чт, 14 мар. 2019 г. в 09:16, Павлухин Иван <[hidden email]>:

> Hi,
>
> As far as I remember zipkin defines tracing units in a current thread
> of execution. I cannot say for sure what goes wrong in your case. But
> it might be that traced execution on ser3 side switches from one
> thread to another and you see 2 units as a result.
>
> чт, 14 мар. 2019 г. в 02:09, Aditya Kumar <[hidden email]>:
> >
> >
> > Hi Team,
> >
> > I was using ignite as dependecy in our application and was able to trace
> end to end trace microservice calls.
> > Then, to let ignite handle our services in compute task, we removed all
> spring-boot dependencies and created task for each service we had in our
> microservice.
> >
> > The issue we are facing is explained using below POC done at our end.
> >
> >
> > We created a sample app where below things have been done and deployed
> in ignite:
> > 1. created beans and interceptors needed to start and track zipkin and
> brave trace
> > 2. craeted a task using org.apache.ignite.compute.ComputeTaskAdapter
> > 3. registered the task in the config file used while starting ignite
> server
> >
> > Below are the list of services(each service is exposing a REST endpoint)
> created to test this scenario:
> > 1. ms1 (spring boot app)
> > 2. ser2 (spring mvc app having a rest endpoint to serve the incoming
> request)
> > 3. ser3 (spring mvc app using Ignite ComputeTaskAdapter to serve the
> incoming request from '/ignite'. used ignite's ignite-rest-http.jar to
> enable '/ignite' endpoint)
> > 4. ms4 (spring boot app)
> > 5. ms5 (spring boot app)
> >
> > Then, there were two scenarios of executions:
> > Case1. ms1 -> ser2 -> ms4 -> ms5   ==> we get single unit of traing in
> zipkin from ms1 to ms5 (i.e. ms1 -> ser2 -> ms4 -> ms5)
> > Case2. ms1 -> ser3 -> ms4 -> ms5   ==> we get two unit of tracing in
> zipkin. One is ms1 -> ser3 and another is ser3 -> ms4 -> ms5
> >
> > I need to get single unit of tracing in zipkin using Case2
> execution(i.e. as we get in Case1)
> >
> > The sample app (ser3) is checked-in at
> https://github.com/aditya2910/adzzz1/tree/master/ignite-rest-task
> >
> > Any help will be appreciated.
> > Please let me know incase you need any more info.
> >
> > Thanks,
> > Aditya
> > This email and any files transmitted with it are confidential,
> proprietary and intended solely for the individual or entity to whom they
> are addressed. If you have received this email in error please delete it
> immediately.
>
>
>
> --
> Best regards,
> Ivan Pavlukhin
>


--
Best regards,
  Andrey Kuznetsov.