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


Метрики 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
Имя Тип инструмента Единица (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 для схемы http443 для 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 для схемы http443 для 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 для схемы http443 для 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 для схемы http443 для https)
url.scheme струна Схема URI компонент, определяющий используемый протокол. http; https; ftp Всегда

Эта метрика подсчитывает количество запросов, которые считаются активными. Запросы активны в течение того же периода времени, который измеряется инструментом http.client.request.duration.

Доступно начиная с .NET 8