If you have been a fan of App Services you will noticed a gap in the diagnostics story when comparing Windows and Linux. On Windows services you are able to collect all kind of diagnostics artifacts including dumps and traces but not so much with Linux. Those of us coming from the Windows world immediately recognize this gap in diagnostics and in effect it puts another layer of mystery between us and our managed applications.
To help bridge this cross platform diagnostics gap I have been fortunate to be working on a cross discipline team including Visual Studio and .NET to produce dotnet-monitor (which will GA this November) a cross platform diagnostics tool. dotnet-monitor relies on the Diagnostics IP Protocol to communicate with the dotnet core runtime's Diagnostics Server from an external client over a platform-specific transport (Unix Domain Sockets on *nix, Named Pipes on Windows).
dotnet-monitor on App Service for Linux
While we expect customers to use dotnet-monitor in multiple environments, architectures and platforms, our team found a perfect partner with the App Services for Linux team who have been looking for ways to bring diagnostics parity to our growing Azure Linux customer base. With this capability, we now offer built-in support for collecting deep diagnostic artifacts that can help you debug application code issues. These artifacts include memory dumps and profiler traces. These tools empower developers to diagnose a variety of .NET code scenarios on Linux including:
- Slow performance
- High memory
- High CPU
- Runtime errors and exceptions