Skip to content
Supported Components

Supported Components

This page lists the libraries and frameworks that the SkyAPM .NET agent can auto-instrument, what each one captures, and whether it is enabled by default or must be opted in. SkyAPM-dotnet is the C#/.NET auto-instrumentation agent for Apache SkyWalking; it reports to the SkyWalking OAP over gRPC using the sw8 / v8 protocol only.

For installation and wiring details, see the plugins guide and Configuration.

How instrumentation is enabled

The agent ships a set of diagnostic plugins. Some are registered automatically for every instrumented host; others are opt-in and must be enabled through the AddSkyAPM setup lambda.

  • On by default — registered as soon as the agent is active on a host. For ASP.NET Core, activation is zero-code via ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyApm.Agent.AspNetCore. The agent no-ops if SkyWalking:ServiceName is empty or SkyWalking:Enable is false.
  • Opt-in — enabled by calling the matching extension method inside the AddSkyAPM lambda:
services.AddSkyAPM(ext => ext
    .AddCap()
    .AddMongoDB()
    .AddSmartSql()
    .AddFreeSql(fsql)                       // requires your IFreeSql instance
    .AddFreeRedis(redisClient)              // requires your RedisClient instance
    .AddMasstransit());

Default (on by default)

These plugins are registered automatically by the agent host and require no extra code.

ComponentInstrumentsUpstream project
ASP.NET CoreInbound HTTP entry spans; captures cookies/headers/body per config and honors IgnorePaths. Added by the ASP.NET Core host (AddAspNetCoreHosting).dotnet/aspnetcore
HttpClientOutbound HTTP exit spans with sw8 header propagation (HttpClient / IHttpClientFactory).dotnet/runtime
ADO.NET SqlClientDatabase exit spans for System.Data.SqlClient and Microsoft.Data.SqlClient. Includes peer formatters (SkyApm.PeerFormatters.SqlClient, SkyApm.PeerFormatters.MySqlConnector).System.Data.SqlClient, Microsoft.Data.SqlClient
gRPC serverInbound gRPC entry spans for Grpc.AspNetCore / Grpc.Core (AddGrpc).grpc/grpc-dotnet
gRPC clientOutbound gRPC exit spans for Grpc.Net.Client (AddGrpcClient).grpc/grpc-dotnet
EntityFrameworkCoreEF Core database spans (AddEntityFrameworkCore).dotnet/efcore
  ↳ Pomelo MySQL providerEF Core spans for Pomelo.EntityFrameworkCore.MySql.PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
  ↳ Npgsql / PostgreSQL providerEF Core spans for Npgsql.EntityFrameworkCore.PostgreSQL.npgsql/Npgsql.EntityFrameworkCore.PostgreSQL
  ↳ Sqlite providerEF Core spans for the SQLite provider.dotnet/efcore
Microsoft.Extensions.LoggingShips Microsoft.Extensions.Logging records to the SkyWalking OAP with trace context (AddMSLogging).dotnet/runtime

Opt-in

Enable these by calling the corresponding method in the AddSkyAPM lambda.

ComponentSetup callInstrumentsUpstream project
CAPext.AddCap()Message-bus spans with cross-message sw8 propagation.dotnetcore/CAP
MassTransitext.AddMasstransit()Message-bus spans with cross-message sw8 propagation. Also ships its own [assembly:HostingStartup]: adding the package and listing it in ASPNETCORE_HOSTINGSTARTUPASSEMBLIES auto-wires it, switches Activity to W3C id format, and listens on the MassTransit ActivitySource.MassTransit/MassTransit
MongoDBext.AddMongoDB()MongoDB.Driver command spans.mongodb/mongo-csharp-driver
SmartSqlext.AddSmartSql()ORM SQL spans.dotnetcore/SmartSql
FreeSqlext.AddFreeSql(fsql) — requires your IFreeSql instanceORM SQL spans.dotnetcore/FreeSql
FreeRedisext.AddFreeRedis(redisClient, includeAuth: false) — requires your RedisClient instanceRedis command spans.2881099/FreeRedis

Notes

  • Classic ASP.NET (System.Web) is not instrumented. There is no dedicated plugin for the classic, non-Core ASP.NET pipeline; only ASP.NET Core is supported for inbound HTTP.
  • Protocol. The agent supports the SkyWalking sw8 / v8 protocol only. It reports to the OAP gRPC endpoint on port 11800 (the query/UI ports 12800/8080 are not used by the agent).
  • Configuration. Plugin behavior (sampling, ignored paths, captured headers/body, transport servers, and so on) is driven by skyapm.json and the other configuration sources. See Configuration for the full reference.