Andy.Telemetry
2026.9.27-rc.6
dotnet add package Andy.Telemetry --version 2026.9.27-rc.6
NuGet\Install-Package Andy.Telemetry -Version 2026.9.27-rc.6
<PackageReference Include="Andy.Telemetry" Version="2026.9.27-rc.6" />
<PackageVersion Include="Andy.Telemetry" Version="2026.9.27-rc.6" />
<PackageReference Include="Andy.Telemetry" />
paket add Andy.Telemetry --version 2026.9.27-rc.6
#r "nuget: Andy.Telemetry, 2026.9.27-rc.6"
#:package Andy.Telemetry@2026.9.27-rc.6
#addin nuget:?package=Andy.Telemetry&version=2026.9.27-rc.6&prerelease
#tool nuget:?package=Andy.Telemetry&version=2026.9.27-rc.6&prerelease
Andy.Telemetry
Shared OpenTelemetry + Prometheus conventions for the Andy ecosystem.
Andy.Telemetry is a thin layer on top of OpenTelemetry — it does not replace or wrap the OTel API. Services keep using ActivitySource / Meter directly; this package codifies the wiring and conventions so dashboards stay consistent across services.
What you get
AddAndyTelemetry(configuration, configure)— one-line registration of OTel tracing + metrics, OTLP export, Prometheus scraping, runtime and HttpClient instrumentation, and a Conductor-compatible trace propagator.MapAndyTelemetry()— maps/metrics(Prometheus scrape endpoint) when enabled.ConductorHeaderPropagator— extracts and injects Conductor'sX-Trace-ID/X-Span-IDheaders so spans emitted inside the service nest under Conductor's proxy traces.AndyTelemetryAttributes— canonical attribute names (agent.id,tenant.id, etc.) to keep tag naming consistent.
Usage
// Program.cs
builder.Services.AddAndyTelemetry(builder.Configuration, o =>
{
o.ServiceName = "andy-auth";
o.OtlpEndpoint = builder.Configuration["AndyTelemetry:OtlpEndpoint"];
o.ActivitySources.Add("Andy.Auth");
o.Meters.Add("Andy.Auth");
// Leave EnableAspNetCoreInstrumentation = false when behind Conductor's UnifiedProxy.
});
// ...
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.MapAndyTelemetry(); // exposes /metrics
Why not auto-wire AspNet HTTP metrics?
When a service runs behind Conductor, Conductor's UnifiedProxy already emits request-count and latency histograms per service. Re-emitting from inside the service would double-count. Leave EnableAspNetCoreInstrumentation = false in Conductor-embedded mode; enable it for standalone or docker-compose deploys where no upstream proxy is observing.
Trace propagation
Conductor uses two custom headers (X-Trace-ID and X-Span-ID, both UUIDs) instead of W3C traceparent. ConductorHeaderPropagator handles both extraction (inbound) and injection (outbound HttpClient calls), so child spans nest under the Conductor root span in the OTLP trace tree.
Versioning
Targets net8.0. Depends on OpenTelemetry.* 1.9.0 (and OpenTelemetry.Exporter.Prometheus.AspNetCore 1.9.0-beta.2 — still beta upstream).
License
Apache 2.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.17.0)
- OpenTelemetry.Exporter.Prometheus.AspNetCore (>= 1.17.0-beta.1)
- OpenTelemetry.Extensions.Hosting (>= 1.17.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.17.0)
- OpenTelemetry.Instrumentation.Http (>= 1.17.0)
- OpenTelemetry.Instrumentation.Runtime (>= 1.17.0)
- OpenTelemetry.Resources.Host (>= 1.17.0-beta.1)
- OpenTelemetry.Resources.Process (>= 1.17.0-rc.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.9.27-rc.6 | 34 | 9/27/2026 |
| 2026.9.7-rc.4 | 69 | 9/7/2026 |
| 2026.8.8-rc.2 | 82 | 8/8/2026 |