Azure/diagnostics-eventflow

Guidance when to use EventFlow?

vitaly-pavluk opened this issue · 3 comments

It is not clear per the documentation when to use Diagnostics.EventFlow?
What are the use cases when "it shines"?
My team uses Azure App Insights for Kubernetes to collect logs and telemetry for each of the microservice deployed in AKS.
To chain together calls between the microservices correlation token works well.
We have lots of microservices that are bound via Azure Service Bus and still can get the full request trace from the UI through the BFF (Gateway) and 2-3 microservices (bound via Azure Service Bus).
When is it preferable to use EventFlow over the Azure AppInsight for Kubernetes and how easy to track requests that could be handled by microservices chained via HTTP or Azure Service Bus/Event Grid?
Thank you in advance.

@vitaly-pavluk good question

EventFlow is not designed to help with tracing request that span multiple microservices. What it aims to do is to make it easier to aggregate diagnostic information (mostly logs) from multiple sources and/or send these logs to multiple destinations.

For example, say you have a 3rd party library that you use in your service code, and that library provides a lot of useful diagonstic data in case of an error, but it is not using Application Insigths or .NET ILogger to surface this data. With EventFlow you can combine the diagnostic data from your library (via appropriate EventFlow "input") with the diagnostic data from your code that is instrumented via Application Insights/ILogger.

Another example would be if a small portion of your logs needs to be sent to a special destination in addition to the "normal" destination (say, those that represent critical errors need to go to some alerting system ingestion point). A combination of EventFlow "filters" and "outputs" can be used to achieve this.

Since EventFlow was created, many logging/diagnostic libraries, incl. AppInsights, have matured significantly, and some of the original scenarios that prompted the creation of EventFlow libraries can now be handled without employing it. That said, EventFlow is there if you need it.

Hope this helps; happy to answer any follow-up questions you may have.

@karolz-ms
Thank you for the clarification.
I believe it would be helpful to everyone who makes decisions regarding the EventFlow library to have clear guidance on when to use it and cases when to avoid using this library.
I know for sure that all Microsoft libraries (especially Azure-related) use diagnostics and the EventFlow will help reveal all internal traces produced by them.
Anyway.
Thank you.

Agreed. I am going to make this issue a "discussion" so other can find, ask questions, and add thoughts as necessary.