OpenTelemetry.Extensions.Hosting 1.14.0

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.

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 Microsoft.Extensions.DependencyInjection;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;

var appBuilder = WebApplication.CreateBuilder(args);

appBuilder.Services.AddOpenTelemetry()
    .ConfigureResource(builder => builder.AddService(serviceName: "MyService"))
    .WithTracing(builder => builder.AddConsoleExporter())
    .WithMetrics(builder => builder.AddConsoleExporter());

var app = appBuilder.Build();

app.Run();

A fully functional example can be found here.

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
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
44
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
45
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
46
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
47
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
48
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
50
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
51
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
53
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
54
Honeycomb.OpenTelemetry
Honeycomb's OpenTelemetry SDK
59
Quantum.Framework.Core.NetCore
Package Description
49
Quantum.Framework.Core.NetCore
Package Description
51
Quantum.Framework.Core.NetCore
Package Description
53
Quantum.Framework.Core.NetCore
Package Description
55
Quantum.Framework.Core.NetCore
Package Description
57
Quantum.Framework.Core.NetCore
Package Description
59
Quantum.Framework.Core.NetCore
Package Description
61

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

Version Downloads Last updated
1.14.0 32 11/13/2025
1.14.0-rc.1 23 10/21/2025
1.13.1 20 10/12/2025
1.13.0 23 10/03/2025
1.12.0 31 05/01/2025
1.11.2 32 03/14/2025
1.11.1 38 01/31/2025
1.11.0 35 01/20/2025
1.11.0-rc.1 36 12/12/2024
1.10.0 45 11/14/2024
1.10.0-rc.1 40 12/04/2024
1.10.0-beta.1 39 12/08/2024
1.9.0 127 12/02/2024
1.9.0-rc.1 36 12/02/2024
1.9.0-alpha.1 47 05/28/2024
1.8.1 48 06/01/2024
1.8.0 44 06/01/2024
1.8.0-rc.1 49 05/28/2024
1.8.0-beta.1 44 05/28/2024
1.7.0 40 06/01/2024
1.7.0-rc.1 40 05/28/2024
1.7.0-alpha.1 37 05/28/2024
1.6.0 40 12/02/2024
1.6.0-rc.1 37 05/28/2024
1.6.0-alpha.1 47 05/28/2024
1.5.1 44 07/20/2023
1.5.0 51 06/01/2024
1.5.0-rc.1 41 05/28/2024
1.5.0-alpha.2 43 05/28/2024
1.5.0-alpha.1 40 05/28/2024
1.4.0 47 06/01/2024
1.4.0-rc.4 39 05/28/2024
1.4.0-rc.3 46 05/28/2024
1.4.0-rc.2 40 05/28/2024
1.4.0-rc.1 40 05/28/2024
1.0.0-rc9.9 44 05/28/2024
1.0.0-rc9.8 47 05/28/2024
1.0.0-rc9.7 40 05/28/2024
1.0.0-rc9.6 41 05/28/2024
1.0.0-rc9.5 44 05/28/2024
1.0.0-rc9.4 47 05/28/2024
1.0.0-rc9.3 44 05/28/2024
1.0.0-rc9.2 39 05/28/2024
1.0.0-rc9.1 39 05/28/2024
1.0.0-rc9 42 05/28/2024
1.0.0-rc8 40 05/28/2024
1.0.0-rc7 42 12/04/2024
1.0.0-rc6 47 05/28/2024
1.0.0-rc5 45 05/28/2024
1.0.0-rc4 49 05/28/2024
1.0.0-rc3 44 05/28/2024
1.0.0-rc2 44 05/28/2024
1.0.0-rc10 40 05/28/2024
1.0.0-rc1.1 36 05/28/2024
0.8.0-beta.1 40 05/28/2024
0.7.0-beta.1 45 05/28/2024
0.6.0-beta.1 47 05/16/2023
0.5.0-beta.2 41 05/28/2024
0.4.0-beta.2 49 05/28/2024
0.3.0-beta.1 40 05/28/2024
0.2.0-alpha.275 44 05/28/2024