可用的自动配置
OpenTelemetry .NET 自动配置支持各种库。
自动配置
所有自动配置在默认情况下对所有信号类型(跟踪、指标和日志)都已启用。
您可以通过将 OTEL_DOTNET_AUTO_{SIGNAL}_INSTRUMENTATION_ENABLED 环境变量设置为 false 来为特定信号类型禁用所有自动配置。
对于更细粒度的方法,您可以通过将 OTEL_DOTNET_AUTO_{SIGNAL}_{0}_INSTRUMENTATION_ENABLED 环境变量设置为 false 来为给定信号类型禁用特定自动配置,其中 {SIGNAL} 是信号类型,例如 TRACES,而 {0} 是自动配置的区分大小写的名称。
| 环境变量 | 描述 | 默认值 | 状态 |
|---|---|---|---|
OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | 启用所有自动配置。 | true | 实验性 |
OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED | 启用所有跟踪自动配置。覆盖 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
OTEL_DOTNET_AUTO_TRACES_{0}_INSTRUMENTATION_ENABLED | 用于启用特定跟踪自动配置的配置模式,其中 {0} 是您要启用的自动配置的大写 ID。覆盖 OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED | 禁用所有指标自动配置。覆盖 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
OTEL_DOTNET_AUTO_METRICS_{0}_INSTRUMENTATION_ENABLED | 用于启用特定指标自动配置的配置模式,其中 {0} 是您要启用的自动配置的大写 ID。覆盖 OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED | 禁用所有日志自动配置。覆盖 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
OTEL_DOTNET_AUTO_LOGS_{0}_INSTRUMENTATION_ENABLED | 用于启用特定日志自动配置的配置模式,其中 {0} 是您要启用的自动配置的大写 ID。覆盖 OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED。 | 从 OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED 的当前值继承 | 实验性 |
跟踪自动配置
状态:混合。跟踪是稳定的,但由于缺乏稳定的语义约定,特定的自动配置库处于实验性状态。
| ID | 已自动配置的库 | 支持的版本 | 自动配置类型 | 状态 |
|---|---|---|---|---|
ASPNET | ASP.NET (.NET Framework) MVC / WebApi [1] .NET 不支持 | * [2] | 源代码与字节码 | 实验性 |
ASPNETCORE | ASP.NET Core .NET Framework 不支持 | * | 源代码 | 实验性 |
AZURE | Azure SDK | [3] | 源代码 | 实验性 |
ELASTICSEARCH | Elastic.Clients.Elasticsearch | * [4] | 源代码 | 实验性 |
ELASTICTRANSPORT | Elastic.Transport | ≥0.4.16 | 源代码 | 实验性 |
ENTITYFRAMEWORKCORE | Microsoft.EntityFrameworkCore .NET Framework 不支持 | ≥6.0.12 | 源代码 | 实验性 |
GRAPHQL | GraphQL .NET Framework 不支持 | ≥7.5.0 | 源代码 | 实验性 |
GRPCNETCLIENT | Grpc.Net.Client | ≥2.52.0 & < 3.0.0 | 源代码 | 实验性 |
HTTPCLIENT | System.Net.Http.HttpClient 和 System.Net.HttpWebRequest | * | 源代码 | 实验性 |
KAFKA | Confluent.Kafka | ≥1.4.0 & < 3.0.0 [5] | 字节码 | 实验性 |
MASSTRANSIT | MassTransit .NET Framework 不支持 | ≥8.0.0 | 源代码 | 实验性 |
MONGODB | MongoDB.Driver.Core / MongoDB.Driver | ≥2.7.0 < 3.5.0 | 字节码 | 实验性 |
MYSQLCONNECTOR | MySqlConnector | ≥2.0.0 | 源代码 | 实验性 |
MYSQLDATA | MySql.Data .NET Framework 不支持 | ≥8.1.0 | 源代码 | 实验性 |
NPGSQL | Npgsql | ≥6.0.0 | 源代码 | 实验性 |
NSERVICEBUS | NServiceBus | ≥8.0.0 & < 10.0.0 | 源代码与字节码 | 实验性 |
ORACLEMDA | Oracle.ManagedDataAccess.Core 和 Oracle.ManagedDataAccess ARM64 不支持 | ≥23.4.0 | 源代码 | 实验性 |
RABBITMQ | RabbitMQ.Client | ≥5.0.0 | 源代码或字节码 [6] | 实验性 |
QUARTZ | Quartz .NET Framework 4.7.1 及更早版本不支持 | ≥3.4.0 | 源代码 | 实验性 |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [7] 和 System.Data (随 .NET Framework 提供) | * [8] | 源代码 | 实验性 |
STACKEXCHANGEREDIS | StackExchange.Redis .NET Framework 不支持 | ≥2.6.122 & < 3.0.0 | 源代码与字节码 | 实验性 |
WCFCLIENT | WCF | * | 源代码与字节码 | 实验性 |
WCFSERVICE | WCF .NET 不支持。 | * | 源代码与字节码 | 实验性 |
[1]: 只支持集成管道模式。
[2]: ASP.NET (.NET Framework) MVC / WebApi 不支持 ARM64。
[3]: Azure. 前缀的包,发布于 2021 年 10 月 1 日之后。
[4]: Elastic.Clients.Elasticsearch 版本 ≥8.0.0 且 <8.10.0。版本 ≥8.10.0 由 Elastic.Transport 自动配置支持。
[5]: Confluent.Kafka 从版本 ≥1.8.2 开始支持 ARM64。
[6]: RabbitMq.Client 仅对 5.* 和 6.* 版本需要字节码自动配置,7.0.0+ 版本仅使用源代码自动配置。
[7]: System.Data.SqlClient 已弃用。
[8]: Microsoft.Data.SqlClient v3.* 由于 问题,在 .NET Framework 上不受支持。System.Data.SqlClient 支持版本 4.8.5 及以上。
指标自动配置
状态:混合。指标是稳定的,但由于缺乏稳定的语义约定,特定的自动配置处于实验性状态。
| ID | 已自动配置的库 | 文档 | 支持的版本 | 自动配置类型 | 状态 |
|---|---|---|---|---|---|
ASPNET | ASP.NET Framework [1] .NET 不支持 | ASP.NET 指标 | * | 源代码与字节码 | 实验性 |
ASPNETCORE | ASP.NET Core .NET Framework 不支持 | ASP.NET Core 指标 | * | 源代码 | 实验性 |
HTTPCLIENT | System.Net.Http.HttpClient 和 System.Net.HttpWebRequest | HttpClient 指标 | * | 源代码 | 实验性 |
NETRUNTIME | OpenTelemetry.Instrumentation.Runtime | 运行时指标 | * | 源代码 | 实验性 |
NPGSQL | Npgsql .NET Framework 不支持 | Npgsql 指标 | ≥6.0.0 | 源代码 | 实验性 |
NSERVICEBUS | NServiceBus | NServiceBus 指标 | ≥8.0.0 & < 10.0.0 | 源代码与字节码 | 实验性 |
PROCESS | OpenTelemetry.Instrumentation.Process | 进程指标 | * | 源代码 | 实验性 |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [2] 和 System.Data (随 .NET Framework 提供) | SqlClient 指标 | * [3] | 源代码 | 实验性 |
[1]: 仅当 AspNet 跟踪自动配置也已启用时,才会生成 ASP.NET 指标。
[2]: System.Data.SqlClient 已弃用。
[3]: Microsoft.Data.SqlClient v3.* 由于 问题,在 .NET Framework 上不受支持。System.Data.SqlClient 支持版本 4.8.5 及以上。
日志自动配置
状态:实验性。
| ID | 已自动配置的库 | 支持的版本 | 自动配置类型 | 状态 |
|---|---|---|---|---|
ILOGGER | Microsoft.Extensions.Logging .NET Framework 不支持 | ≥8.0.0 | 字节码或源代码 [1] | 实验性 |
LOG4NET | log4net | ≥2.0.13 && < 4.0.0 | 字节码 | 实验性 |
[1]: 对于 ASP.NET Core 应用程序,可以通过设置 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 环境变量为 OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper 来启用 LoggingBuilder 自动配置,而无需使用 .NET CLR Profiler。
自动配置选项
| 环境变量 | 描述 | 默认值 | 状态 |
|---|---|---|---|
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXT | Entity Framework Core 自动配置是否可以通过 db.statement 属性传递 SQL 语句。查询可能包含敏感信息。如果设置为 false,则仅为执行存储过程记录 db.statement。 | false | 实验性 |
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENT | GraphQL 自动配置是否可以通过 graphql.document 属性传递原始查询。查询可能包含敏感信息。 | false | 实验性 |
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXT | Oracle 客户端自动配置是否可以通过 db.statement 属性传递 SQL 语句。查询可能包含敏感信息。如果设置为 false,则仅为执行存储过程记录 db.statement。 | false | 实验性 |
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXT | SQL 客户端自动配置是否可以通过 db.statement 属性传递 SQL 语句。查询可能包含敏感信息。如果设置为 false,则仅为执行存储过程记录 db.statement。在 .NET Framework 上对 System.Data.SqlClient 不支持。 | false | 实验性 |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | 逗号分隔的 HTTP 标头名称列表。ASP.NET 自动配置将捕获所有配置的标头名称的 HTTP 请求标头值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | 逗号分隔的 HTTP 标头名称列表。ASP.NET 自动配置将捕获所有配置的标头名称的 HTTP 响应标头值。IIS Classic 模式下不支持。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | 逗号分隔的 HTTP 标头名称列表。ASP.NET Core 自动配置将捕获所有配置的标头名称的 HTTP 请求标头值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | 逗号分隔的 HTTP 标头名称列表。ASP.NET Core 自动配置将捕获所有配置的标头名称的 HTTP 响应标头值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_REQUEST_METADATA | 逗号分隔的 gRPC 元数据名称列表。Grpc.Net.Client 自动配置将捕获所有配置的元数据名称的 gRPC 请求元数据值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_RESPONSE_METADATA | 逗号分隔的 gRPC 元数据名称列表。Grpc.Net.Client 自动配置将捕获所有配置的元数据名称的 gRPC 响应元数据值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | 逗号分隔的 HTTP 标头名称列表。HTTP 客户端自动配置将捕获所有配置的标头名称的 HTTP 请求标头值。 | 实验性 | |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | 逗号分隔的 HTTP 标头名称列表。HTTP 客户端自动配置将捕获所有配置的标头名称的 HTTP 响应标头值。 | 实验性 | |
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION | ASP.NET Core 自动配置是否关闭对 url.query 属性值的 redaction。 | false | 实验性 |
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION | HTTP 客户端自动配置是否关闭对 url.full 属性值的 redaction。 | false | 实验性 |
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTION | ASP.NET 自动配置是否关闭对 url.query 属性值的 redaction。 | false | 实验性 |