OpenTelemetry.Extensions.Hosting 1.19.0-rc.1

OpenTelemetry.Extensions.Hosting

NuGet NuGet

Installation

dotnet add package OpenTelemetry.Extensions.Hosting

Overview

The OpenTelemetry.Extensions.Hosting package provides extension methods for automatically starting (and stopping) OpenTelemetry tracing (TracerProvider) and metrics (MeterProvider) in ASP.NET Core and .NET Generic hosts. These are completely optional extensions meant to simplify the management of the OpenTelemetry SDK lifecycle.

Extension method reference

Targeting Microsoft.Extensions.DependencyInjection.IServiceCollection:

  • AddOpenTelemetry: Registers an IHostedService to automatically start tracing and/or metric services in the supplied IServiceCollection and then returns an OpenTelemetryBuilder class.

    [!NOTE] AddOpenTelemetry should be called by application host code only. Library authors see: Registration extension method guidance for library authors.

    [!NOTE] Multiple calls to AddOpenTelemetry will NOT result in multiple providers. Only a single TracerProvider and/or MeterProvider will be created in the target IServiceCollection. To establish multiple providers use the Sdk.CreateTracerProviderBuilder() and/or Sdk.CreateMeterProviderBuilder() methods. See TracerProvider configuration and Building a MeterProvider for more details.

    OpenTelemetryBuilder methods:

    • ConfigureResource: Registers a callback action to configure the ResourceBuilder for tracing and metric providers.

    • WithTracing: Enables tracing and optionally configures the TracerProvider.

    • WithMetrics: Enables metrics and optionally configures the MeterProvider.

Targeting Microsoft.Extensions.Hosting.IHostApplicationBuilder:

  • AddOpenTelemetry: Does everything the IServiceCollection method above does, using IHostApplicationBuilder.Services, and additionally:

    • Seeds service.name from IHostEnvironment.ApplicationName and deployment.environment.name from IHostEnvironment.EnvironmentName as low-priority resource defaults. Both are superseded by the OTEL_SERVICE_NAME / OTEL_RESOURCE_ATTRIBUTES environment variables or by any explicit ConfigureResource call.

    • Makes the host's Configuration available to OpenTelemetry extensions during setup. It also registers that configuration as an IConfigurationManager singleton when the application has not already registered one.

    It returns the same OpenTelemetryBuilder class, so the only change to an existing setup is the first line:

    var builder = Host.CreateApplicationBuilder(args);
    
    builder.AddOpenTelemetry()
        .WithTracing(tracing => tracing.AddSource("MyApp"));
    

    [!NOTE] A host registers IConfiguration as a factory so that the container owns its disposal, which leaves the underlying configuration unreachable while the application is still being built. Registering it makes the application's configuration available to OpenTelemetry extensions that only receive an IServiceCollection, so they can contribute configuration sources during setup rather than replacing the IConfiguration registration afterwards. An IConfigurationManager already registered by the application is left in place.

Usage

The following example shows how to register OpenTelemetry tracing & metrics in an ASP.NET Core host using the OpenTelemetry.Extensions.Hosting extensions.

using Microsoft.AspNetCore.Builder;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;

var appBuilder = WebApplication.CreateBuilder(args);

appBuilder.AddOpenTelemetry()
    .WithTracing(builder => builder.AddConsoleExporter())
    .WithMetrics(builder => builder.AddConsoleExporter());

var app = appBuilder.Build();

app.Run();

A fully functional example can be found here.

[!IMPORTANT] Applications that do not support hosted services, such as Blazor, should resolve the ITelemetryHostInitializer service from the service provider to manually initialize the OpenTelemetry SDK as part of application startup.

For example:

app.Services.GetRequiredService<ITelemetryHostInitializer>().Initialize();

Resources

To dynamically add resources at startup from the dependency injection you can provide an IResourceDetector. To make use of it add it to the dependency injection and then you can use the IServiceProvider to add it to OpenTelemetry:

public class MyResourceDetector : IResourceDetector
{
    private readonly IWebHostEnvironment webHostEnvironment;

    public MyResourceDetector(IWebHostEnvironment webHostEnvironment)
    {
        this.webHostEnvironment = webHostEnvironment;
    }

    public Resource Detect()
    {
        return ResourceBuilder.CreateEmpty()
            .AddService(serviceName: this.webHostEnvironment.ApplicationName)
            .AddAttributes(new Dictionary<string, object> { ["host.environment"] = this.webHostEnvironment.EnvironmentName })
            .Build();
    }
}

services.AddSingleton<MyResourceDetector>();

services.AddOpenTelemetry()
    .ConfigureResource(builder =>
        builder.AddDetector(sp => sp.GetRequiredService<MyResourceDetector>()))
    .WithTracing(builder => builder.AddConsoleExporter())
    .WithMetrics(builder => builder.AddConsoleExporter());

Migrating from pre-release versions of OpenTelemetry.Extensions.Hosting

Pre-release versions (all versions prior to 1.4.0) of OpenTelemetry.Extensions.Hosting contained signal-specific methods for configuring tracing and metrics:

These methods were marked obsolete and later removed. You should migrate your code to the new AddOpenTelemetry method documented above. Refer the old and new versions of the example application to assist you in your migration.

Hosted Service Ordering and Telemetry Capture

TBD

References

Showing the top 20 packages that depend on OpenTelemetry.Extensions.Hosting.

Packages Downloads
Aspire.Hosting
Core abstractions for the Aspire application model.
36
Aspire.Hosting
Core abstractions for the Aspire application model.
38
Aspire.Hosting
Core abstractions for the Aspire application model.
39
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
34
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
40
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
49
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
51
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
54
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
57
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
58
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
60
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
71
Azure.Monitor.OpenTelemetry.Exporter
An OpenTelemetry .NET exporter that exports to Azure Monitor
74
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
36
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
43
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
44
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
45
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
48
Microsoft.ApplicationInsights.AspNetCore
Application Insights for ASP.NET Core web applications. See https://azure.microsoft.com/documentation/articles/app-insights-asp-net-five/ for more information. Privacy statement: https://go.microsoft.com/fwlink/?LinkId=512156
75

For highlights and announcements see: https://github.com/open-telemetry/opentelemetry-dotnet/blob/core-1.19.0-rc.1/RELEASENOTES.md. For detailed changes see: https://github.com/open-telemetry/opentelemetry-dotnet/blob/core-1.19.0-rc.1/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md.

.NET 10.0

.NET Framework 4.6.2

.NET 8.0

.NET 9.0

.NET Standard 2.0

Version Downloads Last updated
1.19.1 0 09/21/2026
1.19.1-rc.1 0 09/21/2026
1.19.0 10 09/19/2026
1.19.0-rc.1 10 09/19/2026
1.18.0 18 08/23/2026
1.18.0-rc.1 13 08/21/2026
1.17.0 23 07/18/2026
1.17.0-rc.1 21 07/16/2026
1.16.0 29 06/10/2026
1.16.0-rc.1 24 06/10/2026
1.15.3 44 04/21/2026
1.15.2 43 04/08/2026
1.15.1 41 03/27/2026
1.15.0 63 01/21/2026
1.14.0 77 12/07/2025
1.14.0-rc.1 54 12/07/2025
1.13.1 75 12/07/2025
1.13.0 61 12/07/2025
1.12.0 54 12/07/2025
1.11.2 52 12/07/2025
1.11.1 54 12/07/2025
1.11.0 54 12/07/2025
1.11.0-rc.1 63 12/07/2025
1.10.0 57 12/07/2025
1.10.0-rc.1 59 12/07/2025
1.10.0-beta.1 58 12/07/2025
1.9.0 58 12/07/2025
1.9.0-rc.1 56 12/07/2025
1.9.0-alpha.1 55 12/07/2025
1.8.1 58 12/07/2025
1.8.0 56 12/07/2025
1.8.0-rc.1 62 12/07/2025
1.8.0-beta.1 60 12/07/2025
1.7.0 56 12/07/2025
1.7.0-rc.1 61 12/07/2025
1.7.0-alpha.1 54 12/07/2025
1.6.0 64 12/07/2025
1.6.0-rc.1 54 12/07/2025
1.6.0-alpha.1 57 12/07/2025
1.5.1 56 12/07/2025
1.5.0 60 12/07/2025
1.5.0-rc.1 58 12/07/2025
1.5.0-alpha.2 62 12/07/2025
1.5.0-alpha.1 59 12/07/2025
1.4.0 55 12/07/2025
1.4.0-rc.4 62 12/07/2025
1.4.0-rc.3 51 12/07/2025
1.4.0-rc.2 60 12/07/2025
1.4.0-rc.1 61 12/07/2025
1.0.0-rc9.9 58 12/07/2025
1.0.0-rc9.8 59 12/07/2025
1.0.0-rc9.7 59 12/07/2025
1.0.0-rc9.6 55 12/07/2025
1.0.0-rc9.5 55 12/07/2025
1.0.0-rc9.4 62 12/07/2025
1.0.0-rc9.3 54 12/07/2025
1.0.0-rc9.2 54 12/07/2025
1.0.0-rc9.1 58 12/07/2025
1.0.0-rc9 61 12/07/2025
1.0.0-rc8 60 12/07/2025
1.0.0-rc7 63 12/07/2025
1.0.0-rc6 54 12/07/2025
1.0.0-rc5 59 12/07/2025
1.0.0-rc4 68 12/07/2025
1.0.0-rc3 57 12/07/2025
1.0.0-rc2 55 12/07/2025
1.0.0-rc10 64 12/07/2025
1.0.0-rc1.1 54 12/07/2025
0.8.0-beta.1 53 12/07/2025
0.7.0-beta.1 58 12/07/2025
0.6.0-beta.1 63 12/07/2025
0.5.0-beta.2 56 12/07/2025
0.4.0-beta.2 59 12/07/2025
0.3.0-beta.1 53 12/07/2025
0.2.0-alpha.275 55 12/07/2025