Azure.Monitor.OpenTelemetry.AspNetCore
1.0.0-beta.3
Prefix Reserved
See the version list below for details.
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore --version 1.0.0-beta.3
NuGet\Install-Package Azure.Monitor.OpenTelemetry.AspNetCore -Version 1.0.0-beta.3
<PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.0.0-beta.3" />
paket add Azure.Monitor.OpenTelemetry.AspNetCore --version 1.0.0-beta.3
#r "nuget: Azure.Monitor.OpenTelemetry.AspNetCore, 1.0.0-beta.3"
// Install Azure.Monitor.OpenTelemetry.AspNetCore as a Cake Addin #addin nuget:?package=Azure.Monitor.OpenTelemetry.AspNetCore&version=1.0.0-beta.3&prerelease // Install Azure.Monitor.OpenTelemetry.AspNetCore as a Cake Tool #tool nuget:?package=Azure.Monitor.OpenTelemetry.AspNetCore&version=1.0.0-beta.3&prerelease
Azure Monitor Distro client library for .NET
The Azure Monitor Distro is a client library that sends telemetry data to Azure Monitor following the OpenTelemetry Specification. This library can be used to instrument your ASP.NET Core applications to collect and send telemetry data to Azure Monitor for analysis and monitoring, powering experiences in Application Insights.
Getting started
Prerequisites
- Azure Subscription: To use Azure services, including Azure Monitor Distro, you'll need a subscription. If you do not have an existing Azure account, you may sign up for a free trial or use your Visual Studio Subscription benefits when you create an account.
- Azure Application Insights Connection String: To send telemetry data to the monitoring service you'll need connection string from Azure Application Insights. If you are not familiar with creating Azure resources, you may wish to follow the step-by-step guide for Create an Application Insights resource and copy the connection string.
- ASP.NET Core App: An ASP.NET Core application is required to instrument it with Azure Monitor Distro. You can either bring your own app or follow the Get started with ASP.NET Core MVC to create a new one.
Install the package
Latest Version:
Install the Azure Monitor Distro for .NET from NuGet:
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore --prerelease
Nightly builds
Nightly builds are available from this repo's dev feed. These are provided without support and are not intended for production workloads.
Enabling Azure Monitor OpenTelemetry in your application
The following examples demonstrate how to integrate the Azure Monitor Distro into your application.
Example 1
To enable Azure Monitor Distro, add UseAzureMonitor()
to your Program.cs
file and set the APPLICATIONINSIGHTS_CONNECTION_STRING
environment variable to the connection string from your Application Insights resource.
// This method gets called by the runtime. Use this method to add services to the container.
var builder = WebApplication.CreateBuilder(args);
// The following line enables Azure Monitor Distro.
builder.Services.AddOpenTelemetry().UseAzureMonitor();
// This code adds other services for your application.
builder.Services.AddMvc();
var app = builder.Build();
Example 2
To enable Azure Monitor Distro with a hard-coded connection string, add UseAzureMonitor()
to your Program.cs
with the AzureMonitorOptions
containing the connection string.
// This method gets called by the runtime. Use this method to add services to the container.
var builder = WebApplication.CreateBuilder(args);
// The following line enables Azure Monitor Distro with hard-coded connection string.
builder.Services.AddOpenTelemetry().UseAzureMonitor(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000");
// This code adds other services for your application.
builder.Services.AddMvc();
var app = builder.Build();
Note that in the examples above, UseAzureMonitor
is added to the IServiceCollection
in the Program.cs
file. You can also add it in the ConfigureServices
method of your Startup.cs
file.
Authenticate the client
Azure Active Directory (AAD) authentication is an optional feature that can be used with Azure Monitor Distro. To enable AAD authentication, set the Credential
property in AzureMonitorOptions
. This is made easy with the Azure Identity library, which provides support for authenticating Azure SDK clients with their corresponding Azure services.
// Call UseAzureMonitor and set Credential to authenticate through Active Directory.
builder.Services.AddOpenTelemetry().UseAzureMonitor(o =>
{
o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
o.Credential = new DefaultAzureCredential();
});
With this configuration, the Azure Monitor Distro will use the credentials of the currently logged-in user or of the service principal to authenticate and send telemetry data to Azure Monitor.
Note that the Credential
property is optional. If it is not set, Azure Monitor Distro will use the Instrumentation Key from the Connection String to send data to Azure Monitor.
Key concepts
The Azure Monitor Distro is a distribution package which enables users to send telemetry data to Azure Monitor. It includes the .NET OpenTelemetry SDK and instrumentation libraries for ASP.NET Core, HttpClient, and SQLClient.
Examples
Refer to Program.cs
for a complete demo.
Troubleshooting
The Azure Monitor Distro uses EventSource for its own internal logging. The logs are available to any EventListener by opting into the source named "OpenTelemetry-AzureMonitor-Exporter".
OpenTelemetry also provides it's own self-diagnostics feature to collect internal logs. An example of this is available in our demo project here.
Next steps
For more information on Azure SDK, please refer to this website
Contributing
See CONTRIBUTING.md for details on contribution process.
Release Schedule
This distro is under active development.
The library is not yet generally available, and is not officially supported. Future releases will not attempt to maintain backwards compatibility with previous releases. Each beta release includes significant changes to the distro package, making them incompatible with each other.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Azure.Monitor.OpenTelemetry.Exporter (>= 1.0.0-beta.10)
- OpenTelemetry.Extensions.AzureMonitor (>= 1.0.0-beta.3)
- OpenTelemetry.Extensions.Hosting (>= 1.4.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.0.0-rc9.14)
- OpenTelemetry.Instrumentation.Http (>= 1.0.0-rc9.14)
- OpenTelemetry.Instrumentation.SqlClient (>= 1.0.0-rc9.14)
NuGet packages (15)
Showing the top 5 NuGet packages that depend on Azure.Monitor.OpenTelemetry.AspNetCore:
Package | Downloads |
---|---|
OakPeak.Core
Provides a default set of APIs for building Brighten .NET Core microservices and web server applications |
|
Wemogy.AspNet
ASP.NET Helpers |
|
Hexalith.Infrastructure.AspireService.Defaults
Hexalith is a set of libraries to build a micro-service architecture. |
|
DotNetBrightener.Core.Logging.OpenTelemetryEnabled.ApplicationInsights
Package Description |
|
Storm.Infrastructure.Loggings.OpenTelemetry
Storm supports OpenTelemetry. |
GitHub repositories (10)
Showing the top 5 popular GitHub repositories that depend on Azure.Monitor.OpenTelemetry.AspNetCore:
Repository | Stars |
---|---|
Azure/azure-sdk-for-net
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
|
|
Azure/azure-functions-host
The host/runtime that powers Azure Functions
|
|
collinbarrett/FilterLists
:shield: The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances.
|
|
GZTimeWalker/GZCTF
The GZ::CTF project, an open source CTF platform.
|
|
Azure/apiops
APIOps applies the concepts of GitOps and DevOps to API deployment. By using practices from these two methodologies, APIOps can enable everyone involved in the lifecycle of API design, development, and deployment with self-service and automated tools to ensure the quality of the specifications and APIs that they’re building.
|
Version | Downloads | Last updated |
---|---|---|
1.3.0-beta.2 | 15,013 | 10/15/2024 |
1.3.0-beta.1 | 42,359 | 7/16/2024 |
1.2.0 | 1,664,964 | 6/11/2024 |
1.2.0-beta.4 | 36,831 | 5/20/2024 |
1.2.0-beta.3 | 28,383 | 4/19/2024 |
1.2.0-beta.2 | 53,613 | 3/13/2024 |
1.2.0-beta.1 | 14,257 | 2/10/2024 |
1.1.1 | 334,489 | 4/26/2024 |
1.1.0 | 885,085 | 1/29/2024 |
1.0.0 | 325,502 | 11/29/2023 |
1.0.0-beta.8 | 188,539 | 10/6/2023 |
1.0.0-beta.7 | 38,920 | 9/20/2023 |
1.0.0-beta.6 | 72,630 | 8/9/2023 |
1.0.0-beta.5 | 25,463 | 7/14/2023 |
1.0.0-beta.4 | 111,092 | 5/10/2023 |
1.0.0-beta.3 | 11,983 | 4/11/2023 |
1.0.0-beta.2 | 1,382 | 3/14/2023 |
1.0.0-beta.1 | 198 | 3/7/2023 |