/apm-agent-dotnet

Elastic APM .NET Agent

Primary LanguageC#Apache License 2.0Apache-2.0

apm-agent-dotnet

Build Status codecov

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 and activate all auto instrumentation. NuGet Release
Elastic.Apm.AspNetFullFramework ASP.NET (classic) auto instrumentation with an IIS Module. NuGet Release
Elastic.Apm.EntityFramework6 Entity Framework 6 auto instrumentation. NuGet Release
Elastic.Apm.Elasticsearch Integration with the .NET clients for Elasticsearch. NuGet Release
Elastic.Apm.StackExchange.Redis Integration with the StackExchange.Redis client for Redis. NuGet Release
Elastic.Apm.MongoDb Integration with the MongoDb.Driver driver for MongoDb. NuGet Release
Elastic.Apm.Azure.ServiceBus Integration with Azure ServiceBus NuGet Release
Elastic.Apm.Azure.Storage Integration with Azure Storage NuGet Release
Elastic.Apm.Azure.CosmosDb Integration with Azure CosmosDB 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

Releasing

See the releasing 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.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).
    • Elastic.Apm.EntityFramework6: Auto-instrumentation for Entity Framework 6.
    • Elastic.Apm.SqlClient: Auto-instrumentation for System.Data.SqlClient and Microsoft.Data.SqlClient.
    • Elastic.Apm.Elasticsearch: Auto-instrumentation for the official .NET clients for Elasticsearch.
    • Elastic.Apm.StackExchange.Redis: Auto-instrumentation for the StackExchange.Redis client for Redis.
    • Elastic.Apm.MongoDb: Instrumentation for the MongoDb.Driver driver for MongoDb.
    • Elastic.Apm.Azure.ServiceBus: Instrumentation for Azure ServiceBus.
    • Elastic.Apm.Azure.Storage: Instrumentation for Azure Storage.
  • 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.Tests).
  • 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.
  • .build: Contains files used when building the solution, and a project to perform common build tasks.
  • .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.