Встроенные действия в .NET
Это ссылка на действия распределенной трассировки , создаваемых в собственном коде. Встроенные экземпляры ActivitySource NET.
действия System.Net
Кончик
Полное руководство по сбору и составлению отчетов System.Net
трассировок см. в статье Сетевые распределенные трассировки в.NET.
HTTP-запрос клиента
SocketsHttpHandler и HttpClientHandler сообщите о действии запроса http-клиента после рекомендаций, определенных в OpenTelemetry семантики клиента HTTP. В нем описывается HTTP-запрос, отправленный HttpClientперегрузки отправки во время интервала времени, который базовый обработчик завершает запрос. Завершение запроса включает время чтения заголовков ответов из сетевого потока. Это не включает время, затраченное на чтение текста ответа. SocketsHttpHandler могут повторить запросы, например при сбоях подключения или понижении версий HTTP. Повторные попытки не передаются как отдельные http-запрос клиента действия.
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | System.Net.Http |
System.Net.Http.HttpRequestOut |
{HTTP method} |
Заметка
Действие System.Net.Http.HttpRequestOut
фактически доступно в более ранних версиях .NET, однако его Status, DisplayNameи атрибуты (теги) заполняются только с .NET 9. В более ранних версиях пакет OpenTelemetry.Instrumentation.Http рекомендуется заполнить пробелы встроенного инструментирования.
Атрибуты (теги)
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.request.method |
string |
Метод HTTP-запроса. [1] |
GET ; POST ; HEAD ; _OTHER |
Всегда |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. |
example.com ; 10.1.2.80 |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Всегда |
url.full |
string |
Абсолютный URL-адрес, описывающий сетевой ресурс в соответствии с RFC3986 [2] | https://www.foo.bar/search?q=* |
Всегда |
error.type |
string |
Причина сбоя запроса: одна из ошибок HTTP-запроса в snake_case или полный тип исключения или код состояния HTTP 4xx/5xxx. |
System.OperationCanceledException ; name_resolution_error ; secure_connection_error ; 404 |
Если запрос завершился ошибкой. |
http.request.method_original |
string |
Исходный метод HTTP, отправленный клиентом в строке запроса. |
ACL ; foo |
Если http.request.method не является хорошо известным методом. |
http.response.status_code |
int |
код состояния http-ответа. | 200 |
Если ответ получен. |
network.protocol.version |
string |
Версия используемого протокола HTTP. |
1.1 ; 2 |
Если ответ получен. |
[1] http.request.method
: Значение содержит имя метода, если метод является одним из известных методов, перечисленных в RFC9110; в противном случае значение равно _OTHER
. Имена предоставленных пользователем методов сопоставляются с известными именами без учета регистра. Например, если пользователь предоставляет имя GeT
, он будет сопоставлен с GET
и http.request.method_original
не будет заполнен.
[2] url.full
: Чтобы избежать утечки секретов, значение редактируется по умолчанию: весь запрос заменяется символом *
, а сведения о пользователе & фрагмент удаляются. Дополнительные сведения и варианты отказа см. вдокументации по критическим изменениям
HTTP-запрос клиента: ожидание подключения (экспериментальный)
Это действие является дочерним элементом действия http-запроса клиента. Он представляет интервал времени, который соответствующий запрос ожидает доступного подключения в очереди запросов. Если бесплатное подключение доступно в пуле при выполнении запроса, то не ожидать создания действия подключения. Обратите внимание, что ожидание подключения не представляет фактическое создание подключения; с помощью действия настройки HTTP-подключения. SocketsHttpHandler могут повторить запросы, например при сбоях подключения или понижении версий HTTP. Повторные попытки не передаются как отдельные действия запроса клиента HTTP; однако каждая новая попытка подключения приведет к новому ожидать действия подключения в родительском действии запроса.
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | Experimental.System.Net.Http.Connections |
Experimental.System.Net.Http.Connections.WaitForConnection |
HTTP wait_for_connection {address}:{port} |
Кончик
Время, необходимое для получения подключения из пула, также сообщается метрикой http.client.request.time_in_queue
.
Предупреждение
Это экспериментальное действие. Она может быть изменена или удалена в будущей версии.
Атрибуты (теги)
Настройка HTTP-подключения (экспериментальная версия)
Это действие описывает создание HTTP-подключения. Как правило, это включает время, необходимое для разрешения DNS, установления подключения сокета и выполнения подтверждения TLS.
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | Experimental.System.Net.Http.Connections |
Experimental.System.Net.Http.Connections.ConnectionSetup |
HTTP connection_setup {address}:{port} |
Между http-запросом клиента
Заметка
Если настройка HTTP-подключения завершается ошибкой, она не будет связана с запросом http-клиента.
Предупреждение
Это экспериментальное действие. Она может быть изменена или удалена в будущей версии.
Атрибуты (теги)
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
string |
Причина сбоя подключения: одна из ошибок http-запроса в snake_case или полный тип исключения. |
System.Net.Sockets.SocketException ; name_resolution_error ; secure_connection_error |
Если попытка подключения завершается ошибкой. |
network.peer.address |
string |
Одноранговый IP-адрес подключения сокета. | 10.5.3.2 |
Если попытка подключения выполнена успешно. |
server.address |
string |
Идентификатор узла источника URI отправляется в исходный HTTP-запрос. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI отправляется в исходный HTTP-запрос. | Всегда | |
url.scheme |
string |
Схема URI компонент, определяющий используемый протокол. |
http ; https |
Всегда |
Поиск DNS (экспериментальный)
Это действие описывает запросы DNS, выполняемые с помощью вызовов Dns. Он соответствует управляемому вызову, а не физическим подстановке DNS, выполняемой базовым сопоставителям ОС. Когда действие поиска DNS сообщается вместе с действием настройки HTTP-подключения, подстановки DNS становится дочерним элементом настройки HTTP-подключения.
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | Experimental.System.Net.NameResolution |
Experimental.System.Net.NameResolution.DnsLookup |
DNS [reverse] lookup {question} |
Кончик
Длительность подстановки DNS также сообщается метрикой dns.lookup.duration
.
Предупреждение
Это экспериментальное действие. Она может быть изменена или удалена в будущей версии.
Атрибуты (теги)
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
string |
Код ошибки или имя исключения. [1] | host_not_found |
Если поиск завершается ошибкой. |
dns.answers |
string[] |
Список разрешенных IP-адресов (для подстановки DNS) или одного элемента, содержащего доменное имя (для обратного поиска). | ["10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"] |
Если подстановка выполнена успешно. |
dns.question.name |
string |
Доменное имя или IP-адрес, запрашиваемые. | example.com |
Всегда |
[1]: Значение — это SocketError DNS в snake_case (host_not_found
, try_again
, no_recovery
, address_family_not_supported
) или полное имя исключения.
Подключение сокета (экспериментальный)
Это действие описывает создание подключения Socket через Connect или ConnectAsync. Когда действие подключения сокета
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | Experimental.System.Net.Sockets |
Experimental.System.Net.Sockets.Connect |
socket connect {address}[:{port}] |
Предупреждение
Это экспериментальное действие. Она может быть изменена или удалена в будущей версии.
Атрибуты (теги)
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
string |
SocketError в snake_case. |
address_already_in_use ; connection_refused |
Если попытка подключения сокета завершается ошибкой. |
network.peer.address |
string |
Пиринговый адрес сетевого подключения — IP-адрес или имя сокета домена Unix. |
10.5.3.2 ; /tmp/my.sock |
Сокеты IP и UDS. |
network.peer.port |
int |
Номер однорангового порта IP-подключения. | 65123 |
СОкеты IP-адресов. |
network.transport |
string |
транспортный слой OSI или метод обмена данными между процессами. |
tcp ; udp ; unix |
Сокеты IP и UDS. |
network.type |
string |
сетевой слой OSI или эквивалентный не OSI. |
ipv4 ; ipv6 |
СОкеты IP-адресов. |
Подтверждение TLS (экспериментальное)
Это действие описывает подтверждение TLS-клиента или сервера, выполняемого с помощью методов проверки подлинности SslStream. Когда действие подтверждения TLS сообщается для проверки подлинности на стороне клиента вместе с действием настройки http-подключения, подтверждения TLS становится дочерним установки HTTP-подключения.
Наличие | имя ActivitySource | OperationName | DisplayName |
---|---|---|---|
.NET 9+ | Experimental.System.Net.Security |
Experimental.System.Net.Security.TlsHandshake |
TLS client handshake {host} -или- TLS server handshake |
Предупреждение
Это экспериментальное действие. Его можно изменить или удалить в будущих версиях.
Атрибуты (теги)
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
string |
Описывает класс ошибки, с которым закончилась операция. |
System.Net.Security.Authentication.AuthenticationException ; System.OperationCanceledException |
Если подтверждение завершается ошибкой. |
server.address |
string |
указание имени сервера (SNI) используется в сообщении Client Hello во время подтверждения TLS. | example.com |
При проверке подлинности в качестве клиента. |
tls.protocol.name |
string |
Нормализованное имя протокола строчных регистров, проанализированное из исходной строки согласованной версии протокола SSL/TLS |
ssl ; tls |
Когда информация о протоколе доступна. |
tls.protocol.version |
string |
Числовая часть версии, проанализированная из исходной строки согласованной версии протокола SSL/TLS |
1.2 ; 1.3 |
Когда информация о протоколе доступна. |