Application Performance Management for ASP.NET Core application: Azure Application Insights vs Elastic APM
APM is a necessity in the world of micro services, but knowing that we need it, raises the next question: which of the many available products to choose and how? Let's try and find out.
As it turns out the feature set is quite different, so there are several trade offs to make.
Summary
The following post tries to evaluate two APM alternatives from a perspective of a .NET Core application.As it turns out the feature set is quite different, so there are several trade offs to make.
Disclaimer
This overview is done under the following architectural constraints:- APM agent is hosted in-process of the application
- The application is built on ASP.NET Core.
The information is as of end of June 2019, both platforms are undergoing active development, so things will change!
Key characteristics
Evaluating and comparing each and every feature would of course be a complete and exhaustive approach. It would also be exhausting to read, and pretty expensive to conduct. Who would want to pay for that? Usually, for every investigation there is a time box, a limit on the budget of how much resource a company is ready to spend for research. This is exactly the case here.
So, only a subset of features is evaluated.
How is it chosen?
Well, simply these are the features that mattered to us most and that directly impacted the nonfunctional requirements of our systems:
- APM Agent package/library readiness for PRODuction
- Data ingestion latency and time until data becomes indexed & searchable
- Out of the box tracing / instrumentation features
- Integration with native .NET mechanisms like Activity, DiagnosticListener, EventSource etc
- Distributed tracing
- Programming model, support for generic concepts like OpenTracing
- Support for custom metrics, logs, transactions, spans and ability to correlate and view them easily in one UI
Let's look into each of those topics in turn.
Agent package PROD readiness
Elastic Stack just announced update to 7.2, where quote
we’re moving the Elastic APM agent for .NET from preview to beta statusStill, it is not production-ready, as can be easily seen from their GitHub apm-agent-dotnet
It's pretty lively in the commits section, but essentially there is only one contributor -
Gergely Kalapos. He's good, you shoud visit his blog. But he is still a one-man army.
Gergely Kalapos. He's good, you shoud visit his blog. But he is still a one-man army.
So, in summary - Elastic will get there for sure, but probably not so soon.
Application Insights, on the other hand is a much more mature player in this space.
Let's compare NuGet packages popularity for Microsoft.ApplicationInsights and Elastic.Apm
Both of them have been around for about 5 months at this time, as for number of downloads:
Wow, 0% for Elastic, 100% for Application Insights.
Clearly Elastic is moving to bite off some market share from Azure.
But what is it that they have to offer? What's their competitive advantage?
Let's look at the data latency first.
Stay tuned for the next post.
.
Comments
Post a Comment