Skip to content

Commit 7faefa9

Browse files
committed
fix(iis): align metric types with Prometheus conventions Correct 9 metric type misclassifications in IIS collectors: - Changed 8 metrics from Counter to Gauge (timestamps, maximums, active counts, rates) - Changed 1 metric from Gauge to Counter (cumulative rejection total)
1 parent ccd9771 commit 7faefa9

File tree

5 files changed

+40
-16
lines changed

5 files changed

+40
-16
lines changed

internal/collector/iis/iis_app_pool_was.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,10 @@ func (c *Collector) buildAppPoolWAS() error {
168168
}
169169

170170
func (c *Collector) collectAppPoolWAS(ch chan<- prometheus.Metric) error {
171+
if c.perfDataCollectorAppPoolWAS == nil {
172+
return nil
173+
}
174+
171175
err := c.perfDataCollectorAppPoolWAS.Collect(&c.perfDataObjectAppPoolWAS)
172176
if err != nil {
173177
return fmt.Errorf("failed to collect APP_POOL_WAS metrics: %w", err)
@@ -239,7 +243,7 @@ func (c *Collector) collectAppPoolWAS(ch chan<- prometheus.Metric) error {
239243

240244
ch <- prometheus.MustNewConstMetric(
241245
c.totalApplicationPoolUptime,
242-
prometheus.CounterValue,
246+
prometheus.GaugeValue,
243247
data.TotalApplicationPoolUptime,
244248
data.Name,
245249
)

internal/collector/iis/iis_http_service_request_queues.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ func (c *Collector) buildHttpServiceRequestQueues() error {
8888
}
8989

9090
func (c *Collector) collectHttpServiceRequestQueues(ch chan<- prometheus.Metric) error {
91+
if c.perfDataCollectorHttpServiceRequestQueues == nil {
92+
return nil
93+
}
94+
9195
err := c.perfDataCollectorHttpServiceRequestQueues.Collect(&c.perfDataObjectHttpServiceRequestQueues)
9296
if err != nil {
9397
return fmt.Errorf("failed to collect Http Service Request Queues metrics: %w", err)
@@ -113,7 +117,7 @@ func (c *Collector) collectHttpServiceRequestQueues(ch chan<- prometheus.Metric)
113117

114118
ch <- prometheus.MustNewConstMetric(
115119
c.httpRequestQueuesTotalRejectedRequest,
116-
prometheus.GaugeValue,
120+
prometheus.CounterValue,
117121
data.HttpRequestQueuesTotalRejectedRequests,
118122
data.Name,
119123
)

internal/collector/iis/iis_w3svc_w3wp.go

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -366,25 +366,25 @@ func (c *Collector) buildW3SVCW3WP() error {
366366
)
367367
c.w3SVCW3WPWebSocketRequestsActive = prometheus.NewDesc(
368368
prometheus.BuildFQName(types.Namespace, Name, "worker_current_websocket_requests"),
369-
"",
369+
"Current number of active WebSocket requests in the worker process",
370370
[]string{"app", "pid"},
371371
nil,
372372
)
373373
c.w3SVCW3WPWebSocketConnectionAttempts = prometheus.NewDesc(
374-
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_attempts_total"),
375-
"",
374+
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_attempts_per_sec"),
375+
"WebSocket connection attempts per second",
376376
[]string{"app", "pid"},
377377
nil,
378378
)
379379
c.w3SVCW3WPWebSocketConnectionsAccepted = prometheus.NewDesc(
380-
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_accepted_total"),
381-
"",
380+
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_accepted_per_sec"),
381+
"WebSocket connections accepted per second",
382382
[]string{"app", "pid"},
383383
nil,
384384
)
385385
c.w3SVCW3WPWebSocketConnectionsRejected = prometheus.NewDesc(
386-
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_rejected_total"),
387-
"",
386+
prometheus.BuildFQName(types.Namespace, Name, "worker_websocket_connection_rejected_per_sec"),
387+
"WebSocket connections rejected per second",
388388
[]string{"app", "pid"},
389389
nil,
390390
)
@@ -407,6 +407,10 @@ func (c *Collector) collectW3SVCW3WP(ch chan<- prometheus.Metric) error {
407407
}
408408

409409
func (c *Collector) collectW3SVCW3WPv8(ch chan<- prometheus.Metric) error {
410+
if c.w3SVCW3WPPerfDataCollectorV8 == nil {
411+
return nil
412+
}
413+
410414
err := c.w3SVCW3WPPerfDataCollectorV8.Collect(&c.perfDataObjectW3SVCW3WPV8)
411415
if err != nil {
412416
return fmt.Errorf("failed to collect APP_POOL_WAS metrics: %w", err)
@@ -471,31 +475,31 @@ func (c *Collector) collectW3SVCW3WPv8(ch chan<- prometheus.Metric) error {
471475

472476
ch <- prometheus.MustNewConstMetric(
473477
c.w3SVCW3WPWebSocketRequestsActive,
474-
prometheus.CounterValue,
478+
prometheus.GaugeValue,
475479
data.W3SVCW3WPWebSocketRequestsActive,
476480
name,
477481
pid,
478482
)
479483

480484
ch <- prometheus.MustNewConstMetric(
481485
c.w3SVCW3WPWebSocketConnectionAttempts,
482-
prometheus.CounterValue,
486+
prometheus.GaugeValue,
483487
data.W3SVCW3WPWebSocketConnectionAttempts,
484488
name,
485489
pid,
486490
)
487491

488492
ch <- prometheus.MustNewConstMetric(
489493
c.w3SVCW3WPWebSocketConnectionsAccepted,
490-
prometheus.CounterValue,
494+
prometheus.GaugeValue,
491495
data.W3SVCW3WPWebSocketConnectionsAccepted,
492496
name,
493497
pid,
494498
)
495499

496500
ch <- prometheus.MustNewConstMetric(
497501
c.w3SVCW3WPWebSocketConnectionsRejected,
498-
prometheus.CounterValue,
502+
prometheus.GaugeValue,
499503
data.W3SVCW3WPWebSocketConnectionsRejected,
500504
name,
501505
pid,
@@ -506,6 +510,10 @@ func (c *Collector) collectW3SVCW3WPv8(ch chan<- prometheus.Metric) error {
506510
}
507511

508512
func (c *Collector) collectW3SVCW3WPv7(ch chan<- prometheus.Metric) error {
513+
if c.w3SVCW3WPPerfDataCollector == nil {
514+
return nil
515+
}
516+
509517
err := c.w3SVCW3WPPerfDataCollector.Collect(&c.perfDataObjectW3SVCW3WP)
510518
if err != nil {
511519
return fmt.Errorf("failed to collect APP_POOL_WAS metrics: %w", err)
@@ -539,7 +547,7 @@ func (c *Collector) collectW3SVCW3WPv7(ch chan<- prometheus.Metric) error {
539547

540548
ch <- prometheus.MustNewConstMetric(
541549
c.w3SVCW3WPMaximumThreads,
542-
prometheus.CounterValue,
550+
prometheus.GaugeValue,
543551
data.W3SVCW3WPMaximumThreads,
544552
name,
545553
pid,
@@ -555,7 +563,7 @@ func (c *Collector) collectW3SVCW3WPv7(ch chan<- prometheus.Metric) error {
555563

556564
ch <- prometheus.MustNewConstMetric(
557565
c.w3SVCW3WPRequestsActive,
558-
prometheus.CounterValue,
566+
prometheus.GaugeValue,
559567
data.W3SVCW3WPRequestsActive,
560568
name,
561569
pid,
@@ -579,7 +587,7 @@ func (c *Collector) collectW3SVCW3WPv7(ch chan<- prometheus.Metric) error {
579587

580588
ch <- prometheus.MustNewConstMetric(
581589
c.w3SVCW3WPMaximumFileCacheMemoryUsage,
582-
prometheus.CounterValue,
590+
prometheus.GaugeValue,
583591
data.W3SVCW3WPMaximumFileCacheMemoryUsage,
584592
name,
585593
pid,

internal/collector/iis/iis_web_service.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,10 @@ func (c *Collector) buildWebService() error {
244244
}
245245

246246
func (c *Collector) collectWebService(ch chan<- prometheus.Metric) error {
247+
if c.perfDataCollectorWebService == nil {
248+
return nil
249+
}
250+
247251
err := c.perfDataCollectorWebService.Collect(&c.perfDataObjectWebService)
248252
if err != nil {
249253
return fmt.Errorf("failed to collect Web Service metrics: %w", err)

internal/collector/iis/iis_web_service_cache.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ func (c *Collector) buildWebServiceCache() error {
282282
}
283283

284284
func (c *Collector) collectWebServiceCache(ch chan<- prometheus.Metric) error {
285+
if c.serviceCachePerfDataCollector == nil {
286+
return nil
287+
}
288+
285289
err := c.serviceCachePerfDataCollector.Collect(&c.perfDataObjectServiceCache)
286290
if err != nil {
287291
return fmt.Errorf("failed to collect Web Service Cache metrics: %w", err)

0 commit comments

Comments
 (0)