ASP.NET Основные метрики
В этой статье описываются встроенные метрики для ASP.NET Core, созданные с помощью System.Diagnostics.Metrics API. Список метрик на основе более старого API EventCounters см . здесь.
Совет
Дополнительные сведения о сборе, обогащении и тестировании ASP.NET основных метрик см. в разделе "Использование основных метрик ASP.NET Core".
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Hosting
Метрики сообщают высокоуровневую информацию о HTTP-запросах, полученных ASP.NET Core:
Метрика: http.server.request.duration
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
http.server.request.duration |
Гистограмма | s |
Измеряет длительность входящих HTTP-запросов. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.route |
строка | Соответствующий маршрут. | {controller}/{action}/{id?} |
Если он доступен. |
error.type |
строка | Описывает класс ошибки, с которым закончилась операция. | timeout ; name_resolution_error ; 500 |
Если запрос завершился ошибкой. |
http.request.method |
строка | Метод HTTP-запроса. | GET ; POST ; HEAD |
Всегда |
http.response.status_code |
INT | Код состояния HTTP-ответа. | 200 |
Если он был отправлен. |
network.protocol.version |
строка | Версия протокола, указанного в network.protocol.name . |
3.1.1 |
Всегда |
url.scheme |
строка | Компонент схемы URI, определяющий используемый протокол. | http ; https |
Всегда |
aspnetcore.request.is_unhandled |
Логический | Значение True, если запрос не был обработан конвейером приложения. | true |
Если запрос был необработанным. |
Время, используемое для обработки входящего HTTP-запроса, измеряемого на уровне размещения ASP.NET Core. Измерение времени начинается после того, как базовый веб-узел имеет следующие значения:
- Достаточно проанализировать заголовки HTTP-запроса в входящего сетевого потока, чтобы определить новый запрос.
- Инициализировал структуры данных контекста, такие как HttpContext.
Время заканчивается, когда:
- Конвейер обработчика ядра ASP.NET завершен.
- Все данные ответа отправлены.
- Структуры данных контекста для запроса удаляются.
При использовании 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.0.
Метрика: http.server.active_requests
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
http.server.active_requests |
UpDownCounter | {request} |
Измеряет количество одновременных HTTP-запросов, которые в настоящее время выполняются в режиме полета. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
http.request.method |
строка | Метод HTTP-запроса. [1] | GET ; POST ; HEAD |
Всегда |
url.scheme |
строка | Компонент схемы URI, определяющий используемый протокол. | http ; https |
Всегда |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.Routing
Microsoft.AspNetCore.Routing
Метрики сообщают сведения о маршрутизации HTTP-запросов в ASP.NET основных конечных точек:
Метрика: aspnetcore.routing.match_attempts
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.routing.match_attempts |
Счетчик | {match_attempt} |
Количество запросов, которые пытались сопоставить с конечной точкой. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.routing.match_status |
строка | Результат сопоставления | success ; failure |
Всегда |
aspnetcore.routing.is_fallback_route |
boolean | Значение, указывающее, является ли соответствующий маршрут резервным. | True |
Если маршрут был успешно сопоставлен. |
http.route |
строка | Соответствующий маршрут | {controller}/{action}/{id?} |
Если маршрут был успешно сопоставлен. |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.Diagnostics
Отчет Microsoft.AspNetCore.Diagnostics
о метриках диагностика сведения из по промежуточного слоя обработки ошибок ASP.NET Core:
Метрика: aspnetcore.diagnostics.exceptions
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.diagnostics.exceptions |
Счетчик | {exception} |
Количество исключений, пойманных по промежуточному слоям обработки исключений. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.diagnostics.exception.result |
строка | ASP.NET результат обработки по промежуточному слоям исключений ASP.NET | handled ; unhandled |
Всегда |
aspnetcore.diagnostics.handler.type |
строка | Полное имя IExceptionHandler типа реализации, обрабатывающей исключение. |
Contoso.MyHandler |
Если исключение было обработано этим обработчиком. |
exception.type |
строка | Полное имя типа исключения. | System.OperationCanceledException ; Contoso.MyException |
Всегда |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.RateLimiting
Microsoft.AspNetCore.RateLimiting
Метрики сообщают о скорости, ограничивающей информацию из ASP.NET по промежуточному по промежуточному слоям, ограничивающим частоту основных показателей:
aspnetcore.rate_limiting.active_request_leases
aspnetcore.rate_limiting.request_lease.duration
aspnetcore.rate_limiting.queued_requests
aspnetcore.rate_limiting.request.time_in_queue
aspnetcore.rate_limiting.requests
Метрика: aspnetcore.rate_limiting.active_request_leases
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.rate_limiting.active_request_leases |
UpDownCounter | {request} |
Количество запросов, которые в настоящее время активны на сервере, в которых хранится ограничение скорости аренды. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
строка | Имя политики ограничения скорости. | fixed ; sliding ; token |
Если соответствующая конечная точка для запроса имела политику ограничения скорости. |
Доступно начиная с .NET 8.0.
Метрика: aspnetcore.rate_limiting.request_lease.duration
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.rate_limiting.request_lease.duration |
Гистограмма | s |
Длительность ограничения скорости аренды, удерживаемой запросами на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
строка | Имя политики ограничения скорости. | fixed ; sliding ; token |
Если соответствующая конечная точка для запроса имела политику ограничения скорости. |
Доступно начиная с .NET 8.0.
Метрика: aspnetcore.rate_limiting.queued_requests
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.rate_limiting.queued_requests |
UpDownCounter | {request} |
Количество запросов, которые в настоящее время находятся в очереди, ожидающих получения ограничения скорости аренды. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
строка | Имя политики ограничения скорости. | fixed ; sliding ; token |
Если соответствующая конечная точка для запроса имела политику ограничения скорости. |
Доступно начиная с .NET 8.0.
Метрика: aspnetcore.rate_limiting.request.time_in_queue
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.rate_limiting.request.time_in_queue |
Гистограмма | s |
Время, затраченное в очереди, ожидающее получения ограничения скорости аренды. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
строка | Имя политики ограничения скорости. | fixed ; sliding ; token |
Если соответствующая конечная точка для запроса имела политику ограничения скорости. |
aspnetcore.rate_limiting.result |
строка | Результат ограничения скорости показывает, была ли получена аренда или содержит причину отклонения. | acquired ; request_canceled |
Всегда |
Доступно начиная с .NET 8.0.
Метрика: aspnetcore.rate_limiting.requests
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.rate_limiting.requests |
Счетчик | {request} |
Количество запросов, пытающихся получить ограничение скорости аренды. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.rate_limiting.policy |
строка | Имя политики ограничения скорости. | fixed ; sliding ; token |
Если соответствующая конечная точка для запроса имела политику ограничения скорости. |
aspnetcore.rate_limiting.result |
строка | Результат ограничения скорости показывает, была ли получена аренда или содержит причину отклонения. | acquired ; request_canceled |
Всегда |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.HeaderParsing
Microsoft.AspNetCore.HeaderParsing
Метрики сообщают сведения о синтаксическом анализе заголовка ASP.NET Core:
Метрика: aspnetcore.header_parsing.parse_errors
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.header_parsing.parse_errors |
Счетчик | {parse_error} |
Количество ошибок, возникших при анализе заголовков HTTP-запроса. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.header_parsing.header.name |
строка | Имя заголовка. | Content-Type |
Всегда |
error.type |
строка | Сообщение об ошибке. | Unable to parse media type value. |
Всегда |
Доступно начиная с .NET 8.0.
Метрика: aspnetcore.header_parsing.cache_accesses
Эта метрика создается только для средства синтаксического анализа заголовка HTTP-запроса, поддерживающие кэширование.
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
aspnetcore.header_parsing.cache_accesses |
Счетчик | {cache_access} |
Количество попыток доступа к кэшу, в котором хранятся значения синтаксического заголовка. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
aspnetcore.header_parsing.header.name |
строка | Имя заголовка. | Content-Type |
Всегда |
aspnetcore.header_parsing.cache_access.type |
строка | Значение, указывающее, найдено ли значение заголовка в кэше или нет. | Hit ; Miss |
Всегда |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.Server.Kestrel
Microsoft.AspNetCore.Server.Kestrel
Метрики сообщают сведения о подключении HTTP с веб-сервера ASP.NET Core Kestrel:
kestrel.active_connections
kestrel.connection.duration
kestrel.rejected_connections
kestrel.queued_connections
kestrel.queued_requests
kestrel.upgraded_connections
kestrel.tls_handshake.duration
kestrel.active_tls_handshakes
Метрика: kestrel.active_connections
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.active_connections |
UpDownCounter | {connection} |
Количество подключений, которые в настоящее время активны на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.type |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Доступно начиная с .NET 8.0.
Метрика: kestrel.connection.duration
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.connection.duration |
Гистограмма | s |
Длительность подключений на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
строка | Полное имя типа исключения. | System.OperationCanceledException ; Contoso.MyException |
Если исключение было создано. |
network.protocol.name |
строка | Уровень приложений OSI или эквивалентный не OSI. | http ; web_sockets |
Всегда |
network.protocol.version |
строка | Версия протокола, указанного в network.protocol.name . |
1.1 ; 2 |
Всегда |
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.type |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
tls.protocol.version |
строка | Версия протокола TLS. | 1.2 ; 1.3 |
Если подключение защищено с помощью TLS. |
Так как эта метрика отслеживает длительность подключения, и в идеале http-подключения используются для нескольких запросов, контейнеры должны быть длиннее, чем те, которые используются для длительности запроса. Например, использование [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 3000] предоставляет верхний контейнер 5 минут.
Доступно начиная с .NET 8.0.
Метрика: kestrel.rejected_connections
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.rejected_connections |
Счетчик | {connection} |
Количество подключений, отклоненных сервером. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.type |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Подключение, если текущее активное число превышает значение, настроенное с MaxConcurrentConnections
помощью.
Доступно начиная с .NET 8.0.
Метрика: kestrel.queued_connections
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.queued_connections |
UpDownCounter | {connection} |
Количество подключений, которые в настоящее время находятся в очереди и ожидают запуска. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.transport |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Доступно начиная с .NET 8.0.
Метрика: kestrel.queued_requests
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.queued_requests |
UpDownCounter | {request} |
Количество HTTP-запросов в мультиплексированных подключениях (HTTP/2 и HTTP/3), которые в настоящее время находятся в очереди и ожидают запуска. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.protocol.name |
строка | Уровень приложений OSI или эквивалентный не OSI. | http ; web_sockets |
Всегда |
network.protocol.version |
строка | Версия протокола, указанного в network.protocol.name . |
1.1 ; 2 |
Всегда |
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.transport |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Доступно начиная с .NET 8.0.
Метрика: kestrel.upgraded_connections
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.upgraded_connections |
UpDownCounter | {connection} |
Количество подключений, которые в настоящее время обновлены (WebSockets). |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.transport |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Счетчик отслеживает только подключения HTTP/1.1.
Доступно начиная с .NET 8.0.
Метрика: kestrel.tls_handshake.duration
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.tls_handshake.duration |
Гистограмма | s |
Длительность подтверждения TLS на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
error.type |
строка | Полное имя типа исключения. | System.OperationCanceledException ; Contoso.MyException |
Если исключение было создано. |
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.transport |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
tls.protocol.version |
строка | Версия протокола TLS. | 1.2 ; 1.3 |
Если подключение защищено с помощью TLS. |
При использовании OpenTelemetry контейнеры по умолчанию для этого metic имеют значение [ 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.0.
Метрика: kestrel.active_tls_handshakes
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
kestrel.active_tls_handshakes |
UpDownCounter | {handshake} |
Количество подтверждения TLS, которые в настоящее время выполняются на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
network.transport |
строка | Транспортный слой OSI или метод обмена данными между процессами. | tcp ; unix |
Всегда |
network.transport |
строка | Сетевой уровень OSI или эквивалентный не OSI. | ipv4 ; ipv6 |
Если транспорт имеет tcp значение или udp . |
server.address |
строка | Доменное имя сервера, если доступно без обратного поиска DNS; в противном случае IP-адрес или имя сокета домена Unix. | example.com |
Всегда |
server.port |
INT | Номер порта сервера | 80 ; 8080 ; 443 |
Если транспорт имеет tcp значение или udp . |
Доступно начиная с .NET 8.0.
Microsoft.AspNetCore.Http.Connections
Microsoft.AspNetCore.Http.Connections
Метрики сообщают сведения о подключении из ASP.NET Core SignalR:
Метрика: signalr.server.connection.duration
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
signalr.server.connection.duration |
Гистограмма | s |
Длительность подключений на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
signalr.connection.status |
строка | Состояние закрытия HTTP-подключения SignalR. | app_shutdown ; timeout |
Всегда |
signalr.transport |
строка | Тип транспорта SignalR | web_sockets ; long_polling |
Всегда |
Доступно начиная с .NET 8.0.
значение | Описание |
---|---|
normal_closure |
Подключение было закрыто обычно. |
timeout |
Подключение было закрыто из-за времени ожидания. |
app_shutdown |
Подключение было закрыто, так как приложение завершает работу. |
signalr.transport
— одно из следующих:
Значение | Протокол |
---|---|
server_sent_events |
События, отправленные сервером |
long_polling |
Длинный опрос |
web_sockets |
WebSocket |
Так как эта метрика отслеживает длительность подключения, и в идеале подключения SignalR устойчивы, контейнеры должны быть длиннее, чем те, которые используются для длительности запроса. Например, при использовании [0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300] предоставляется верхний контейнер 5 минут.
Доступно начиная с .NET 8.0.
Метрика: signalr.server.active_connections
Имя. | Тип инструмента | Единица (UCUM) | Description |
---|---|---|---|
signalr.server.active_connections |
UpDownCounter | {connection} |
Количество подключений, которые в настоящее время активны на сервере. |
Атрибут | Тип | Описание | Примеры | Присутствие |
---|---|---|---|---|
signalr.connection.status |
строка | Состояние закрытия HTTP-подключения SignalR. | app_shutdown ; timeout |
Всегда |
signalr.transport |
строка | Тип транспорта SignalR | web_sockets ; long_polling |
Всегда |
Доступно начиная с .NET 8.0.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по