You can use the AppDynamics .NET Core for Linux SDK to monitor the performance of .NET Core applications running on Linux.

The SDK supports these features:

  • Business transaction registration and error reporting
  • Exit call with correlation and error reporting
  • Metrics
  • Snapshots with user properties but without callgraphs

Together, these tools provide visibility on application load and response times, and any custom metrics you define.

You monitor .NET Core applications by deploying the .NET Core for Linux SDK to your application directory and project.

Once running, the agent registers business transactions with the AppDynamics Controller. Then, you can view your application flow map and monitor performance in the Controller

Before You Begin

  1. Confirm that you have access to a compatible Controller. See Agent and Controller Compatibility.
  2. Confirm the connection settings to the Controller where your agent will report data:
    • If you use a SaaS Controller, AppDynamics sent you the Controller host in your Welcome Email. Use port 443 for HTTPS or port 80 for HTTP.
    • If you use an on-premises Controller, you supplied the host and port during installation.
  3. Verify that you have access the machine where the application runs as a user account with privileges to install the agent software, and restart the application.
  4. Verify that the machine where the application runs can connect to the Controller. Proxies or firewalls on the network between the agent and Controller may require additional configuration.

Prepare to Install

Ensure you have:

  • .NET Core SDK
  • .NET Core application running on Linux
  • AppDynamics.AgentSDK NuGet package
  • Visual Studio or other IDE
  • The .NET Core command-line interface (CLI)

Install the SDK

Complete these steps manually, using Visual Studio, or another integrated development environment (IDE).

  1. To add the AppDynamics.AgentSDK NuGet package in the project, from the command line, enter: 

    dotnet add package AppDynamics.AgentSDK_x64
    CODE

    Once you enter the command, there's a compatibility check runs to ensure the package is compatible with the frameworks in the project. If the check passes, then a <PackageReference> element is added to the project file, and dotnet restore is run implicitly.

  2. Modify your project to use the AppDynamics SDK. See .NET Core for Linux SDK Reference.
    Add the SDK namespace and SDK code to the application. For example:

    using AppDynamics;
    ...
    namespace coremvc.Controllers
    {
       public class HomeController : Controller
       {
          public IActionResult SomePage()
          {
              var currCtxId = AgentSDK.StartBusinessTransaction("DemoBT", "ASP_DOTNET", "");
              // Code here calls to other ASP_DOTNET component
    			...
              AgentSDK.StopBusinessTransaction(currCtxId);
              return View();
           }
           ...
    CODE
  3. Run dotnet build or dotnet publish.
    A warning message displays stating the AppDynamics configuration has not been updated. This is normal.
    • Running dotnet build adds this AppDynamics configuration file to your application:
      <application_directory>: AppDynamicsConfig.json
    • Running dotnet publish renames the AppDynamicsConfig.json file and copies it to the publish directory for the .NET Core for Linux SDK to reference and use:
      <publish_directory): <project_name>.AppDynamicsConfig.json
  4. Proceed to Using .NET Core for Linux SDK for instructions to update the AppDynamics.Config.json file and connect the agent to the Controller.

Known Issues

The requirement to disable loading of native images (NGEN) for self-contained apps compiled with .NET Core 2.0.

Due to a bug in the .NET Core runtime (see https://github.com/dotnet/coreclr/issues/13021), the command the .NET Core for Linux SDK profiler sends to the runtime to disable loading of native images is ignored. This prevents AppDynamics from instrumenting any methods in these assemblies which include most of the .NET Standard libraries.

To work around this issue, disable using native images by setting this environment variable:

COMPLUS_ReadyToRun=0