Доступні інструментування
Автоматичне інструментування 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 | Інструментована бібліотека | Підтримувані версії | Тип інструментування | Статус |
|---|---|---|---|---|
ADONET | ADO.NET [1] | [2] | bytecode | Експериментальний |
ASPNET | ASP.NET (.NET Framework) MVC / WebApi [3] Не підтримується в .NET | * [4] | source & bytecode | Експериментальний |
ASPNETCORE | ASP.NET Core Не підтримується в .NET Framework | * | source | Експериментальний |
AZURE | Azure SDK | [5] | source | Експериментальний |
ELASTICSEARCH | Elastic.Clients.Elasticsearch | * [6] | source | Експериментальний |
ELASTICTRANSPORT | Elastic.Transport | ≥0.4.16 | source | Експериментальний |
ENTITYFRAMEWORKCORE | Microsoft.EntityFrameworkCore Не підтримується .NET Framework | ≥6.0.12 | source | Експериментальний |
GRAPHQL | GraphQL Не підтримується .NET Framework | ≥7.5.0 | source | Експериментальний |
GRPCNETCLIENT | Grpc.Net.Client | ≥2.52.0 & < 3.0.0 | source | Експериментальний |
HTTPCLIENT | System.Net.Http.HttpClient and System.Net.HttpWebRequest | * | source | Експериментальний |
KAFKA | Confluent.Kafka | ≥1.4.0 & < 3.0.0 [7] | bytecode | Експериментальний |
MASSTRANSIT | MassTransit Не підтримується .NET Framework | ≥8.0.0 | source | Експериментальний |
MONGODB | MongoDB.Driver.Core / MongoDB.Driver | ≥2.7.0 | source or bytecode [8] | Експериментальний |
MYSQLCONNECTOR | MySqlConnector | ≥2.0.0 | source | Експериментальний |
MYSQLDATA | MySql.Data Не підтримується .NET Framework | ≥8.1.0 | source | Експериментальний |
NPGSQL | Npgsql | ≥6.0.0 | source & bytecode [14] | Експериментальний |
NSERVICEBUS | NServiceBus | ≥8.0.0 & < 10.0.0 | source & bytecode | Експериментальний |
ORACLEMDA | Oracle.ManagedDataAccess.Core and Oracle.ManagedDataAccess Не підтримується ARM64 | ≥23.4.0 | source | Експериментальний |
RABBITMQ | RabbitMQ.Client | ≥5.0.0 | source or bytecode [9] | Експериментальний |
QUARTZ | Quartz Quartz 4.x підтримується лише на .NET 10+; Quartz 3.x не підтримується на .NET Framework 4.7.1 або раніших | [15] | source | Експериментальний |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [10] and System.Data (shipped with .NET Framework) | * [11] | source & bytecode [12] | Експериментальний |
SQLITE | Microsoft.Data.Sqlite | ≥8.0.0 & < 12.0.0 | bytecode | Експериментальний |
STACKEXCHANGEREDIS | StackExchange.Redis | [13] | source & bytecode | Експериментальний |
WCFCLIENT | WCF | * | source & bytecode | Експериментальний |
WCFCORE | CoreWCF.Primitives Не підтримується .NET Framework | ≥1.8.0 | source | Експериментальний |
WCFSERVICE | WCF Не підтримується .NET. | * | source & bytecode | Експериментальний |
[1]: Загальне інструментування ADO.NET, що охоплює методи DbCommand. Воно охоплює лише реалізації перевизначених методів. Зазвичай багато реалізацій використовують ключове слово new у C#; такі випадки потребують конкретних реалізацій. Це інструментування не охоплює бібліотеки, що охоплюються конкретними інструментуваннями, такими як SQLCLIENT, NPGSQL, MYSQLDATA, MYSQLCONNECTOR, ORACLEMDA або SQLITE.
[2]: Підтримує System.Data.Common (версії від 4.0.0 до 12.0.0 включно), System.Data для .NET Framework (версії від 2.0.0 до 5.0.0 включно) та netstandard (версії від 2.0.0 до 3.0.0 включно).
[3]: Підтримується лише інтегрований режим конвеєра.
[4]: ASP.NET (.NET Framework) MVC / WebApi не підтримується на ARM64.
[5]: Пакети з префіксом Azure., випущені після 1 жовтня 2021 року.
[6]: Версія Elastic.Clients.Elasticsearch ≥8.0.0 і <8.10.0. Версія ≥8.10.0 підтримується інструментуванням Elastic.Transport.
[7]: Confluent.Kafka підтримується з версії ≥1.8.2 на ARM64 для Windows та Linux та ≥1.9.2 на macOS.
[8]: MongoDB.Driver потребує інструментування байт-коду лише для версій < 3.7.0; у версіях 3.7.0+ використовується лише інструментування вихідного коду.
[9]: RabbitMq.Client потребує інструментарію байт-коду лише для версій 5.* та 6.*, версії 7.0.0+ використовують лише інструментування вихідного коду.
[10]: System.Data.SqlClient є застарілим.
[11]: Microsoft.Data.SqlClient v3.* не підтримується на .NET Framework через проблему. System.Data.SqlClient підтримується починаючи з версії 4.8.5.
[12]: Інструментування байт-коду використовується лише для поширення контексту, налаштовується за допомогою OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION.
[13]: Підтримуються версії StackExchange.Redis ≥2.6.122 та <4.0.0 на .NET, та версії ≥2.6.122 та <3.0.0 на .NET Framework.
[14]: Інструментування байт-коду використовується лише для поширення контексту, налаштовується за допомогою OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATION.
[15]: Підтримуються версії Quartz ≥3.4.0 та <4.0.0, але підтримка Quartz 3.x застаріла. Версії ≥4.0.0 підтримуються лише на .NET 10+.
Інструментування метрик
Статус: Змішаний. Метрики стабільні, але окремі інструментування мають експериментальний статус через відсутність стабільної семантичної конвенції.
| ID | Інструментована бібліотека | Документація | Підтримувані версії | Тип інструментування | Статус |
|---|---|---|---|---|---|
ASPNET | ASP.NET Framework [1] Не підтримується в .NET | ASP.NET metrics | * | source & bytecode | Експериментальний |
ASPNETCORE | ASP.NET Core Не підтримується в .NET Framework | ASP.NET Core metrics | * | source | Експериментальний |
HTTPCLIENT | System.Net.Http.HttpClient and System.Net.HttpWebRequest | HttpClient metrics | * | source | Експериментальний |
NETRUNTIME | OpenTelemetry.Instrumentation.Runtime | Runtime metrics | * | source | Експериментальний |
NPGSQL | Npgsql Не підтримується в .NET Framework | Npgsql metrics | ≥6.0.0 | source | Експериментальний |
NSERVICEBUS | NServiceBus | NServiceBus metrics | ≥8.0.0 & < 10.0.0 | source & bytecode | Експериментальний |
PROCESS | OpenTelemetry.Instrumentation.Process | Process metrics | * | source | Експериментальний |
QUARTZ | Quartz Підтримується лише на .NET 10+ | Quartz metrics | ≥4.0.0 | source | Експериментальний |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [2] and System.Data (shipped with .NET Framework) | SqlClient metrics | * [3] | source | Експериментальний |
[1]: Метрики ASP.NET генеруються лише якщо інструментування трейсів AspNet також увімкнено.
[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 && < 12.0.0 | bytecode or source [1] | Експериментальний |
LOG4NET | log4net [2] | ≥2.0.13 && < 4.0.0 | bytecode | Експериментальний |
NLOG | NLog [2] | ≥5.0.0 && < 7.0.0 | bytecode | Експериментальний |
[1]: Для ASP.NET Core застосунків, інструментування LoggingBuilder може бути увімкнено без використання .NET CLR Profiler, встановивши змінну середовища ASPNETCORE_HOSTINGSTARTUPASSEMBLIES в значення OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper.
[2]: Інструментування надає як контекст для інʼєкції трейсів та і місток для логів.
Опції інструментування
| Змінна середовища | Опис | Стандартне значення | Статус |
|---|---|---|---|
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXT | Чи може інструментування Entity Framework Core передавати SQL-запити через атрибут db.statement. Запити можуть містити конфіденційну інформацію. Якщо встановлено значення false, db.statement записується лише для виконання збережених процедур. | false | Експериментальний |
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENT | Чи може інструментування GraphQL передавати сирі запити через атрибут graphql.document. Запити можуть містити конфіденційну інформацію. | false | Експериментальний |
OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATION | Чи поширює інструментування Npgsql W3C traceparent до PostgreSQL через application_name для не-мультиплексованих команд і операцій COPY у Npgsql 10. [3] | false | Експериментальний |
OTEL_DOTNET_AUTO_ORACLEMDA_DATABASE_OPENTELEMETRY_TRACING | Чи вмикає інструментування Oracle Client трасування OpenTelemetry для бази даних і поширює контекст на сервер. [1] | true | Експериментальний |
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXT | Чи може інструментування Oracle Client передавати SQL-запити через атрибут db.statement. Запити можуть містити конфіденційну інформацію. Якщо встановлено значення false, db.statement записується лише для виконання збережених процедур. | false | Експериментальний |
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXT | Чи може інструментування SQL Client передавати SQL-запити через атрибут db.statement. Запити можуть містити конфіденційну інформацію. Якщо встановлено значення 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. | Експериментальний | |
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 Client буде захоплювати значення HTTP-заголовків запитів для всіх налаштованих імен заголовків. | Експериментальний | |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | Список імен HTTP-заголовків, розділених комами. Інструментування HTTP Client буде захоплювати значення HTTP-заголовків відповідей для всіх налаштованих імен заголовків. | Експериментальний | |
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION | Чи вимикає інструментування ASP.NET Core редагування значення атрибуту url.query. | false | Експериментальний |
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION | Чи вимикає інструментування HTTP Client редагування значення атрибуту url.full. | false | Експериментальний |
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTION | Чи вимикає інструментування ASP.NET редагування значення атрибуту url.query. | false | Експериментальний |
OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION | Лише .NET Framework. Чи вмикає інструментування SQLCLIENT поширення контексту до SQL Server. | false | Експериментальний |
OTEL_DOTNET_AUTO_SQLCLIENT_NETFX_ILREWRITE_ENABLED | [2] | false | Експериментальний |
[1]: Ця функція підтримується лише пакунками 23.26.200 та новішими. Також вимагає сервера Oracle AI Database 26ai.
[2]: Увімкнення перекомпіляції IL для SqlCommand у .NET Framework, щоб забезпечити наявність CommandText для інструментування SqlClient, що є необхідним для заповнення полів db.query.text та db.query.summary. Раніше CommandText був доступний лише для збережених процедур. Якщо це налаштування ввімкнено, воно також доступне для необроблених запитів. Це змінює поведінку подій, що генеруються SqlEventSource, що може вплинути на інші частини програми, якщо використовується цей механізм.
[3]: Приймач PostgreSQL з OpenTelemetry Collector Contrib надає це значення як postgresql.application_name у своїй події db.server.query_sample. Збір вибірок запитів вимкнено стандартно і вимагає pg_monitor; дивіться закріплену конфігурацію приймача. Поширення виконує SET application_name через синхронний шлях ExecuteInternalCommand Npgsql перед кожною операцією з трасуванням. Npgsql скидає цю команду та очікує на її відповіді CommandComplete і ReadyForQuery, тому поширення додає один обмін із базою даних на кожну операцію з трасуванням. Воно не змінює, не додає префіксів і не обʼєднує SQL застосунку. Коли Npgsql завершує дію користувача, поки він усе ще володіє зʼєднувачем, інструментування виконує RESET application_name через той самий шлях. Це додає один обмін для очищення на кожну поширену операцію та скидає значення до стандартного для сесії, налаштованого під час відкриття зʼєднання, до того як керування повертається тому, хто викликає, або зʼєднувач можна використати для іншої операції. PostgreSQL RESET не відновлює значення, присвоєне пізніше через SET; тому ввімкнення цієї опції може перезаписати зміни application_name, зроблені кодом застосунку під час виконання. Дивіться життєвий цикл EndUserAction Npgsql. Ці внутрішні команди використовують потік Simple Query у PostgreSQL, який відкидає попередній безіменний оператор і портал; явно підготовлені та автоматично підготовлені оператори Npgsql є іменованими і залишаються повʼязаними з фізичним зʼєднанням. Дивіться правила протоколу розширених запитів PostgreSQL та документацію щодо підготовлених операторів Npgsql. Оскільки SET і RESET є справжніми операторами PostgreSQL, спостерігач, що виконує опитування під час їх короткого виконання, теоретично може їх зафіксувати. Очищення відкладається, поки транзакція перебуває в стані помилки, щоб ROLLBACK міг виконатися першим, а потім виконується, коли дія відновлення успішно завершується. Операції COPY у Npgsql 10+ охоплюються через його життєвий цикл TraceCopyStart. Мультиплексування не підтримується: application_name є станом фізичної сесії, тоді як Npgsql може записувати кілька логічних команд до одного зʼєднувача в одному циклі мультиплексування. Інструментування безпечно пропускає поширення та записує одне попередження, коли виявляє мультиплексований зʼєднувач.
Зворотний зв’язок
Чи була ця сторінка корисною?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!