ASP.NET Основные метрики
Статья 02/01/2024
Участники: 8
Обратная связь
В этой статье
В этой статье описываются встроенные метрики для ASP.NET Core, созданные с помощью System.Diagnostics.Metrics API. Список метрик на основе более старого API EventCounters см . здесь .
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Hosting
Метрики сообщают высокоуровневую информацию о HTTP-запросах, полученных ASP.NET Core:
Метрика: http.server.request.duration
Атрибут
Тип
Описание
Примеры
Присутствие
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
Имя.
Тип инструмента
Единица (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
Атрибут
Тип
Описание
Примеры
Присутствие
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
Атрибут
Тип
Описание
Примеры
Присутствие
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
Метрики сообщают сведения о синтаксическом анализе заголовка ASP.NET Core:
Имя.
Тип инструмента
Единица (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.
Эта метрика создается только для средства синтаксического анализа заголовка 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
Имя.
Тип инструмента
Единица (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
Атрибут
Тип
Описание
Примеры
Присутствие
error.type
строка
Описывает тип ошибки, с которым завершилось подключение или необработанным типом исключения, вызванным во время конвейера подключения. Известные ошибки подключения можно найти в семантических соглашениях для метрик веб-сервера Kestrel.
connection_reset
; invalid_request_headers
; System.OperationCanceledException
Если соединение закончилось с известной ошибкой или возникло исключение.
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 9, когда соединение заканчивается известной ошибкой, error.type
значение атрибута устанавливается на известный тип ошибки. Известные ошибки подключения можно найти в семантических соглашениях для метрик веб-сервера Kestrel.
Доступно начиная с .NET 8.
Метрика: 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.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.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.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.upgraded_connections
Имя.
Тип инструмента
Единица (UCUM)
Description
kestrel.upgraded_connections
UpDownCounter
{connection}
Количество подключений, которые в настоящее время обновлены (WebSockets).
Атрибут
Тип
Описание
Примеры
Присутствие
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
.
Счетчик отслеживает только подключения HTTP/1.1.
Доступно начиная с .NET 8.0.
Метрика: kestrel.tls_handshake.duration
Атрибут
Тип
Описание
Примеры
Присутствие
error.type
строка
Полное имя типа исключения.
System.OperationCanceledException
; Contoso.MyException
Если исключение было создано.
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.
При использовании 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.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.
Microsoft.AspNetCore.Http.Connections
Microsoft.AspNetCore.Http.Connections
Метрики сообщают сведения о подключении из ASP.NET Core SignalR :
Метрика: signalr.server.connection.duration
Атрибут
Тип
Описание
Примеры
Присутствие
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
— одно из следующих:
Так как эта метрика отслеживает длительность подключения, и в идеале подключения 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.