Поделиться через


Встроенные действия в .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: Чтобы избежать утечки секретов, значение редактируется по умолчанию: весь запрос заменяется символом *, а сведения о пользователе & фрагмент удаляются. Дополнительные сведения и варианты отказа см. вдокументации по критическим изменениям URI.

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.

Предупреждение

Это экспериментальное действие. Она может быть изменена или удалена в будущей версии.

Атрибуты (теги)

Атрибут Тип Описание Примеры Присутствие
error.type string Причина сбоя подключения: одна из ошибок http-запроса в snake_case или полный тип исключения. System.OperationCanceledException; name_resolution_error; secure_connection_error Если попытка подключения завершается ошибкой.

Настройка 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-подключения, приведет к успешному HTTP-подключению, и это подключение выбирается запросом на обслуживание, инструментирование добавляет ActivityLink в HTTP-запрос клиента действие, указывающее на действие установки подключения HTTP 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. Когда действие подключения сокета передается вместе с действием настройки HTTP-подключения , подключение сокета становится дочерним настройки HTTP-подключения.

Наличие имя 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 Когда информация о протоколе доступна.