diff --git a/internal/signalfx-agent/pkg/core/modules.go b/internal/signalfx-agent/pkg/core/modules.go index 368741a663..440978d1b8 100644 --- a/internal/signalfx-agent/pkg/core/modules.go +++ b/internal/signalfx-agent/pkg/core/modules.go @@ -6,7 +6,6 @@ package core import ( // Import everything that isn't referenced anywhere else _ "github.com/signalfx/signalfx-agent/pkg/monitors/appmesh" - _ "github.com/signalfx/signalfx-agent/pkg/monitors/aspdotnet" _ "github.com/signalfx/signalfx-agent/pkg/monitors/cadvisor" _ "github.com/signalfx/signalfx-agent/pkg/monitors/cloudfoundry" _ "github.com/signalfx/signalfx-agent/pkg/monitors/collectd/consul" @@ -27,7 +26,6 @@ import ( _ "github.com/signalfx/signalfx-agent/pkg/monitors/cpu" _ "github.com/signalfx/signalfx-agent/pkg/monitors/diskio" _ "github.com/signalfx/signalfx-agent/pkg/monitors/docker" - _ "github.com/signalfx/signalfx-agent/pkg/monitors/dotnet" _ "github.com/signalfx/signalfx-agent/pkg/monitors/ecs" _ "github.com/signalfx/signalfx-agent/pkg/monitors/elasticsearch/query" _ "github.com/signalfx/signalfx-agent/pkg/monitors/elasticsearch/stats" diff --git a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet.go b/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet.go deleted file mode 100644 index edc5425339..0000000000 --- a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet.go +++ /dev/null @@ -1,39 +0,0 @@ -package aspdotnet - -import ( - "github.com/sirupsen/logrus" - - "github.com/signalfx/signalfx-agent/pkg/core/config" - "github.com/signalfx/signalfx-agent/pkg/monitors" - "github.com/signalfx/signalfx-agent/pkg/monitors/types" - "github.com/signalfx/signalfx-agent/pkg/utils/timeutil" -) - -func init() { - monitors.Register(&monitorMetadata, func() interface{} { return &Monitor{} }, &Config{}) -} - -// Config for this monitor -type Config struct { - config.MonitorConfig `yaml:",inline" singleInstance:"true" acceptsEndpoints:"false"` - // (Windows Only) Number of seconds that wildcards in counter paths should - // be expanded and how often to refresh counters from configuration. - CountersRefreshInterval timeutil.Duration `yaml:"counterRefreshInterval" default:"60s"` - // (Windows Only) Print out the configurations that match available - // performance counters. This is used for debugging. - PrintValid bool `yaml:"printValid"` -} - -// Monitor for Utilization -type Monitor struct { - Output types.Output - cancel func() - logger logrus.FieldLogger // nolint: structcheck,unused -} - -// Shutdown stops the metric sync -func (m *Monitor) Shutdown() { - if m.cancel != nil { - m.cancel() - } -} diff --git a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_other.go b/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_other.go deleted file mode 100644 index 267a4c2075..0000000000 --- a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_other.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:build !windows -// +build !windows - -package aspdotnet - -import "fmt" - -// Configure is the monitor -func (m *Monitor) Configure(_ *Config) error { - return fmt.Errorf("this monitor is not implemented on this platform") -} diff --git a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_windows.go b/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_windows.go deleted file mode 100644 index 847071b734..0000000000 --- a/internal/signalfx-agent/pkg/monitors/aspdotnet/aspdotnet_windows.go +++ /dev/null @@ -1,104 +0,0 @@ -//go:build windows -// +build windows - -package aspdotnet - -import ( - "context" - "strings" - "time" - - "github.com/sirupsen/logrus" - - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/common/accumulator" - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/common/emitter/baseemitter" - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/monitors/winperfcounters" - "github.com/signalfx/signalfx-agent/pkg/utils" -) - -var logger = logrus.WithField("monitorType", monitorType) - -// Configure the monitor and kick off metric syncing -func (m *Monitor) Configure(conf *Config) error { - m.logger = logger.WithField("monitorID", conf.MonitorID) - m.logger.Warn("[NOTICE] The " + monitorType + " monitor is deprecated and will be removed in a future release. For more information visit https://docs.splunk.com/observability/en/gdi/monitors-languages/asp-dot-net.html") - perfcounterConf := &winperfcounters.Config{ - CountersRefreshInterval: conf.CountersRefreshInterval, - PrintValid: conf.PrintValid, - Object: []winperfcounters.PerfCounterObj{ - { - ObjectName: "ASP.NET", - Counters: []string{ - "applications running", - "application restarts", - "requests current", - "requests queued", - "requests rejected", - "worker processes running", - "worker process restarts", - }, - Instances: []string{"*"}, - Measurement: "asp_net", - IncludeTotal: true, - WarnOnMissing: true, - }, - { - ObjectName: "ASP.NET Applications", - Counters: []string{ - "requests failed", - "requests/sec", - "errors during execution", - "errors unhandled during execution/sec", - "errors total/sec", - "pipeline instance count", - "sessions active", - "session sql server connections total", - }, - Instances: []string{"*"}, - Measurement: "asp_net_applications", - IncludeTotal: true, - WarnOnMissing: true, - }, - }, - } - - plugin, err := winperfcounters.GetPlugin(perfcounterConf) - if err != nil { - return err - } - - // create batch emitter - emitter := baseemitter.NewEmitter(m.Output, m.logger) - - // Hard code the plugin name because the emitter will parse out the - // configured measurement name as plugin and that is confusing. - emitter.AddTag("plugin", strings.ReplaceAll(monitorType, "/", "-")) - - // omit objectname tag from dimensions - emitter.OmitTag("objectname") - - // don't include the telegraf_type dimension - emitter.SetOmitOriginalMetricType(true) - - // set metric name replacements to match SignalFx PerfCounterReporter - emitter.AddMetricNameTransformation(winperfcounters.NewPCRMetricNamesTransformer()) - - // sanitize the instance tag associated with windows perf counter metrics - emitter.AddMeasurementTransformation(winperfcounters.NewPCRInstanceTagTransformer()) - - // create the accumulator - ac := accumulator.NewAccumulator(emitter) - - // create contexts for managing the plugin loop - var ctx context.Context - ctx, m.cancel = context.WithCancel(context.Background()) - - // gather metrics on the specified interval - utils.RunOnInterval(ctx, func() { - if err := plugin.Gather(ac); err != nil { - m.logger.WithError(err).Errorf("an error occurred while gathering metrics from the plugin") - } - }, time.Duration(conf.IntervalSeconds)*time.Second) - - return nil -} diff --git a/internal/signalfx-agent/pkg/monitors/aspdotnet/genmetadata.go b/internal/signalfx-agent/pkg/monitors/aspdotnet/genmetadata.go deleted file mode 100644 index 5383583be8..0000000000 --- a/internal/signalfx-agent/pkg/monitors/aspdotnet/genmetadata.go +++ /dev/null @@ -1,62 +0,0 @@ -// Code generated by monitor-code-gen. DO NOT EDIT. - -package aspdotnet - -import ( - "github.com/signalfx/golib/v3/datapoint" - "github.com/signalfx/signalfx-agent/pkg/monitors" -) - -const monitorType = "aspdotnet" - -var groupSet = map[string]bool{} - -const ( - aspNetApplicationRestarts = "asp_net.application_restarts" - aspNetApplicationsRunning = "asp_net.applications_running" - aspNetRequestsCurrent = "asp_net.requests_current" - aspNetRequestsQueue = "asp_net.requests_queue" - aspNetRequestsRejected = "asp_net.requests_rejected" - aspNetWorkerProcessRestarts = "asp_net.worker_process_restarts" - aspNetWorkerProcessesRunning = "asp_net.worker_processes_running" - aspNetApplicationsErrorsDuringExecution = "asp_net_applications.errors_during_execution" - aspNetApplicationsErrorsTotalSec = "asp_net_applications.errors_total_sec" - aspNetApplicationsErrorsUnhandledDuringExecutionSec = "asp_net_applications.errors_unhandled_during_execution_sec" - aspNetApplicationsPipelineInstanceCount = "asp_net_applications.pipeline_instance_count" - aspNetApplicationsRequestsFailed = "asp_net_applications.requests_failed" - aspNetApplicationsRequestsSec = "asp_net_applications.requests_sec" - aspNetApplicationsSessionSQLServerConnectionsTotal = "asp_net_applications.session_sql_server_connections_total" - aspNetApplicationsSessionsActive = "asp_net_applications.sessions_active" -) - -var metricSet = map[string]monitors.MetricInfo{ - aspNetApplicationRestarts: {Type: datapoint.Gauge}, - aspNetApplicationsRunning: {Type: datapoint.Gauge}, - aspNetRequestsCurrent: {Type: datapoint.Gauge}, - aspNetRequestsQueue: {Type: datapoint.Gauge}, - aspNetRequestsRejected: {Type: datapoint.Gauge}, - aspNetWorkerProcessRestarts: {Type: datapoint.Gauge}, - aspNetWorkerProcessesRunning: {Type: datapoint.Gauge}, - aspNetApplicationsErrorsDuringExecution: {Type: datapoint.Gauge}, - aspNetApplicationsErrorsTotalSec: {Type: datapoint.Gauge}, - aspNetApplicationsErrorsUnhandledDuringExecutionSec: {Type: datapoint.Gauge}, - aspNetApplicationsPipelineInstanceCount: {Type: datapoint.Gauge}, - aspNetApplicationsRequestsFailed: {Type: datapoint.Gauge}, - aspNetApplicationsRequestsSec: {Type: datapoint.Gauge}, - aspNetApplicationsSessionSQLServerConnectionsTotal: {Type: datapoint.Gauge}, - aspNetApplicationsSessionsActive: {Type: datapoint.Gauge}, -} - -var defaultMetrics = map[string]bool{} - -var groupMetricsMap = map[string][]string{} - -var monitorMetadata = monitors.Metadata{ - MonitorType: "aspdotnet", - DefaultMetrics: defaultMetrics, - Metrics: metricSet, - SendUnknown: false, - Groups: groupSet, - GroupMetricsMap: groupMetricsMap, - SendAll: true, -} diff --git a/internal/signalfx-agent/pkg/monitors/aspdotnet/metadata.yaml b/internal/signalfx-agent/pkg/monitors/aspdotnet/metadata.yaml deleted file mode 100644 index 907e0e966a..0000000000 --- a/internal/signalfx-agent/pkg/monitors/aspdotnet/metadata.yaml +++ /dev/null @@ -1,93 +0,0 @@ -monitors: -- dimensions: - doc: | - **This monitor is deprecated in favor of metrics collected by the - [Splunk Distribution of OpenTelemetry .NET](https://docs.splunk.com/observability/en/gdi/get-data-in/application/otel-dotnet/configuration/dotnet-metrics-attributes.html) - and the [SignalFx Instrumentation for .NET](https://docs.splunk.com/observability/en/gdi/get-data-in/application/dotnet/configuration/dotnet-metrics-attributes.html). - Please, update any monitoring configuration to use the metrics provided by the - instrumentation as this monitor will be removed in February 2025.** - - (Windows Only) This monitor reports metrics about requests, errors, sessions, - worker processes for ASP.NET applications. - - ## Windows Performance Counters - The underlying source for these metrics are Windows Performance Counters. - Most of the performance counters that we query in this monitor are actually Gauges - that represent rates per second and percentages. - - This monitor reports the instantaneous values for these Windows Performance Counters. - This means that in between a collection interval, spikes could occur on the - Performance Counters. The best way to mitigate this limitation is to increase - the reporting interval on this monitor to collect more frequently. - - Sample YAML configuration: - - ```yaml - monitors: - - type: aspdotnet - ``` - sendAll: true - metrics: - asp_net.application_restarts: - description: Count of ASP.NET application restarts. - default: false - type: gauge - asp_net.applications_running: - description: Number of running ASP.NET applications. - default: false - type: gauge - asp_net.requests_current: - description: Current number of ASP.NET requests. - default: false - type: gauge - asp_net.requests_queue: - description: Number of queued ASP.NET requests. - default: false - type: gauge - asp_net.requests_rejected: - description: Count of rejected ASP.NET requests. - default: false - type: gauge - asp_net.worker_process_restarts: - description: Count of ASP.NET worker process restarts. - default: false - type: gauge - asp_net.worker_processes_running: - description: Number of running ASP.NET worker processes. - default: false - type: gauge - asp_net_applications.errors_during_execution: - description: Count of errors encountered by ASP.NET application durring execution. - default: false - type: gauge - asp_net_applications.errors_total_sec: - description: Error rate per second for the given ASP.NET application. - default: false - type: gauge - asp_net_applications.errors_unhandled_during_execution_sec: - description: Unhandled error rate per second countered while an ASP.NET application - is running. - default: false - type: gauge - asp_net_applications.pipeline_instance_count: - description: Number of instances in the ASP.NET application pipeline. - default: false - type: gauge - asp_net_applications.requests_failed: - description: Count of failed requests in the ASP.NET application - default: false - type: gauge - asp_net_applications.requests_sec: - description: Rate of requests in the ASP.NET application per second. - default: false - type: gauge - asp_net_applications.session_sql_server_connections_total: - description: Number of connections to microsoft sql server by an ASP.NET application. - default: false - type: gauge - asp_net_applications.sessions_active: - description: Number of active sessions in the ASP.NET application. - default: false - type: gauge - monitorType: aspdotnet - properties: diff --git a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet.go b/internal/signalfx-agent/pkg/monitors/dotnet/dotnet.go deleted file mode 100644 index 14056e9b02..0000000000 --- a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet.go +++ /dev/null @@ -1,39 +0,0 @@ -package dotnet - -import ( - "github.com/sirupsen/logrus" - - "github.com/signalfx/signalfx-agent/pkg/core/config" - "github.com/signalfx/signalfx-agent/pkg/monitors" - "github.com/signalfx/signalfx-agent/pkg/monitors/types" - "github.com/signalfx/signalfx-agent/pkg/utils/timeutil" -) - -func init() { - monitors.Register(&monitorMetadata, func() interface{} { return &Monitor{} }, &Config{}) -} - -// Config for this monitor -type Config struct { - config.MonitorConfig `yaml:",inline" singleInstance:"true" acceptsEndpoints:"false"` - // (Windows Only) Number of seconds that wildcards in counter paths should - // be expanded and how often to refresh counters from configuration. - CountersRefreshInterval timeutil.Duration `yaml:"counterRefreshInterval" default:"60s"` - // (Windows Only) Print out the configurations that match available - // performance counters. This used for debugging. - PrintValid bool `yaml:"printValid"` -} - -// Monitor for Utilization -type Monitor struct { - Output types.Output - cancel func() - logger logrus.FieldLogger // nolint: structcheck,unused -} - -// Shutdown stops the metric sync -func (m *Monitor) Shutdown() { - if m.cancel != nil { - m.cancel() - } -} diff --git a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_other.go b/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_other.go deleted file mode 100644 index e1d7452812..0000000000 --- a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_other.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:build !windows -// +build !windows - -package dotnet - -import "fmt" - -// Configure is the monitor -func (m *Monitor) Configure(_ *Config) error { - return fmt.Errorf("this monitor is not implemented on this platform") -} diff --git a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_windows.go b/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_windows.go deleted file mode 100644 index 3b89fbe16d..0000000000 --- a/internal/signalfx-agent/pkg/monitors/dotnet/dotnet_windows.go +++ /dev/null @@ -1,109 +0,0 @@ -//go:build windows -// +build windows - -package dotnet - -import ( - "context" - "strings" - "time" - - "github.com/sirupsen/logrus" - - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/common/accumulator" - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/common/emitter/baseemitter" - "github.com/signalfx/signalfx-agent/pkg/monitors/telegraf/monitors/winperfcounters" - "github.com/signalfx/signalfx-agent/pkg/utils" -) - -var logger = logrus.WithField("monitorType", monitorType) - -// Configure the monitor and kick off metric syncing -func (m *Monitor) Configure(conf *Config) error { - m.logger = logger.WithField("monitorID", conf.MonitorID) - m.logger.Warn("[NOTICE] The " + monitorType + " monitor is deprecated and will be removed in a future release. For more information visit https://docs.splunk.com/observability/en/gdi/monitors-languages/microsoft-dotnet.html") - perfcounterConf := &winperfcounters.Config{ - CountersRefreshInterval: conf.CountersRefreshInterval, - PrintValid: conf.PrintValid, - Object: []winperfcounters.PerfCounterObj{ - { - ObjectName: ".NET CLR Exceptions", - Counters: []string{ - "# of exceps thrown / sec", - }, - Instances: []string{"*"}, - Measurement: "net_clr_exceptions", - IncludeTotal: true, - WarnOnMissing: true, - }, - { - ObjectName: ".NET CLR LocksAndThreads", - Counters: []string{ - "# of current logical threads", - "# of current physical threads", - "contention rate / sec", - "current queue length", - }, - Instances: []string{"*"}, - Measurement: "net_clr_locksandthreads", - IncludeTotal: true, - WarnOnMissing: true, - }, - { - ObjectName: ".NET CLR Memory", - Counters: []string{ - "# bytes in all heaps", - "% time in gc", - "# gc handles", - "# total committed bytes", - "# total reserved bytes", - "# of pinned objects", - }, - Instances: []string{"*"}, - Measurement: "net_clr_memory", - IncludeTotal: true, - WarnOnMissing: true, - }, - }, - } - - plugin, err := winperfcounters.GetPlugin(perfcounterConf) - if err != nil { - return err - } - - // create base emitter - emitter := baseemitter.NewEmitter(m.Output, m.logger) - - // Hard code the plugin name because the emitter will parse out the - // configured measurement name as plugin and that is confusing. - emitter.AddTag("plugin", strings.ReplaceAll(monitorType, "/", "-")) - - // omit objectname tag from dimensions - emitter.OmitTag("objectname") - - // don't include the telegraf_type dimension - emitter.SetOmitOriginalMetricType(true) - - // set metric name replacements to match SignalFx PerfCounterReporter - emitter.AddMetricNameTransformation(winperfcounters.NewPCRMetricNamesTransformer()) - - // sanitize the instance tag associated with windows perf counter metrics - emitter.AddMeasurementTransformation(winperfcounters.NewPCRInstanceTagTransformer()) - - // create the accumulator - ac := accumulator.NewAccumulator(emitter) - - // create contexts for managing the plugin loop - var ctx context.Context - ctx, m.cancel = context.WithCancel(context.Background()) - - // gather metrics on the specified interval - utils.RunOnInterval(ctx, func() { - if err := plugin.Gather(ac); err != nil { - m.logger.WithError(err).Errorf("an error was encountered while gathering metrics from the plugin") - } - }, time.Duration(conf.IntervalSeconds)*time.Second) - - return nil -} diff --git a/internal/signalfx-agent/pkg/monitors/dotnet/genmetadata.go b/internal/signalfx-agent/pkg/monitors/dotnet/genmetadata.go deleted file mode 100644 index 6919bccc17..0000000000 --- a/internal/signalfx-agent/pkg/monitors/dotnet/genmetadata.go +++ /dev/null @@ -1,54 +0,0 @@ -// Code generated by monitor-code-gen. DO NOT EDIT. - -package dotnet - -import ( - "github.com/signalfx/golib/v3/datapoint" - "github.com/signalfx/signalfx-agent/pkg/monitors" -) - -const monitorType = "dotnet" - -var groupSet = map[string]bool{} - -const ( - netClrExceptionsNumExcepsThrownSec = "net_clr_exceptions.num_exceps_thrown_sec" - netClrLocksandthreadsContentionRateSec = "net_clr_locksandthreads.contention_rate_sec" - netClrLocksandthreadsCurrentQueueLength = "net_clr_locksandthreads.current_queue_length" - netClrLocksandthreadsNumOfCurrentLogicalThreads = "net_clr_locksandthreads.num_of_current_logical_threads" - netClrLocksandthreadsNumOfCurrentPhysicalThreads = "net_clr_locksandthreads.num_of_current_physical_threads" - netClrMemoryNumBytesInAllHeaps = "net_clr_memory.num_bytes_in_all_heaps" - netClrMemoryNumGcHandles = "net_clr_memory.num_gc_handles" - netClrMemoryNumOfPinnedObjects = "net_clr_memory.num_of_pinned_objects" - netClrMemoryNumTotalCommittedBytes = "net_clr_memory.num_total_committed_bytes" - netClrMemoryNumTotalReservedBytes = "net_clr_memory.num_total_reserved_bytes" - netClrMemoryPctTimeInGc = "net_clr_memory.pct_time_in_gc" -) - -var metricSet = map[string]monitors.MetricInfo{ - netClrExceptionsNumExcepsThrownSec: {Type: datapoint.Gauge}, - netClrLocksandthreadsContentionRateSec: {Type: datapoint.Gauge}, - netClrLocksandthreadsCurrentQueueLength: {Type: datapoint.Gauge}, - netClrLocksandthreadsNumOfCurrentLogicalThreads: {Type: datapoint.Gauge}, - netClrLocksandthreadsNumOfCurrentPhysicalThreads: {Type: datapoint.Gauge}, - netClrMemoryNumBytesInAllHeaps: {Type: datapoint.Gauge}, - netClrMemoryNumGcHandles: {Type: datapoint.Gauge}, - netClrMemoryNumOfPinnedObjects: {Type: datapoint.Gauge}, - netClrMemoryNumTotalCommittedBytes: {Type: datapoint.Gauge}, - netClrMemoryNumTotalReservedBytes: {Type: datapoint.Gauge}, - netClrMemoryPctTimeInGc: {Type: datapoint.Gauge}, -} - -var defaultMetrics = map[string]bool{} - -var groupMetricsMap = map[string][]string{} - -var monitorMetadata = monitors.Metadata{ - MonitorType: "dotnet", - DefaultMetrics: defaultMetrics, - Metrics: metricSet, - SendUnknown: false, - Groups: groupSet, - GroupMetricsMap: groupMetricsMap, - SendAll: true, -} diff --git a/internal/signalfx-agent/pkg/monitors/dotnet/metadata.yaml b/internal/signalfx-agent/pkg/monitors/dotnet/metadata.yaml deleted file mode 100644 index a53c92cfbb..0000000000 --- a/internal/signalfx-agent/pkg/monitors/dotnet/metadata.yaml +++ /dev/null @@ -1,84 +0,0 @@ -monitors: -- dimensions: - doc: | - **This monitor is deprecated in favor of metrics collected by the - [Splunk Distribution of OpenTelemetry .NET](https://docs.splunk.com/observability/en/gdi/get-data-in/application/otel-dotnet/configuration/dotnet-metrics-attributes.html) - and the [SignalFx Instrumentation for .NET](https://docs.splunk.com/observability/en/gdi/get-data-in/application/dotnet/configuration/dotnet-metrics-attributes.html). - Please, update any monitoring configuration to use the metrics provided by the - instrumentation as this monitor will be removed in February 2025.** - - (Windows Only) This monitor reports metrics for .NET applications. - - The most critical .NET performance counters - * exceptions - * logical threads - * physical threads - * heap bytes - * time in GC - * committed bytes - * pinned objects - - ## Windows Performance Counters - The underlying source for these metrics are Windows Performance Counters. - Most of the performance counters that we query in this monitor are actually Gauges - that represent rates per second and percentages. - - This monitor reports the instantaneous values for these Windows Performance Counters. - This means that in between a collection interval, spikes could occur on the - Performance Counters. The best way to mitigate this limitation is to increase - the reporting interval on this monitor to collect more frequently. - - Sample YAML configuration: - - ```yaml - monitors: - - type: dotnet - ``` - sendAll: true - metrics: - net_clr_exceptions.num_exceps_thrown_sec: - description: The number of exceptions thrown by .NET applications. - default: false - type: gauge - net_clr_locksandthreads.contention_rate_sec: - description: The rate of thread of thread contention per second for .NET applications. - default: false - type: gauge - net_clr_locksandthreads.current_queue_length: - description: The current thread queue length for .NET applications. - default: false - type: gauge - net_clr_locksandthreads.num_of_current_logical_threads: - description: The number of current logical threads for .NET applications. - default: false - type: gauge - net_clr_locksandthreads.num_of_current_physical_threads: - description: The number of current physical threads for .NET applications. - default: false - type: gauge - net_clr_memory.num_bytes_in_all_heaps: - description: The number of bytes in all heaps for .NET applications. - default: false - type: gauge - net_clr_memory.num_gc_handles: - description: The number of garbage collection handles held by .NET applications. - default: false - type: gauge - net_clr_memory.num_of_pinned_objects: - description: The number of objects pinned in memory by .NET applications. - default: false - type: gauge - net_clr_memory.num_total_committed_bytes: - description: The total number of bytes committed to memory by .NET applications. - default: false - type: gauge - net_clr_memory.num_total_reserved_bytes: - description: The total number of bytes reserved by .NET applications. - default: false - type: gauge - net_clr_memory.pct_time_in_gc: - description: The percentage of time spent garbage collecting by .NET applications. - default: false - type: gauge - monitorType: dotnet - properties: