diff --git a/collector/iis.go b/collector/iis.go index 5a8ad337..6cc961c6 100644 --- a/collector/iis.go +++ b/collector/iis.go @@ -30,7 +30,12 @@ func getIISVersion() simple_version { log.Warn("Couldn't open registry to determine IIS version:", err) return simple_version{} } - defer k.Close() + defer func() { + err = k.Close() + if err != nil { + log.Warnf("Failed to close registry key: %v", err) + } + }() major, _, err := k.GetIntegerValue("MajorVersion") if err != nil { diff --git a/collector/mssql.go b/collector/mssql.go index 22cb8733..b322f7d7 100644 --- a/collector/mssql.go +++ b/collector/mssql.go @@ -44,7 +44,12 @@ func getMSSQLInstances() mssqlInstancesType { log.Warn("Couldn't open registry to determine SQL instances:", err) return sqlDefaultInstance } - defer k.Close() + defer func() { + err = k.Close() + if err != nil { + log.Warnf("Failed to close registry key: %v", err) + } + }() instanceNames, err := k.ReadValueNames(0) if err != nil { diff --git a/collector/process.go b/collector/process.go index 0a5c6f13..5204ecd5 100644 --- a/collector/process.go +++ b/collector/process.go @@ -194,7 +194,7 @@ func (c *ProcessCollector) collect(ch chan<- prometheus.Metric) (*prometheus.Des var dst_wp []WorkerProcess q_wp := queryAll(&dst_wp) if err := wmi.QueryNamespace(q_wp, &dst_wp, "root\\WebAdministration"); err != nil { - log.Warnf("failed querying worker processes: %s", err) + log.Debugf("Could not query WebAdministration namespace for IIS worker processes: %v. Skipping", err) } for _, process := range dst { diff --git a/collector/textfile.go b/collector/textfile.go index f5a61dc7..b0a1cb73 100644 --- a/collector/textfile.go +++ b/collector/textfile.go @@ -244,7 +244,10 @@ fileLoop: continue } parsedFamilies, err := parser.TextToMetricFamilies(r) - file.Close() + closeErr := file.Close() + if closeErr != nil { + log.Warnf("Error closing file: %v", err) + } if err != nil { log.Errorf("Error parsing %q: %v", path, err) error = 1.0 diff --git a/exporter.go b/exporter.go index ddf8bbeb..8c9cbeab 100644 --- a/exporter.go +++ b/exporter.go @@ -4,7 +4,6 @@ package main import ( "fmt" - "io" "net/http" "sort" "strings" @@ -222,7 +221,12 @@ func main() { stopCh := make(chan bool) if !isInteractive { - go svc.Run(serviceName, &wmiExporterService{stopCh: stopCh}) + go func() { + err = svc.Run(serviceName, &wmiExporterService{stopCh: stopCh}) + if err != nil { + log.Errorf("Failed to start service: %v", err) + } + }() } collectors, err := loadCollectors(*enabledCollectors) @@ -259,7 +263,7 @@ func main() { func healthCheck(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") - io.WriteString(w, `{"status":"ok"}`) + fmt.Fprintln(w, `{"status":"ok"}`) } func keys(m map[string]collector.Collector) []string {