AspNet.KickStarter.AddIn.OpenTelemetry
1.2.3
Prefix Reserved
dotnet add package AspNet.KickStarter.AddIn.OpenTelemetry --version 1.2.3
NuGet\Install-Package AspNet.KickStarter.AddIn.OpenTelemetry -Version 1.2.3
<PackageReference Include="AspNet.KickStarter.AddIn.OpenTelemetry" Version="1.2.3" />
paket add AspNet.KickStarter.AddIn.OpenTelemetry --version 1.2.3
#r "nuget: AspNet.KickStarter.AddIn.OpenTelemetry, 1.2.3"
// Install AspNet.KickStarter.AddIn.OpenTelemetry as a Cake Addin #addin nuget:?package=AspNet.KickStarter.AddIn.OpenTelemetry&version=1.2.3 // Install AspNet.KickStarter.AddIn.OpenTelemetry as a Cake Tool #tool nuget:?package=AspNet.KickStarter.AddIn.OpenTelemetry&version=1.2.3
AspNet.KickStarter.AddIn.OpenTelemetry
This library provides an extension that configures OpenTelemetry
for the application.
Sample Usage
Program.cs
await new ApiBuilder()
.WithOpenTelemetry()
.Build(args)
.RunAsync();
Extended Usage
Program.cs
await new ApiBuilder()
.WithOpenTelemetry(
prometheusPort: 8081,
configureTraceBuilder: builder => {...}
configureMetricsBuilder: builder => {...}
configureLoggerOptions: options => {...})
.Build(args)
.RunAsync();
MyService.cs
public MyService(IMeterFactory meterFactory, ITraceActivity traceActivity)
{
var meter = meterFactory.CreateAssemblyMeter();
_traceActivity = traceActivity;
var subjectName = nameof(MyService).ToLower();
_count = meter.CreateCounter<long>($"{meter.Name.ToLower()}.{subjectName}.process.count", description: "The number of things processed.");
_duration = meter.CreateHistogram<double>($"{meter.Name.ToLower()}.{subjectName}.process.duration", description: "Time taken to process a thing.", unit: "ms");
}
public Process(Thing thing)
{
using var trace = _traceActivity.StartActivity("Thing Processing");
_count.Add(1);
var stopwatch = Stopwatch.StartNew();
...
_duration.Record(stopwatch.ElapsedMilliseconds);
}
This will instrument the application for metrics and traces to be sent to a collector at the endpoint supplied in the OTEL_EXPORTER_OTLP_ENDPOINT
environment variable.
Optionally it can run a listener on a separate port for Prometheus
scraping.
A full example can be seen in the AspNet.KickStarter.Demo.DockerCompose project where the information is available in the Aspire dashboard as well as Grafana.
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. |
-
net8.0
- AspNet.KickStarter.Core (>= 1.2.3)
- AspNet.KickStarter.Tracing (>= 1.2.3)
- OpenTelemetry.Exporter.Console (>= 1.8.1)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.8.1)
- OpenTelemetry.Exporter.Prometheus.HttpListener (>= 1.9.0-alpha.2)
- OpenTelemetry.Extensions.Hosting (>= 1.8.1)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.8.1)
- OpenTelemetry.Instrumentation.Http (>= 1.8.1)
- OpenTelemetry.Instrumentation.Process (>= 0.5.0-beta.5)
- OpenTelemetry.Instrumentation.Runtime (>= 1.8.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AspNet.KickStarter.AddIn.OpenTelemetry:
Package | Downloads |
---|---|
AspNet.KickStarter
This simplifies the bootstrapping code to run a minimal API with optional AddIn support for Serilog, FluentValidation, OpenTelemetry and Swagger. |
GitHub repositories
This package is not used by any popular GitHub repositories.