OpenTelemetry.Instrumentation.Hangfire
1.13.0-beta.1
Prefix Reserved
dotnet add package OpenTelemetry.Instrumentation.Hangfire --version 1.13.0-beta.1
NuGet\Install-Package OpenTelemetry.Instrumentation.Hangfire -Version 1.13.0-beta.1
<PackageReference Include="OpenTelemetry.Instrumentation.Hangfire" Version="1.13.0-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Hangfire" Version="1.13.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Hangfire" />
paket add OpenTelemetry.Instrumentation.Hangfire --version 1.13.0-beta.1
#r "nuget: OpenTelemetry.Instrumentation.Hangfire, 1.13.0-beta.1"
#:package OpenTelemetry.Instrumentation.Hangfire@1.13.0-beta.1
#addin nuget:?package=OpenTelemetry.Instrumentation.Hangfire&version=1.13.0-beta.1&prerelease
#tool nuget:?package=OpenTelemetry.Instrumentation.Hangfire&version=1.13.0-beta.1&prerelease
Hangfire Instrumentation for OpenTelemetry .NET
| Status | |
|---|---|
| Stability | Beta |
| Code Owners | @fred2u |
This is an Instrumentation Library, which instruments Hangfire and collects telemetry about BackgroundJob.
Steps to enable OpenTelemetry.Instrumentation.Hangfire
Step 1: Install and configure Hangfire
Step 2: Install Hangfire instrumentation Package
Add a reference to the
OpenTelemetry.Instrumentation.Hangfire
package. Also, add any other instrumentations & exporters you will need.
dotnet add package OpenTelemetry.Instrumentation.Hangfire --prerelease
Step 3: Enable Hangfire Instrumentation at application startup
Hangfire instrumentation must be enabled at application startup.
The following example demonstrates adding Hangfire instrumentation to a
console application. This example also sets up the OpenTelemetry Console
exporter, which requires adding the package
OpenTelemetry.Exporter.Console
to the application.
using OpenTelemetry.Trace;
public class Program
{
public static void Main(string[] args)
{
using var tracerProvider = Sdk
.CreateTracerProviderBuilder()
.AddHangfireInstrumentation()
.AddConsoleExporter()
.Build();
}
}
For an ASP.NET Core application, adding instrumentation is typically done in
the ConfigureServices of your Startup class. Refer to example.
For an ASP.NET application, adding instrumentation is typically done in the
Global.asax.cs. Refer to example.
Advanced configuration
This instrumentation can be configured to change the default behavior by using
HangfireInstrumentationOptions.
using var tracerProvider = Sdk
.CreateTracerProviderBuilder()
.AddHangfireInstrumentation(options =>
{
options.DisplayNameFunc = job => $"JOB {job.Id}";
options.Filter = job => job.Id == "Filter this job";
options.RecordException = true;
})
.AddConsoleExporter()
.Build();
When used with
OpenTelemetry.Extensions.Hosting,
all configurations to HangfireInstrumentationOptions
can be done in the ConfigureServices method of your applications Startup
class as shown below.
// Configure
services.Configure<HangfireInstrumentationOptions>(options =>
{
options.DisplayNameFunc = job => $"JOB {job.Id}";
options.Filter = job => job.Id == "Filter this job";
options.RecordException = true;
});
services.AddOpenTelemetry()
.WithTracing(builder => builder
.AddHangfireInstrumentation()
.AddConsoleExporter());
RecordException
Configures a value indicating whether the exception will be recorded as ActivityEvent or not. See Semantic Conventions for Exceptions on Spans
using var tracerProvider = Sdk
.CreateTracerProviderBuilder()
.AddHangfireInstrumentation(options =>
{
options.RecordException = true;
})
.AddConsoleExporter()
.Build();
DisplayNameFunc
This option allows changing activity display name.
using var tracerProvider = Sdk
.CreateTracerProviderBuilder()
.AddHangfireInstrumentation(options =>
{
options.DisplayNameFunc = job => $"JOB {job.Id}";
})
.AddConsoleExporter()
.Build();
If not configured the default is
$"JOB {BackgroundJob.Job.Type.Name}.{BackgroundJob.Job.Method.Name}"
Filter
This option can be used to filter out activities based on the BackgroundJob
being executed. The Filter function should return true if the telemetry is
to be collected, and false if it should not.
The following code snippet shows how to use Filter to filter out traces for
job with a specified job id.
using var tracerProvider = Sdk
.CreateTracerProviderBuilder()
.AddHangfireInstrumentation(options =>
{
options.Filter = job => job.Id == "Filter this job";
})
.AddConsoleExporter()
.Build();
References
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- Hangfire.Core (>= 1.7.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Newtonsoft.Json (>= 13.0.1)
- OpenTelemetry.Api.ProviderBuilderExtensions (>= 1.13.1 && < 2.0.0)
NuGet packages (12)
Showing the top 5 NuGet packages that depend on OpenTelemetry.Instrumentation.Hangfire:
| Package | Downloads |
|---|---|
|
Grafana.OpenTelemetry
Full Grafana distribution of OpenTelemetry .NET |
|
|
Keed_Digital.SharedKernel.Infrastructure
Package Description |
|
|
CyberEye.Observability.Lib
Package cung cấp các cấu hình về Observability, Monitoring, Telemetry như Metrics, Traces |
|
|
Dosaic.Plugins.Jobs.Hangfire
A plugin-first dotnet framework for rapidly building anything hosted in the web. |
|
|
Eaf.OpenTelemetry
Enterprise Application Foundation - OpenTelemetry implementation |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on OpenTelemetry.Instrumentation.Hangfire:
| Repository | Stars |
|---|---|
|
bitfoundation/bitplatform
Build all of your apps using what you already know and love ❤️
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.13.0-beta.1 | 367 | 10/23/2025 |
| 1.12.0-beta.1 | 268,576 | 6/23/2025 |
| 1.9.0-beta.1 | 1,091,842 | 10/2/2024 |
| 1.6.0-beta.1 | 2,077,145 | 12/20/2023 |
| 1.5.0-beta.1 | 852,328 | 6/23/2023 |
| 1.0.0-beta.4 | 938,596 | 12/16/2022 |
| 1.0.0-beta.3 | 113,842 | 10/26/2022 |
| 1.0.0-beta.2 | 295,624 | 7/13/2022 |
| 1.0.0-beta.1 | 23,410 | 6/3/2022 |