From 4891e23d29ca95655f0d01d5267dcca45ffbcb0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Thu, 19 Jun 2025 16:59:19 +0200 Subject: [PATCH] fix: added count checks (#2083) --- internal/collector/ad/ad.go | 2 ++ internal/collector/adfs/adfs.go | 2 ++ internal/collector/cache/cache.go | 2 ++ internal/collector/dhcp/dhcp.go | 2 ++ internal/collector/dns/dns.go | 2 ++ internal/collector/system/system.go | 2 ++ internal/collector/time/time.go | 4 +++- 7 files changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/collector/ad/ad.go b/internal/collector/ad/ad.go index 538f1da6..0ad49cbf 100644 --- a/internal/collector/ad/ad.go +++ b/internal/collector/ad/ad.go @@ -522,6 +522,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DirectoryServices (AD) metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DirectoryServices (AD) metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/adfs/adfs.go b/internal/collector/adfs/adfs.go index fa54cb2d..38a092a1 100644 --- a/internal/collector/adfs/adfs.go +++ b/internal/collector/adfs/adfs.go @@ -387,6 +387,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect ADFS metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect ADFS metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/cache/cache.go b/internal/collector/cache/cache.go index 1139e229..86072c0b 100644 --- a/internal/collector/cache/cache.go +++ b/internal/collector/cache/cache.go @@ -290,6 +290,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect Cache metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect Cache metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/dhcp/dhcp.go b/internal/collector/dhcp/dhcp.go index 233a9413..18250a4c 100644 --- a/internal/collector/dhcp/dhcp.go +++ b/internal/collector/dhcp/dhcp.go @@ -405,6 +405,8 @@ func (c *Collector) collectServerMetrics(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DHCP Server metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DHCP Server metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/dns/dns.go b/internal/collector/dns/dns.go index dbfa8228..5cf846cf 100644 --- a/internal/collector/dns/dns.go +++ b/internal/collector/dns/dns.go @@ -347,6 +347,8 @@ func (c *Collector) collectMetrics(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DNS metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DNS metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/system/system.go b/internal/collector/system/system.go index 4d657830..043a9a06 100644 --- a/internal/collector/system/system.go +++ b/internal/collector/system/system.go @@ -159,6 +159,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect System metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect System metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/time/time.go b/internal/collector/time/time.go index df0ccdfc..e878ba7b 100644 --- a/internal/collector/time/time.go +++ b/internal/collector/time/time.go @@ -305,7 +305,9 @@ func (c *Collector) collectClockSource(ch chan<- prometheus.Metric) error { func (c *Collector) collectNTP(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { - return fmt.Errorf("failed to collect time metrics: %w", err) + return fmt.Errorf("failed to collect Windows Time Service metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect Windows Time Service metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric(