Метрики System.Net
В этой статье описываются встроенные сетевые метрики для System.Net, созданных с помощью API System.Diagnostics.Metrics. Список метрик на основе альтернативного API событий EventCounters см. в известных событиях в .NET.
Кончик
Дополнительные сведения о сборе, обогащении и тестировании метрик System.Net см. в сетевых метрик в .NET.
System.Net.NameResolution
System.Net.NameResolution
Метрики сообщают о разрешении DNS-имен из Dns:
Метрика: dns.lookup.duration
Имя | Тип инструмента | Единица | Описание |
---|---|---|---|
dns.lookup.duration |
Гистограмма | s |
Измеряет время, затраченное на поиск DNS. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
dns.question.name |
струна | Запрашиваемого имени. |
www.example.com ; dot.net |
Всегда |
error.type |
струна | Хорошо известная строка ошибки или полное имя типа исключения, которое произошло. |
host_not_found ; System.Net.Sockets.SocketException |
Если произошла ошибка |
Эта метрика измеряет время, необходимое для выполнения DNS-запросов. Эти запросы могут выполняться путем вызова методов Dns или косвенно в API более высокого уровня для таких типов, как HttpClient.
Большинство ошибок при поиске DNS вызывают SocketException. Чтобы лучше диамбигировать распространенные случаи ошибок, исключения сокетов с определенными SocketErrorCode получают явные имена ошибок в error.type
:
SocketErrorCode | error.type |
---|---|
HostNotFound | host_not_found |
TryAgain | try_again |
AddressFamilyNotSupported | address_family_not_supported |
NoRecovery | no_recovery |
Исключения сокетов с любым другим значением SocketError
сообщаются как System.Net.Sockets.SocketException
.
При использовании OpenTelemetry контейнеры по умолчанию для этой метрики имеют значение [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ].
Доступно начиная с .NET 8
System.Net.Http
Отчет о HTTP-запросе и подключении System.Net.Http
метрик из System.Net.Http:
http.client.open_connections
http.client.connection.duration
http.client.request.duration
http.client.request.time_in_queue
http.client.active_requests
Метрика: http.client.open_connections
Имя | Тип инструмента | Единица (UCUM) | Описание |
---|---|---|---|
http.client.open_connections |
UpDownCounter | {connection} |
Количество исходящих HTTP-подключений, которые в настоящее время активны или неактивны на клиенте |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.connection.state |
струна | Состояние HTTP-подключения в пуле HTTP-подключений. |
active ; idle |
Всегда |
network.protocol.version |
струна | Версия используемого протокола HTTP. |
1.1 ; 2 |
Всегда |
server.address |
струна | Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int | Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Если не по умолчанию (80 для схемы http 443 для https ) |
network.peer.address |
струна | Одноранговый IP-адрес подключения сокета. | 10.5.3.2 |
Всегда |
url.scheme |
струна | Схема URI компонент, определяющий используемый протокол. |
http ; https ; ftp |
Всегда |
HttpClient, если настроено использование SocketsHttpHandlerпо умолчанию, поддерживает кэшированный пул сетевых подключений для отправки HTTP-сообщений. Эта метрика подсчитывает количество подключений в пуле. Активные подключения обрабатывают активные запросы. Активные подключения могут передавать данные или ожидать клиента или сервера. Неактивные подключения не обрабатывают запросы, но остаются открытыми, чтобы будущие запросы могли обрабатываться быстрее.
Доступно начиная с .NET 8
Метрика: http.client.connection.duration
Имя | Тип инструмента | Единица (UCUM) | Описание |
---|---|---|---|
http.client.connection.duration |
Гистограмма | s |
Длительность успешно установленных исходящих HTTP-подключений. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.protocol.version |
струна | Версия используемого протокола HTTP. |
1.1 ; 2 |
Всегда |
server.address |
струна | Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int | Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Если не по умолчанию (80 для схемы http 443 для https ) |
network.peer.address |
струна | IP-адрес подключения сокета. | 10.5.3.2 |
Всегда |
url.scheme |
струна | Схема URI компонент, определяющий используемый протокол. |
http ; https ; ftp |
Всегда |
Эта метрика фиксируется только при настройке HttpClient использования SocketsHttpHandlerпо умолчанию.
Так как эта метрика отслеживает длительность подключения, и в идеале http-подключения используются для нескольких запросов, контейнеры должны быть длиннее, чем те, которые используются для длительности запроса. Например, использование [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] предоставляет верхний контейнер 5 мин.
Доступно начиная с .NET 8
Метрика: http.client.request.duration
Имя | Тип инструмента | Единица (UCUM) | Описание |
---|---|---|---|
http.client.request.duration |
Гистограмма | s |
Длительность исходящих HTTP-запросов. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
струна | Причина сбоя запроса: одна из ошибок HTTP-запроса в snake_case или полный тип исключения или код состояния HTTP 4xx/5xxx. |
System.Threading.Tasks.TaskCanceledException ; name_resolution_error ; secure_connection_error ; 404 |
Если запрос завершился сбоем. |
http.request.method |
струна | Метод HTTP-запроса. |
GET ; POST ; HEAD ; _OTHER [2] |
Всегда |
http.response.status_code |
int | код состояния http-ответа. | 200 |
Если ответ получен. |
network.protocol.version |
струна | Версия используемого протокола HTTP. |
1.1 ; 2 |
Если ответ получен. |
server.address |
струна | Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int | Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Зависит от версии .NET. [3] |
url.scheme |
струна | Схема URI компонент, определяющий используемый протокол. |
http ; https ; ftp |
Всегда |
[1] error.type
: Если запрос завершился сбоем, значение задается одним из следующих значений:
- Имя исключения с типом, например TaskCanceledException.
- Код состояния, указывающий на ошибку клиента или сервера, например
500
. - Если HttpRequestException произошло с HttpRequestError, отличной от
Unknown
, значение перечисления в случае змеи, например,name_resolution_error
.
[2] http.request.method
:http.request.method
:** Значение содержит имя метода, если метод является одним из известных методов, перечисленных в RFC9110; в противном случае значение равно _OTHER
. Имена предоставленных пользователем методов будут сопоставлены с известными именами без учета регистра. Например, если пользователь предоставляет имя GeT
, он будет сопоставлен с GET
.
[3] server.port
: Наличие значения зависит от версии:
-
.NET 8: присутствует, если не задано значение по умолчанию (
80
для схемыhttp
,443
дляhttps
) - .NET 9+: всегда присутствует
Длительность http-запроса клиента измеряет время выполнения запроса базового обработчика клиента. Завершение запроса включает время чтения заголовков ответов из сетевого потока. Это не включает время, затраченное на чтение текста ответа.
При использовании OpenTelemetry контейнеры по умолчанию для этой метрики имеют значение [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ].
Доступно начиная с .NET 8
Метрика: http.client.request.time_in_queue
Имя | Тип инструмента | Единица (UCUM) | Описание |
---|---|---|---|
http.client.request.time_in_queue |
Гистограмма | s |
Количество запросов времени, потраченных на очередь, ожидая доступного подключения. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.request.method |
струна | Метод HTTP-запроса. |
GET ; POST ; HEAD |
Всегда |
network.protocol.version |
струна | Версия используемого протокола HTTP. |
1.1 ; 2 |
Всегда |
server.address |
струна | Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int | Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Если не по умолчанию (80 для схемы http 443 для https ) |
url.scheme |
струна | Схема URI компонент, определяющий используемый протокол. |
http ; https ; ftp |
Всегда |
HttpClient, если настроено использование SocketsHttpHandlerпо умолчанию, отправляет HTTP-запросы с помощью пула сетевых подключений. Если все подключения заняты обработкой других запросов, новые запросы помещаются в очередь и ожидают, пока сетевое подключение не будет доступно для использования. Этот инструмент измеряет время, затрачивается на ожидание HTTP-запросов в этой очереди, прежде чем все, что отправляется по сети.
Доступно начиная с .NET 8
Метрика: http.client.active_requests
Имя | Тип инструмента | Единица (UCUM) | Описание |
---|---|---|---|
http.client.active_requests |
UpDownCounter | {request} |
Количество активных HTTP-запросов. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.request.method |
струна | Метод HTTP-запроса. |
GET ; POST ; HEAD |
Всегда |
server.address |
струна | Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int | Идентификатор порта источника URI HTTP-запрос отправляется в. |
80 ; 8080 ; 443 |
Если не по умолчанию (80 для схемы http 443 для https ) |
url.scheme |
струна | Схема URI компонент, определяющий используемый протокол. |
http ; https ; ftp |
Всегда |
Эта метрика подсчитывает количество запросов, которые считаются активными. Запросы активны в течение того же периода времени, который измеряется инструментом http.client.request.duration.
Доступно начиная с .NET 8