Monitoring .NET Core Applications with Dynatrace

This post was coauthored with Georg Schausberger.

If you follow the development of the .NET framework you probably know that there are some tremendous changes in the Microsoft world: the cross-platform, open-source implementation of .NET, the .NET Core was released and with Visual Studio 2017 finally, the tooling for development also reached RTM state.

So, the framework is RTM, the tooling for development is also RTM, and we believe that the next thing you need is an APM solution to monitor your applications in production. And this is exactly what we work on.

This post gives you an overview about our work on .NET core, and we try to give you an outlook on this topic for the future.

1. ASP.NET Core on Full Framework

As you may know Microsoft not only implemented a new cross platform CLR, they also created a cross platform web stack: this is ASP.NET Core, which can run both on the CoreCLR and on Full Framework. As the first step we extended our .NET agent with ASP.NET Core capabilities. This has been shipped in Dynatrace since September 2016 and in AppMon 6.5. We also blogged about this back in December. Of course, at that point it was clear for us that we want to go further and provide the same support for CoreCLR, so we did not stop at that point

2. .NET Core on Windows (including ASP.NET Core on .NET Core)

As you may guess the bigger challenge was to support CoreCLR. What we introduced in point “ASP.NET Core on Full Framework.” is a specialized sensor for ASP.NET Core based on the existing .NET agent. Making this agent compatible with the new CoreCLR on Windows was the next step. The big news is that this work will be shipped in AppMon 7.0 and in Dynatrace OneAgent version 117.

If you already ported an existing application from Full Framework to CoreCLR you know that it is quite a big challenge. The same applies for our agent, so this was a big work for us too. Profiling .NET Core is something completely new, therefore in the first phase we release it with a Beta label.

This will be publicly available as Beta starting end of April’17 in Dynatrace SaaS. Dynatrace Managed will receive Beta support for .NET Core with version 118. We highly welcome customers for our AppMon EAP 7.0 (early access program) to test out .NET Core monitoring. (details in FAQ section below)

So, let’s see how it looks:

This is a PurePath showing all DB statements involved in showing all tablets on SimplCommerce.

3. .NET Core on Linux and other non-Windows system

Linux and other platforms offer many new opportunities for hosting .NET Core services. The Profiling API of the CoreCLR on Linux is still not yet officially supported and not completely tested by Microsoft. Note: We are investing time into upgrading our testing infrastructure for .NET applications on Linux. We are committed to release this as quickly as possible, but we cannot promise a release date because the underlying Profiler API is still under construction as you see on GitHub.

4. FAQ

Q: Is the .NET Core Agent production ready?

A: Profiling .NET Core is something completely new, therefore in the first phase we release it with a Beta label.

Q: What about Azure?

A: There are Dynatrace Azure Extensions which automatically install everything needed for monitoring your .NET Core App inside Azure. Just search on the Azure Portal for Dynatrace under extensions. Or you can find it here.

Q: How is this related to OneAgent?

A: The OneAgent is the new Agent Platform which supports new technologies like ASP.NET Core, .NET Core, OWIN/ Katana. Everything we announce in this post applies to OneAgent.

Q: I am a Dynatrace SaaS customer, can I use this already?

A: The .NET Core beta support requires the OneAgent version 117. This will be available to you by the end of April.

Q: I am a Dynatrace Managed customer, can I use this already?

A: The .NET Core beta support requires the OneAgent version 117 and Cluster version 118.

Q: We would like to participate in an EAP program and work with you on this. How can we contact you?
A: Just register for EAP here

Gergely studied computer engineering in Hungary and software engineering in Austria. He started to work with .NET when Version 3.5 came out. At Dynatrace, he is part of the Agent development team and he mainly works on the .NET agent. He focuses on everything around .NET and the CLR and he likes to write code in C# and in C++. Reach him at @gregkalapos