Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются встроенные сетевые метрики для 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 |
string |
Запрашиваемого имени. |
www.example.com; dot.net |
Всегда |
error.type |
string |
Хорошо известная строка ошибки или полное имя типа исключения, которое произошло. |
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_connectionshttp.client.connection.durationhttp.client.request.durationhttp.client.request.time_in_queuehttp.client.active_requests
Метрика: http.client.open_connections
| Имя | Тип инструмента | Единица (UCUM) | Описание |
|---|---|---|---|
http.client.open_connections |
UpDownCounter<T> | {connection} |
Количество исходящих HTTP-подключений, которые в настоящее время активны или неактивны на клиенте |
| Атрибут | Тип | Описание | Примеры | Присутствие |
|---|---|---|---|---|
http.connection.state |
string |
Состояние HTTP-подключения в пуле HTTP-подключений. |
active; idle |
Всегда |
network.protocol.version |
string |
Версия используемого протокола HTTP. |
1.1; 2 |
Всегда |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80; 8080; 443 |
Если не по умолчанию (80 для схемы http443 для https) |
network.peer.address |
string |
Одноранговый IP-адрес подключения сокета. | 10.5.3.2 |
Всегда |
url.scheme |
string |
Схема URI компонент, определяющий используемый протокол. |
http; https; ftp |
Всегда |
HttpClient, если настроено использование SocketsHttpHandlerпо умолчанию, поддерживает кэшированный пул сетевых подключений для отправки HTTP-сообщений. Эта метрика подсчитывает количество подключений в пуле. Активные подключения обрабатывают активные запросы. Активные подключения могут передавать данные или ожидать клиента или сервера. Неактивные подключения не обрабатывают запросы, но остаются открытыми, чтобы будущие запросы могли обрабатываться быстрее.
Доступно начиная с .NET 8.
Метрика: http.client.connection.duration
| Имя | Тип инструмента | Единица (UCUM) | Описание |
|---|---|---|---|
http.client.connection.duration |
Гистограмма | s |
Длительность успешно установленных исходящих HTTP-подключений. |
| Атрибут | Тип | Описание | Примеры | Присутствие |
|---|---|---|---|---|
network.protocol.version |
string |
Версия используемого протокола HTTP. |
1.1; 2 |
Всегда |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80; 8080; 443 |
Если не по умолчанию (80 для схемы http443 для https) |
network.peer.address |
string |
IP-адрес подключения сокета. | 10.5.3.2 |
Всегда |
url.scheme |
string |
Схема 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 |
Histogram<T> | s |
Длительность исходящих HTTP-запросов. |
| Атрибут | Тип | Описание | Примеры | Присутствие |
|---|---|---|---|---|
error.type |
string |
Причина сбоя запроса: одна из ошибок HTTP-запроса в snake_case или полный тип исключения или код состояния HTTP 4xx/5xxx. |
System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 |
Если запрос завершился сбоем. |
http.request.method |
string |
Метод HTTP-запроса. |
GET; POST; ; HEAD_OTHER [2] |
Всегда |
http.response.status_code |
int |
код состояния http-ответа. | 200 |
Если ответ получен. |
network.protocol.version |
string |
Версия используемого протокола HTTP. |
1.1; 2 |
Если ответ получен. |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80; 8080; 443 |
Зависит от версии .NET. [3] |
url.scheme |
string |
Схема 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 |
Histogram<T> | s |
Количество запросов времени, потраченных на очередь, ожидая доступного подключения. |
| Атрибут | Тип | Описание | Примеры | Присутствие |
|---|---|---|---|---|
http.request.method |
string |
Метод HTTP-запроса. |
GET; POST; HEAD |
Всегда |
network.protocol.version |
string |
Версия используемого протокола HTTP. |
1.1; 2 |
Всегда |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80; 8080; 443 |
Если не по умолчанию (80 для схемы http443 для https) |
url.scheme |
string |
Схема URI компонент, определяющий используемый протокол. |
http; https; ftp |
Всегда |
HttpClient, если настроено использование SocketsHttpHandlerпо умолчанию, отправляет HTTP-запросы с помощью пула сетевых подключений. Если все подключения заняты обработкой других запросов, новые запросы помещаются в очередь и ожидают, пока сетевое подключение не будет доступно для использования. Этот инструмент измеряет время, затрачивается на ожидание HTTP-запросов в этой очереди, прежде чем все, что отправляется по сети.
Доступно начиная с .NET 8.
Метрика: http.client.active_requests
| Имя | Тип инструмента | Единица (UCUM) | Описание |
|---|---|---|---|
http.client.active_requests |
UpDownCounter<T> | {request} |
Количество активных HTTP-запросов. |
| Атрибут | Тип | Описание | Примеры | Присутствие |
|---|---|---|---|---|
http.request.method |
string |
Метод HTTP-запроса. |
GET; POST; HEAD |
Всегда |
server.address |
string |
Идентификатор узла источника URI HTTP-запрос отправляется в. | example.com |
Всегда |
server.port |
int |
Идентификатор порта источника URI HTTP-запрос отправляется в. |
80; 8080; 443 |
Если не по умолчанию (80 для схемы http443 для https) |
url.scheme |
string |
Схема URI компонент, определяющий используемый протокол. |
http; https; ftp |
Всегда |
Эта метрика подсчитывает количество запросов, которые считаются активными. Запросы активны в течение того же периода времени, который измеряется инструментом http.client.request.duration.
Доступно начиная с .NET 8.