Skip to main content

NET Framework

NET Framework

Plugin: windows.plugin Module: PerflibNetFramework

Maintained by Netdata

Overview​

Monitor runtime and performance statistics for applications built with .NET Framework through Perflib.

It queries different NET Framework objects per process from Perflib in order to gather the metrics.

This collector is only supported on the following platforms:

  • windows

This collector only supports collecting metrics from a single instance of this integration.

Default Behavior​

Auto-Detection​

The collector automatically detects all of the metrics, no further configuration is required.

Limits​

Charts are keyed by raw Perflib instance names. Instances with the same name are combined into one chart series, so their gauges and rates represent the process group. Fraction counters use the ratio of summed numerators and bases. CLR Memory charts include a process_id label only while exactly one process has that name; the label is removed while the name is ambiguous. Different raw names remain separate series. Rate charts establish a new baseline for one collection after the number or process-ID set of same-name instances changes. They assume the group does not advance by 2^31 or more between samples; an implausibly large delta is discarded as one lost sample. A temporarily unreadable process ID removes its label without resetting unrelated rate charts. The security stack walk depth chart reports the largest depth reported by any process in the group.

Performance Impact​

Creates up to 49 charts per .NET Framework process name, up from 32 in the previous implementation. A chart is only created when its Perflib counter is available, so the actual number depends on the .NET runtime in use.

Setup​

Prerequisites​

No action required.

Configuration​

Options​

OptionDescriptionDefaultRequired
update everyData collection frequency.1no

via File​

The configuration file name for this integration is netdata.conf. Configuration for this specific integration is located in the [plugin:windows:PerflibNetFramework] section within that file.

The file format is a modified INI syntax. The general structure is:

[section1]
option1 = some value
option2 = some other value

[section2]
option3 = some third value

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config netdata.conf
Examples​

There are no configuration examples.

Alerts​

There are no alerts configured by default for this integration.

Metrics​

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per Processes running​

These metrics refer to NET applications.

Labels:

LabelDescription
processThe process name.

Metrics:

MetricDescriptionDimensionsUnit
netframework.clrexception_thrownThrown exceptionsexceptionsexceptions/s
netframework.clrexception_filtersThrown exceptions filtersfiltersfilters/s
netframework.clrexception_finallysExecuted finally blocksfinallysfinallys/s
netframework.clrexception_throw_to_catch_depthTraversed stack framestraversedstack_frames/s
netframework.clrinterop_com_callable_wrappersCOM callable wrappers (CCW)com_callable_wrappersccw
netframework.clrinterop_interop_marshallingsArguments and return values marshallingsmarshallingsmarshallings/s
netframework.clrinterop_interop_stubs_createdCreated stubscreatedstubs
netframework.clrjit_methodsJIT-compiled methodsjit-compiledmethods/s
netframework.clrjit_timeTime spent in JIT compilationtimepercentage
netframework.clrjit_standard_failuresJIT compiler failuresfailuresfailures
netframework.clrjit_il_bytesCompiled Microsoft intermediate language (MSIL) bytescompiled_msilbytes/s
netframework.clrloading_loader_heap_sizeMemory committed by class loadercommittedbytes
netframework.clrloading_current_appdomainsCurrent application domainscurrentdomains
netframework.clrloading_current_assembliesCurrent loaded assembliescurrentassemblies
netframework.clrloading_current_classes_loadedCurrent loaded classescurrentclasses
netframework.clrloading_appdomains_loadedLoaded application domainsloadeddomain/s
netframework.clrloading_appdomains_unloadedUnloaded application domainsunloadeddomain/s
netframework.clrloading_assemblies_loadedLoaded assembliesloadedassemblies/s
netframework.clrloading_classes_loadedLoaded classes in all assembliesloadedclasses/s
netframework.clrloading_class_load_failuresClass load failuresclass_loadfailures
netframework.clrremoting_channelsRegistered channelsregisteredchannels/s
netframework.clrremoting_context_bound_classes_loadedLoaded context-bound classesloadedclasses
netframework.clrremoting_context_bound_objectsAllocated context-bound objectsallocatedobjects/s
netframework.clrremoting_context_proxiesRemoting proxy objectsobjectsobjects/s
netframework.clrremoting_contextsTotal of remoting contextscontextscontexts
netframework.clrremoting_remote_callsRemote Procedure Calls (RPC) invokedcallscalls/s
netframework.clrsecurity_link_time_checksLink-time code access security checkslinktimechecks/s
netframework.clrsecurity_checks_timeTime spent performing runtime code access security checkstimepercentage
netframework.clrsecurity_stack_walk_depthDepth of the stackstackdepth
netframework.clrsecurity_runtime_checksRuntime code access security checks performedruntimechecks/s
netframework.clrlocksandthreads_queue_lengthThreads waited to acquire a managed lockthreadsthreads/s
netframework.clrlocksandthreads_current_queue_lengthCurrent managed lock waitersthreadsthreads
netframework.clrlocksandthreads_current_logical_threadsLogical threadslogicalthreads
netframework.clrlocksandthreads_current_physical_threadsPhysical threadsphysicalthreads
netframework.clrlocksandthreads_current_recognized_threadsCurrent recognized threadsthreadsthreads
netframework.clrlocksandthreads_recognized_threadsThreads recognized by the runtimethreadsthreads/s
netframework.clrlocksandthreads_contentionsFails to acquire a managed lockcontentionscontentions/s

Per .NET Framework CLR Memory processes​

These metrics refer to .NET Framework CLR Memory instances.

Labels:

LabelDescription
processThe process name.
process_idThe process ID when the process name identifies exactly one process; omitted for same-name groups.

Metrics:

MetricDescriptionDimensionsUnit
netframework.clrmemory_allocated_bytesAllocated bytes on the GC heapallocatedbytes/s
netframework.clrmemory_finalization_survivorsFinalization survivorssurvivorsobjects
netframework.clrmemory_heap_sizeHeap sizes by generation and Gen 0 allocation budgetgen0, gen1, gen2, lohbytes
netframework.clrmemory_promoted_bytesPromoted bytes by generationgen0, gen1bytes/s
netframework.clrmemory_gc_handlesGC handles in usehandleshandles
netframework.clrmemory_collectionsGarbage collections by generationgen0, gen1, gen2collections/s
netframework.clrmemory_induced_gcInduced garbage collectionsinducedcollections/s
netframework.clrmemory_pinned_objectsPinned objectspinnedobjects
netframework.clrmemory_sink_blocks_in_useSink blocks in usein_useblocks
netframework.clrmemory_committed_bytesCommitted GC virtual memorycommittedbytes
netframework.clrmemory_reserved_bytesReserved GC virtual memoryreservedbytes
netframework.clrmemory_gc_timeTime spent in garbage collectiontimepercentage

Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.