axonpush
.NET SDK

OpenTelemetry

A plain BaseExporter<Activity> for any .NET OpenTelemetry workload, no Semantic Kernel required.

AxonPush.Otel is a plain BaseExporter<Activity>. If your application already produces OpenTelemetry spans, this forwards them to axonpush and nothing about your instrumentation changes.

For tracing GenAI model calls, the recommended path is now OpenTelemetry-native telemetry, which emits standard gen_ai.* spans over OTLP. This exporter (which ships spans as proprietary app.span events) still works and is supported, but is superseded for new code.

Install

dotnet add package AxonPush.Otel

Wire it up

using OpenTelemetry;
using OpenTelemetry.Trace;
using AxonPush.Otel;

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource("MyApp")
    .AddAxonPushExporter(
        client => { client.ApiKey = "ak_..."; client.TenantId = "..."; },
        exporter => { exporter.ChannelId = "..."; })
    .Build();

AddAxonPushExporter wraps the exporter in a BatchActivityExportProcessor with defaults that suit most services. Because it is an ordinary exporter, it composes with whatever else you already export to, adding axonpush does not mean removing your existing backend.

Failures stay inside the exporter

With fail-open on (the default), Export returns ExportResult.Success even when individual spans could not be delivered, so the OpenTelemetry SDK never propagates a delivery failure into your application code. Set AXONPUSH_FAIL_OPEN=false if you would rather see them.

Configuration

Every option in the SDK overview applies here. The two that matter most for an exporter:

  • AXONPUSH_BASE_URL, point at your own deployment when self-hosting.
  • AXONPUSH_ENVIRONMENT, stamped on every span, so dev traffic filters out.