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 ifSkyWalking:ServiceNameis empty orSkyWalking:Enableisfalse. - Opt-in — enabled by calling the matching extension method inside the
AddSkyAPMlambda:
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.
| Component | Instruments | Upstream project |
|---|---|---|
| ASP.NET Core | Inbound HTTP entry spans; captures cookies/headers/body per config and honors IgnorePaths. Added by the ASP.NET Core host (AddAspNetCoreHosting). | dotnet/aspnetcore |
| HttpClient | Outbound HTTP exit spans with sw8 header propagation (HttpClient / IHttpClientFactory). | dotnet/runtime |
| ADO.NET SqlClient | Database 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 server | Inbound gRPC entry spans for Grpc.AspNetCore / Grpc.Core (AddGrpc). | grpc/grpc-dotnet |
| gRPC client | Outbound gRPC exit spans for Grpc.Net.Client (AddGrpcClient). | grpc/grpc-dotnet |
| EntityFrameworkCore | EF Core database spans (AddEntityFrameworkCore). | dotnet/efcore |
| ↳ Pomelo MySQL provider | EF Core spans for Pomelo.EntityFrameworkCore.MySql. | PomeloFoundation/Pomelo.EntityFrameworkCore.MySql |
| ↳ Npgsql / PostgreSQL provider | EF Core spans for Npgsql.EntityFrameworkCore.PostgreSQL. | npgsql/Npgsql.EntityFrameworkCore.PostgreSQL |
| ↳ Sqlite provider | EF Core spans for the SQLite provider. | dotnet/efcore |
| Microsoft.Extensions.Logging | Ships 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.
| Component | Setup call | Instruments | Upstream project |
|---|---|---|---|
| CAP | ext.AddCap() | Message-bus spans with cross-message sw8 propagation. | dotnetcore/CAP |
| MassTransit | ext.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 |
| MongoDB | ext.AddMongoDB() | MongoDB.Driver command spans. | mongodb/mongo-csharp-driver |
| SmartSql | ext.AddSmartSql() | ORM SQL spans. | dotnetcore/SmartSql |
| FreeSql | ext.AddFreeSql(fsql) — requires your IFreeSql instance | ORM SQL spans. | dotnetcore/FreeSql |
| FreeRedis | ext.AddFreeRedis(redisClient, includeAuth: false) — requires your RedisClient instance | Redis 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 ports12800/8080are not used by the agent). - Configuration. Plugin behavior (sampling, ignored paths, captured
headers/body, transport servers, and so on) is driven by
skyapm.jsonand the other configuration sources. See Configuration for the full reference.