-
Notifications
You must be signed in to change notification settings - Fork 9
Zipkin to Application Insights module #33
Comments
@adriancole, @SergeyKanzhelev but I think we need some discussion over it. I have some concerns over storing zipkin as ApplicationInsight. It would be unlikely that these format are like-for-like and need to understand of possible trade-offs that we might have to make as a result. My view is that, doing the opposite ie making AI agent to send Zipkin traces, is a better option - I believe considering AI is a late-joiner to the game and people already use many different tools, it is ideal for AI to allow extension points to publish to other systems (zipkin, ELK, graphite, etc) |
@aliostad sorry my note was about sergey being active on many things tracing, and thanking for that engagement. that's what I meant by "apologies to watchers for using github comment as messaging I will delete this". Me thanking him for collaborating in general is independent of what direction is taken on this issue. |
@adriancole sure, sorry I think my comment probably came across differently :/ I thought you were about to delete this thread so asked if you do not and keep it open so we can discuss. Thanks for all the hard work and sorry for the confusion. |
Just another note from my experience, we use a modified ELK stack (use conveyorbelt instead of logstash) and we will be independently writing to zipkin. I think it is ambitious to try to bring AI and zipkin closely together and even if it is possible now, their independence might mean they will part ways further on so I prefer attacking the problem as an integration rather than composition. |
@adriancole <https://github.com/adriancole> sure, sorry I think my
comment probably came across differently :/ I thought you were about to
delete this thread so asked if you do not and keep it open so we can
discuss.
Thanks for all the hard work and sorry for the confusion.
heh yeah ok. glad we're on-track again (sorry again for derailing)
|
@aliostad, you are correct. For me one of the reason for this work is to understand how far apart Application Insights and Zipkin are with regards to data model. And we thinking of creating adapter that works backwards as well. Zipkin may be a perfect tool for the customers who cannot send data to the cloud or just want to use existing tools while using automatic data collection provided by Application Insights .NET SDK. However we still need to overcome the same gap between data models. Once we will know the difference we can plan accordingly what changes can be done on our side and what we can contribute back. As you said we may never come to the exactly same schemas. And will always maintain the bridge between tools. However I only have the best intentions in mind and want to make it easy for developers to do distributed tracing. @aliostad I believe Zipkin to Application Insights will be helpful for many people. If you have more concerns - please let me know. In any case - it will be helpful if you can help with understanding of the data model gap, I was planning to post the list of questions we stumble across with @praveenbarli later today. |
So for the most part it's easy to match from Zipkin to Application Insights and back. There is no concept of base span class. Application Insights defines request as incoming span and dependency as a span leaving process. Every telemetry item can also have a set of context properties as well as generic name value dictionary. Both request and dependency defines:
There are few pieces of information Application Insights typically collects that we cannot find a match for:
There are also a few context properties we typically collect. I didn't find matching concepts yet.
There are few more properties defined in Application Insights that we'd love to match, but they don't seems to exist as a strongly typed or well know concepts. I'm thinking there should be a configuration file to match binary annotations to well defined properties and back. I keep trying different examples I can find to see how Zipkin is used. @adriancole do you know any examples of a good end-to-end demo app instrumented with Zipkin highlighting the best practices and possible scenarios? |
Thrift docs are very helpful! There are a lot of assumed semantic in annotations. How strict Zipkin collectors typically are? How many special cases there are in Zipkin UI for cases when one span has two |
Thrift docs are very helpful! There are a lot of assumed semantic in
annotations. How strict Zipkin collectors typically are? How many special
cases there are in Zipkin UI for cases when one span has two CS
annotations (or something like this)? If Application Insights storage
implementation will reject bad formed spans - will it still cover majority
of implementations or you'd recommend to not enforce anything?
Collectors will drop malformed (badly encoded data like required fields
absent), but errors such as multiple "cs" are not dropped at the moment.
Luckily these are indeed errors and instrumentation can be asked to fix
them. Seeing that there were multiple "cs" sent help folks fix their
instrumentation. Not sure if that answers your question.
|
Zipkin 2 schema is very similar to Application Insights |
@praveenbarli looking at how to map Application Insights data back to Zipkin span - came up with this query so far... Still thinking how to map the rest of possible properties:
You can use a similar query instead of ones you are using now. |
@SergeyKanzhelev sure. Once, I am able to write all these props I will start using this read query. |
@praveenbarli use dependency for the local ones. |
Issue to discuss ongoing work in PR: #27
The main idea is to allow to report and store Zipkin traces in the format Application Insights recognize so all the power of Application Insights Analytics engine, alerting and proactive detection can be used for those traces.
Also allows to view data collected by Application Insights SDK in Zipkin UI.
The text was updated successfully, but these errors were encountered: