diff --git a/internal/collector/dhcp/dhcp.go b/internal/collector/dhcp/dhcp.go index 18250a4c..8d8046b4 100644 --- a/internal/collector/dhcp/dhcp.go +++ b/internal/collector/dhcp/dhcp.go @@ -56,6 +56,8 @@ var ConfigDefaults = Config{ type Collector struct { config Config + logger *slog.Logger + perfDataCollector *pdh.Collector perfDataObject []perfDataCounterValues @@ -147,7 +149,9 @@ func (c *Collector) Close() error { return nil } -func (c *Collector) Build(_ *slog.Logger, _ *mi.Session) error { +func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error { + c.logger = logger.With(slog.String("collector", Name)) + var err error if slices.Contains(c.config.CollectorsEnabled, subCollectorScopeMetrics) { diff --git a/internal/headers/dhcpsapi/dhcpsapi.go b/internal/headers/dhcpsapi/dhcpsapi.go index 8c7b6d36..0f58f565 100644 --- a/internal/headers/dhcpsapi/dhcpsapi.go +++ b/internal/headers/dhcpsapi/dhcpsapi.go @@ -41,7 +41,7 @@ func GetDHCPV4ScopeStatistics() ([]DHCPV4Scope, error) { var mibInfo *DHCP_MIB_INFO_V5 if err := dhcpGetMibInfoV5(&mibInfo); err != nil { - return nil, err + return nil, fmt.Errorf("dhcpGetMibInfoV5: %w", err) } defer dhcpRpcFreeMemory(unsafe.Pointer(mibInfo)) @@ -56,7 +56,7 @@ func GetDHCPV4ScopeStatistics() ([]DHCPV4Scope, error) { var superScopeTable *DHCP_SUPER_SCOPE_TABLE if err := dhcpGetSuperScopeInfoV4(&superScopeTable); err != nil { - return nil, err + return nil, fmt.Errorf("dhcpGetSuperScopeInfoV4: %w", err) } else if superScopeTable == nil { return nil, errors.New("dhcpGetSuperScopeInfoV4 returned nil") } diff --git a/pkg/collector/collect.go b/pkg/collector/collect.go index a1a66604..47dde3cd 100644 --- a/pkg/collector/collect.go +++ b/pkg/collector/collect.go @@ -31,6 +31,7 @@ import ( "github.com/prometheus-community/windows_exporter/internal/pdh" "github.com/prometheus-community/windows_exporter/internal/types" "github.com/prometheus/client_golang/prometheus" + "golang.org/x/sys/windows" ) type collectorStatus struct { @@ -210,8 +211,10 @@ func (c *Collection) collectCollector(ch chan<- prometheus.Metric, logger *slog. slogAttrs := make([]slog.Attr, 0) + result := "succeeded" + if err != nil { - if !errors.Is(err, pdh.ErrNoData) && !errors.Is(err, types.ErrNoData) { + if !errors.Is(err, pdh.ErrNoData) && !errors.Is(err, types.ErrNoData) && !errors.Is(err, windows.EPT_S_NOT_REGISTERED) { if errors.Is(err, pdh.ErrPerformanceCounterNotInitialized) || errors.Is(err, mi.MI_RESULT_INVALID_NAMESPACE) { err = fmt.Errorf("%w. Check application logs from initialization pharse for more information", err) } @@ -225,9 +228,13 @@ func (c *Collection) collectCollector(ch chan<- prometheus.Metric, logger *slog. } slogAttrs = append(slogAttrs, slog.Any("err", err)) + + result = "succeeded with warnings" } - logger.LogAttrs(ctx, slog.LevelDebug, fmt.Sprintf("collector %s succeeded after %s, resulting in %d metrics", name, duration, numMetrics), + logger.LogAttrs(ctx, slog.LevelDebug, fmt.Sprintf( + "collector %s %s after %s, resulting in %d metrics", name, result, duration, numMetrics, + ), slogAttrs..., )