/apm-agent-dotnet

Elastic APM .NET Agent

Primary LanguageC#Apache License 2.0Apache-2.0

Build Status codecov

apm-agent-dotnet

Please fill out this survey to help us prioritize framework support: https://goo.gl/forms/FHHbhptcDx8eDNx92

Installation

Official NuGet packages can be referenced from NuGet.org.

Package Name Purpose Download
Elastic.Apm The core of the Agent, Public Agent API, Auto instrumentation for libraries that are part of .NET Standard 2.0 NuGet Release
Elastic.Apm.AspNetCore ASP.NET Core auto instrumentation NuGet Release
Elastic.Apm.EntityFrameworkCore Entity Framework Core auto instrumentation NuGet Release
Elastic.Apm.NetCoreAll References every .NET Core related elastic APM package. It can be used to simply turn on the agent with a single line and activate all auto instrumentation. NuGet Release

Documentation

Docs are located here. That page is generated from the content of the docs folder.

Getting Help

If you have any feedback feel free to open an issue. For any other assistance, please open or add to a topic on the APM discuss forum.

If you need help or hit an issue, please start by opening a topic on our discuss forums. Please note that we reserve GitHub tickets for confirmed bugs and enhancement requests.

Contributing

See the contributing documentation

Repository structure

These are the main folders within the repository:

  • src: The source code of the agent. Each project within this folder targets a specific library, and there is one core project, which is referenced by all other projects.
    • Elastic.Apm: The core project targeting .NET Standard 2.0. It contains the Agent API, the infrastructure to report data to the APM Server, the logging infrastructure, and auto-instrumentation for things that are part of .NET Standard 2.0.
    • Elastic.Apm.AspNetCore: Auto-instrumentation for ASP.NET Core.
    • Elastic.Apm.EntityFrameworkCore: Auto-instrumentation for EntityFramework Core.
    • Elastic.Apm.SmartSql: Elastic APM for SmartSql. This package contains auto instrumentation for SmartSql.
    • Elastic.Apm.NetCoreAll: A convenient project that references all other projects from the src folder. It contains an ASP.NET Core middleware extension that enables the agent and every other component with a single line of code. In a typical ASP.NET Core application (e.g. apps referencing Microsoft.AspNetCore.All) that uses EF Core the Elastic.Apm.All can be referenced.
    • Elastic.Apm.NetCoreAll: A convenient project that references all other .NET Core related projects from the src folder. It contains an ASP.NET Core middleware extension that enables the agent and every other component with a single line of code. In a typical ASP.NET Core application (e.g. apps referencing Microsoft.AspNetCore.All) that uses EF Core the Elastic.Apm.NetCoreAll can be referenced.
    • Elastic.Apm.AspNetFullFramework: Auto-instrumentation for ASP.NET (classic).
  • test: This folder contains test projects. Typically each project from the src folder has a corresponding test project.
    • Elastic.Apm.Tests: Tests the Elastic.Apm project.
    • Elastic.Apm.AspNetCore.Tests: Tests the Elastic.Apm.AspNetCore project.
    • Elastic.Apm.AspNetFullFramework.Tests: Tests the Elastic.Apm.AspNetFullFramework project.
    • Elastic.Apm.Tests.MockApmServer: Implementation of APM Server mock used for agent-as-component tests (for example in Elastic.Apm.AspNetFullFramework).
  • docs: This folder contains the official documentation.
  • sample: Sample applications that are monitored by the APM .NET Agent. These are also very useful for development: you can start one of these applications and debug the agent through them.
  • .ci: This folder contains all the scripts used to build, test and release the agent within the CI.

License

Elastic APM .Net Agent is licensed under Apache License, Version 2.0.