I-Synergy.Framework.OpenTelemetry
2025.10527.12202.4-preview
Prefix Reserved
See the version list below for details.
dotnet add package I-Synergy.Framework.OpenTelemetry --version 2025.10527.12202.4-preview
NuGet\Install-Package I-Synergy.Framework.OpenTelemetry -Version 2025.10527.12202.4-preview
<PackageReference Include="I-Synergy.Framework.OpenTelemetry" Version="2025.10527.12202.4-preview" />
<PackageVersion Include="I-Synergy.Framework.OpenTelemetry" Version="2025.10527.12202.4-preview" />
<PackageReference Include="I-Synergy.Framework.OpenTelemetry" />
paket add I-Synergy.Framework.OpenTelemetry --version 2025.10527.12202.4-preview
#r "nuget: I-Synergy.Framework.OpenTelemetry, 2025.10527.12202.4-preview"
#addin nuget:?package=I-Synergy.Framework.OpenTelemetry&version=2025.10527.12202.4-preview&prerelease
#tool nuget:?package=I-Synergy.Framework.OpenTelemetry&version=2025.10527.12202.4-preview&prerelease
OpenTelemetry Integration Guide
Overview
The I-Synergy.Framework provides a flexible OpenTelemetry integration that separates instrumentation configuration from exporter configuration. This separation allows for cleaner code organization and better maintainability.
Key Concepts
- Instrumentation: Defines what to collect (which libraries, frameworks, or custom sources to monitor)
- Exporters: Defines where to send the collected telemetry data (console, OTLP endpoint, Azure Monitor, etc.)
Architecture
The OpenTelemetry integration in I-Synergy.Framework consists of:
ITelemetryProvider
interface that defines the contractOpenTelemetryProvider
implementation- Extension methods for different provider builders (Tracer, Meter, Logger)
Usage Guide
Basic Setup
// In Program.cs or Startup.cs
builder.Logging.AddOpenTelemetry(
builder.Configuration,
builder.Environment,
infoService,
"Telemetry",
tracerInstrumentationAction: ConfigureTracingInstrumentation,
tracerExportersAction: ConfigureTracingExporters,
meterInstrumentationAction: ConfigureMetricsInstrumentation,
meterExportersAction: ConfigureMetricsExporters,
loggerInstrumentationAction: ConfigureLoggingInstrumentation,
loggerExportersAction: ConfigureLoggingExporters);
Instrumentation Actions
Instrumentation actions should configure what telemetry data to collect.
These actions should add sources, configure sampling, and set up instrumentation for specific libraries or frameworks.
private static void ConfigureTracingInstrumentation(TracerProviderBuilder builder)
{
// Add sources to collect data from
builder.AddSource("MyApplicationName");
// Add instrumentation for specific libraries
builder.AddHttpClientInstrumentation(opts =>
{
opts.RecordException = true;
opts.EnrichWithException = (activity, exception) =>
{
activity.SetTag("error.type", exception.GetType().Name);
activity.SetTag("error.message", exception.Message);
};
});
// Add ASP.NET Core instrumentation
builder.AddAspNetCoreInstrumentation();
}
Exporter Actions
Exporter actions should configure where to send the collected telemetry data.
These actions should add exporters to different backends or services.
private static void ConfigureTracingExporters(TracerProviderBuilder builder)
{
// Add Azure Monitor exporter
builder.AddAzureMonitorTraceExporter(options =>
{
options.ConnectionString = "your-connection-string";
});
// Add Jaeger exporter
builder.AddJaegerExporter(options =>
{
options.AgentHost = "localhost";
options.AgentPort = 6831;
});
}
Integration Examples
Azure Monitor Integration
builder.Logging.AddOpenTelemetry(
builder.Configuration,
builder.Environment,
infoService,
"Telemetry",
tracerInstrumentationAction: builder =>
{
builder.AddSource(infoService.ProductName);
builder.AddHttpClientInstrumentation();
},
tracerExportersAction: builder =>
{
var connectionString = builder.Configuration["Telemetry:ConnectionString"];
if (!string.IsNullOrEmpty(connectionString))
{
builder.AddAzureMonitorTraceExporter(options =>
{
options.ConnectionString = connectionString;
});
}
},
meterExportersAction: builder =>
{
var connectionString = builder.Configuration["Telemetry:ConnectionString"];
if (!string.IsNullOrEmpty(connectionString))
{
builder.AddAzureMonitorMetricExporter(options =>
{
options.ConnectionString = connectionString;
});
}
},
loggerExportersAction: builder =>
{
var connectionString = builder.Configuration["Telemetry:ConnectionString"];
if (!string.IsNullOrEmpty(connectionString))
{
builder.AddOpenTelemetry(options =>
{
options.AddAzureMonitorLogExporter(o =>
o.ConnectionString = connectionString);
});
}
});
Sentry Integration
builder.Logging.AddOpenTelemetry(
builder.Configuration,
builder.Environment,
infoService,
"Telemetry",
tracerInstrumentationAction: builder =>
{
builder.AddSource(infoService.ProductName);
builder.AddSentry();
SentrySdk.Init(options =>
{
builder.Configuration.GetSection("Telemetry").Bind(options);
options.Environment = builder.Environment.EnvironmentName;
options.Debug = builder.Environment.IsDevelopment();
options.ServerName = infoService.ProductName;
options.Release = infoService.ProductVersion.ToString();
options.UseOpenTelemetry();
});
});
Advanced Configuration
Manual Instrumentation
For manual instrumentation, you can inject and use the ActivitySource that's registered by the framework:
public class MyService
{
private readonly ActivitySource _activitySource;
public MyService(ActivitySource activitySource)
{
_activitySource = activitySource;
}
public void DoSomething()
{
using var activity = _activitySource.StartActivity("DoSomething");
activity?.SetTag("custom.tag", "value");
// Your code here
}
}
Custom Resource Attributes
You can add custom resource attributes through the OpenTelemetryOptions:
{
"Telemetry": {
"CustomAttributes": {
"deployment.region": "WestEurope",
"service.team": "MyTeam"
}
}
}
These attributes will be added to all telemetry data sent from your application.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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 is compatible. 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. |
-
net8.0
- I-Synergy.Framework.Core (>= 2025.10527.12202.4-preview)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Http.Resilience (>= 9.5.0)
- Microsoft.Extensions.ServiceDiscovery (>= 9.3.0)
- OpenTelemetry (>= 1.12.0)
- OpenTelemetry.Api (>= 1.12.0)
- OpenTelemetry.Exporter.Console (>= 1.12.0)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.12.0)
- OpenTelemetry.Extensions.Hosting (>= 1.12.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.Process (>= 1.12.0-beta.1)
- OpenTelemetry.Instrumentation.Runtime (>= 1.12.0)
- System.Diagnostics.DiagnosticSource (>= 9.0.5)
-
net9.0
- I-Synergy.Framework.Core (>= 2025.10527.12202.4-preview)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Http.Resilience (>= 9.5.0)
- Microsoft.Extensions.ServiceDiscovery (>= 9.3.0)
- OpenTelemetry (>= 1.12.0)
- OpenTelemetry.Api (>= 1.12.0)
- OpenTelemetry.Exporter.Console (>= 1.12.0)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.12.0)
- OpenTelemetry.Extensions.Hosting (>= 1.12.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.Process (>= 1.12.0-beta.1)
- OpenTelemetry.Instrumentation.Runtime (>= 1.12.0)
- System.Diagnostics.DiagnosticSource (>= 9.0.5)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on I-Synergy.Framework.OpenTelemetry:
Package | Downloads |
---|---|
I-Synergy.Framework.AspNetCore
I-Synergy Framework AspNetCore |
|
I-Synergy.Framework.UI
I-Synergy UI Framework for Windows, Linux, Android and WebAssembly |
|
I-Synergy.Framework.UI.WPF
I-Synergy UI Framework for WPF |
|
I-Synergy.Framework.UI.WinUI
I-Synergy UI Framework for WinUI |
|
I-Synergy.Framework.OpenTelemetry.Sentry
I-Synergy Framework OpenTelemetry for Sentry |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
2025.10612.12134.8-preview | 300 | 6/12/2025 |
2025.10611.12313.53-preview | 291 | 6/11/2025 |
2025.10603.10159.54-preview | 152 | 6/3/2025 |
2025.10602.11908.9-preview | 158 | 6/2/2025 |
2025.10601.10124.29-preview | 104 | 5/31/2025 |
2025.10531.12235.29-preview | 103 | 5/31/2025 |
2025.10530.10121.50-preview | 146 | 5/29/2025 |
2025.10527.12202.4-preview | 151 | 5/27/2025 |
2025.10526.12034.25-preview | 147 | 5/26/2025 |
2025.10521.11828.30-preview | 154 | 5/21/2025 |
2025.10520.11715.6-preview | 155 | 5/20/2025 |
2025.10520.11515.16-preview | 155 | 5/20/2025 |
2025.10518.12303.43-preview | 158 | 5/18/2025 |
2025.10518.11257.36-preview | 161 | 5/18/2025 |
2025.10517.12347.27-preview | 109 | 5/17/2025 |
2025.10517.12003.6-preview | 117 | 5/17/2025 |
2025.10516.11720.13-preview | 183 | 5/16/2025 |
2025.10514.12334.2-preview | 238 | 5/14/2025 |
2025.10514.10015.27-preview | 233 | 5/13/2025 |
2025.10511.11032.32-preview | 162 | 5/11/2025 |