Стандартные счетчики событий в .NET

В библиотеках и среде выполнения .NET реализовано и опубликовано несколько счетчиков событий, которые можно использовать для выявления и диагностики различных проблем с производительностью. В этой статье приводятся справочные сведения о поставщиках, которые можно использовать для отслеживания этих счетчиков, а также их описание. Ознакомьтесь со ссылкой на известные метрики вместо этого, если вы работаете с . Более новый API System.Diagnostics.Metrics в NET.

Счетчики "System.Runtime"

Следующие счетчики публикуются как часть среды выполнения .NET (CoreCLR) и поддерживаются в RuntimeEventSource.cs.

Счетчик Description Впервые реализовано в
% Time in GC since last GC (time-in-gc) Процент времени в сборке мусора с момента последнего сборки мусора .NET Core 3.1.
Allocation Rate (alloc-rate) Количество выделенных байтов за интервал обновления .NET Core 3.1.
CPU Usage (cpu-usage) Процент использования ЦП процессом относительно всех ресурсов ЦП системы .NET Core 3.1.
Exception Count (exception-count) Количество произошедших исключений .NET Core 3.1.
GC Heap Size (gc-heap-size) Количество мегабайтов, которые должны быть выделены на основе GC.GetTotalMemory(Boolean) .NET Core 3.1.
Gen 0 GC Count (gen-0-gc-count) Количество сборок мусора для поколения 0 за интервал обновления .NET Core 3.1.
Gen 0 Size (gen-0-size) Количество байтов для сборки мусора поколения 0 .NET Core 3.1.
Gen 1 GC Count (gen-1-gc-count) Количество сборок мусора для поколения 1 за интервал обновления .NET Core 3.1.
Gen 1 Size (gen-1-size) Количество байтов для сборки мусора поколения 1 .NET Core 3.1.
Gen 2 GC Count (gen-2-gc-count) Количество сборок мусора для поколения 2 за интервал обновления .NET Core 3.1.
Gen 2 Size (gen-2-size) Количество байтов для сборки мусора поколения 2 .NET Core 3.1.
LOH Size (loh-size) Количество байтов для кучи больших объектов .NET Core 3.1.
POH Size (poh-size) Количество байтов для кучи закрепленных объектов (доступно в .NET 5 и более поздних версиях) .NET Core 3.1.
GC Fragmentation (gc-fragmentation) Фрагментация кучи сборки мусора (доступно в .NET 5 и более поздних версиях) .NET Core 3.1.
Monitor Lock Contention Count (monitor-lock-contention-count) Значение, указывающее, сколько раз возникало состязание при попытке установить блокировку монитора на основе Monitor.LockContentionCount .NET Core 3.1.
Number of Active Timers (active-timer-count) Количество активных в данных момент экземпляров Timer на основе Timer.ActiveCount .NET Core 3.1.
Number of Assemblies Loaded (assembly-count) Количество экземпляров Assembly, загруженных в процесс в определенный момент времени .NET Core 3.1.
ThreadPool Completed Work Item Count (threadpool-completed-items-count) Количество рабочих элементов, обработанных на данный момент в ThreadPool .NET Core 3.1.
ThreadPool Queue Length (threadpool-queue-length) Количество рабочих элементов, находящихся в настоящее время в очереди на обработку в ThreadPool .NET Core 3.1.
ThreadPool Thread Count (threadpool-thread-count) Текущее количество потоков пула потоков в ThreadPool на основе ThreadPool.ThreadCount .NET Core 3.1.
Working Set (working-set) Количество мегабайт физической памяти, сопоставленных с контекстом процесса в определенный момент времени на основе Environment.WorkingSet .NET Core 3.1.
IL Bytes Jitted (il-bytes-jitted) Общий размер IL, скомпилированных JIT-компилятором, в байтах .NET 5
Methods Jitted Count (methods-jitted-count) Число методов, скомпилированных JIT-компилятором .NET 5
GC Committed Bytes (gc-committed) Число байт, зафиксированных сборщиком мусора .NET 6

Счетчики Microsoft.AspNetCore.Hosting

Следующие счетчики публикуются как часть ASP.NET Core и поддерживаются в HostingEventSource.cs.

Счетчик Description Впервые реализовано в
Current Requests (current-requests) Общее количество запросов, которые были запущены, но еще не остановлены .NET Core 3.1.
Failed Requests (failed-requests) Общее число неудачных запросов, произошедших за время существования приложения .NET Core 3.1.
Request Rate (requests-per-second) Количество выполняемых запросов за интервал обновления .NET Core 3.1.
Total Requests (total-requests) Общее число запросов, произошедших за время существования приложения .NET Core 3.1.

Счетчики Microsoft.AspNetCore.Http.Connections

Следующие счетчики публикуются как часть ASP.NET Core SignalR и поддерживаются в HttpConnectionsEventSource.cs.

Счетчик Description Впервые реализовано в
Average Connection Duration (connections-duration) Средняя продолжительность подключения в миллисекундах .NET Core 3.1.
Current Connections (current-connections) Количество активных подключений, которые были запущены, но еще не остановлены .NET Core 3.1.
Total Connections Started (connections-started) Общее число запущенных подключений .NET Core 3.1.
Total Connections Stopped (connections-stopped) Общее число остановленных подключений .NET Core 3.1.
Total Connections Timed Out (connections-timed-out) Общее число подключений, для которых истекло время ожидания .NET Core 3.1.

Счетчики Microsoft-AspNetCore-Server-Kestrel

Следующие счетчики публикуются как часть веб-сервера Kestrel ASP.NET Core и поддерживаются в KestrelEventSource.cs.

Счетчик Description Впервые реализовано в
Connection Queue Length (connection-queue-length) Текущая длина очереди подключения .NET 5
Connection Rate (connections-per-second) Количество подключений к веб-серверу за интервал обновления .NET 5
Current Connections (current-connections) Текущее количество активных подключений к веб-серверу .NET 5
Current TLS Handshakes (current-tls-handshakes) Текущее количество подтверждений TLS .NET 5
Current Upgraded Requests (WebSockets) (current-upgraded-requests) Текущее количество обновленных запросов (WebSockets) .NET 5
Failed TLS Handshakes (failed-tls-handshakes) Общее число неудачных подтверждений TLS .NET 5
Request Queue Length (request-queue-length) Текущая длина очереди запросов .NET 5
TLS Handshake Rate (tls-handshakes-per-second) Количество подтверждений TLS за интервал обновления .NET 5
Total Connections (total-connections) Общее число подключений к веб-серверу .NET 5
Total TLS Handshakes (total-tls-handshakes) Общее число подтверждений TLS на веб-сервере .NET 5

Счетчики System.Net.Http

Следующие счетчики публикуются в стеке HTTP.

Счетчик Description Впервые реализовано в
Requests Started (requests-started) Количество запросов, запущенных с момента запуска процесса .NET 5
Requests Started Rate (requests-started-rate) Количество запущенных запросов за интервал обновления .NET 5
Requests Failed (requests-failed) Количество завершившихся сбоем запросов с момента запуска процесса .NET 5
Requests Failed Rate (requests-failed-rate) Количество завершившихся сбоем запросов за интервал обновления .NET 5
Current Requests (current-requests) Текущее число активных HTTP-запросов, которые начались, но еще не завершены или завершились сбоем. .NET 5
Current HTTP 1.1 Connections (http11-connections-current-total) Текущее количество соединений HTTP 1.1, которые были запущены, но еще не завершились успехом или сбоем .NET 5
Current HTTP 2.0 Connections (http20-connections-current-total) Текущее количество соединений HTTP 2.0, которые были запущены, но еще не завершились успехом или сбоем .NET 5
Current HTTP 3.0 Connections (http30-connections-current-total) Текущее число подключений HTTP 3.0, которые начались, но еще не завершены или завершились сбоем. .NET 7
HTTP 1.1 Requests Queue Duration (http11-requests-queue-duration) Средняя продолжительность пребывания запросов HTTP 1.1 в очереди запросов .NET 5
HTTP 2.0 Requests Queue Duration (http20-requests-queue-duration) Средняя продолжительность пребывания запросов HTTP 2.0 в очереди запросов .NET 5
HTTP 3.0 Requests Queue Duration (http30-requests-queue-duration) Средняя продолжительность запросов HTTP 3.0, потраченных в очереди запросов .NET 7

Счетчики System.Net.NameResolution

Следующие счетчики используются для отслеживания метрик, связанных с поиском DNS.

Счетчик Description Впервые реализовано в
DNS Lookups Requested (dns-lookups-requested) Количество запросов на поиск DNS, запущенных с момента запуска процесса .NET 5
Average DNS Lookup Duration (dns-lookups-duration) Средняя продолжительность поиска DNS .NET 5
Current DNS Lookups (current-dns-lookups) Текущее число подстановок DNS, которые начались, но еще не завершены или завершились сбоем. .NET 6

Счетчики System.Net.Security

Следующие счетчики используются для отслеживания метрик, связанных с протоколом TLS.

Счетчик Description Впервые реализовано в
TLS handshakes completed (tls-handshake-rate) Количество подтверждений TLS, завершенных за интервал обновления .NET 5
Total TLS handshakes completed (total-tls-handshakes) Общее количество подтверждений TLS, завершенных с момента запуска процесса .NET 5
Current TLS handshakes (current-tls-handshakes) Текущее количество соединений подтверждений TLS, которые были запущены, но еще не завершились .NET 5
Total TLS handshakes failed (failed-tls-handshakes) Общее количество подтверждений TLS, завершившихся сбоем с момента запуска процесса .NET 5
All TLS Sessions Active (all-tls-sessions-open) Количество активных сеансов TLS любой версии .NET 5
TLS 1.0 Sessions Active (tls10-sessions-open) Количество активных сеансов TLS 1.0 .NET 5
TLS 1.1 Sessions Active (tls11-sessions-open) Количество активных сеансов TLS 1.1 .NET 5
TLS 1.2 Sessions Active (tls12-sessions-open) Количество активных сеансов TLS 1.2 .NET 5
TLS 1.3 Sessions Active (tls13-sessions-open) Количество активных сеансов TLS 1.3 .NET 5
TLS Handshake Duration (all-tls-handshake-duration) Средняя продолжительность всех подтверждений TLS .NET 5
TLS 1.0 Handshake Duration (tls10-handshake-duration) Средняя продолжительность подтверждений TLS 1.0 .NET 5
TLS 1.1 Handshake Duration (tls11-handshake-duration) Средняя продолжительность подтверждений TLS 1.1 .NET 5
TLS 1.2 Handshake Duration (tls12-handshake-duration) Средняя продолжительность подтверждений TLS 1.2 .NET 5
TLS 1.3 Handshake Duration (tls13-handshake-duration) Средняя продолжительность подтверждений TLS 1.3 .NET 5

Счетчики System.Net.Sockets

Следующие счетчики используются для отслеживания метрик, связанных с Socket.

Счетчик Description Впервые реализовано в
Outgoing Connections Established (outgoing-connections-established) Общее количество исходящих соединений, установленных с момента запуска процесса .NET 5
Incoming Connections Established (incoming-connections-established) Общее количество входящих соединений, установленных с момента запуска процесса .NET 5
Current Outgoing Connect Attempts (current-outgoing-connect-attempts) Текущее число попыток исходящего подключения, которые начались, но еще не завершены или завершились сбоем. .NET 7
Bytes Received (bytes-received) Общее количество байтов, полученных с момента запуска процесса .NET 5
Bytes Sent (bytes-sent) Общее количество байтов, отправленных с момента запуска процесса .NET 5
Datagrams Received (datagrams-received) Общее количество датаграмм, полученных с момента запуска процесса .NET 5
Datagrams Sent (datagrams-sent) Общее количество датаграмм, отправленных с момента запуска процесса .NET 5