diff --git a/collector/pkg/collector/metrics.go b/collector/pkg/collector/metrics.go index 5d453dd..10bb98d 100644 --- a/collector/pkg/collector/metrics.go +++ b/collector/pkg/collector/metrics.go @@ -4,6 +4,12 @@ import ( "bytes" "encoding/json" "fmt" + "net/url" + "os" + "os/exec" + "strings" + "time" + "github.com/analogj/scrutiny/collector/pkg/common/shell" "github.com/analogj/scrutiny/collector/pkg/config" "github.com/analogj/scrutiny/collector/pkg/detect" @@ -11,10 +17,6 @@ import ( "github.com/analogj/scrutiny/collector/pkg/models" "github.com/samber/lo" "github.com/sirupsen/logrus" - "net/url" - "os" - "os/exec" - "strings" ) type MetricsCollector struct { @@ -90,8 +92,9 @@ func (mc *MetricsCollector) Run() error { //go mc.Collect(&wg, device.WWN, device.DeviceName, device.DeviceType) mc.Collect(device.WWN, device.DeviceName, device.DeviceType) - // TODO: we may need to sleep for between each call to smartctl -a - //time.Sleep(30 * time.Millisecond) + if mc.config.GetInt("commands.metrics_smartctl_wait") > 0 { + time.Sleep(time.Duration(mc.config.GetInt("commands.metrics_smartctl_wait")) * time.Second) + } } //mc.logger.Infoln("Main: Waiting for workers to finish") @@ -113,7 +116,7 @@ func (mc *MetricsCollector) Validate() error { return nil } -//func (mc *MetricsCollector) Collect(wg *sync.WaitGroup, deviceWWN string, deviceName string, deviceType string) { +// func (mc *MetricsCollector) Collect(wg *sync.WaitGroup, deviceWWN string, deviceName string, deviceType string) { func (mc *MetricsCollector) Collect(deviceWWN string, deviceName string, deviceType string) { //defer wg.Done() if len(deviceWWN) == 0 { diff --git a/collector/pkg/config/config.go b/collector/pkg/config/config.go index 501a89c..d44a54b 100644 --- a/collector/pkg/config/config.go +++ b/collector/pkg/config/config.go @@ -47,6 +47,7 @@ func (c *configuration) Init() error { c.SetDefault("commands.metrics_scan_args", "--scan --json") c.SetDefault("commands.metrics_info_args", "--info --json") c.SetDefault("commands.metrics_smart_args", "--xall --json") + c.SetDefault("commands.metrics_smartctl_wait", 0) //configure env variable parsing. c.SetEnvPrefix("COLLECTOR") diff --git a/example.collector.yaml b/example.collector.yaml index d1fc9f1..0469610 100644 --- a/example.collector.yaml +++ b/example.collector.yaml @@ -81,6 +81,7 @@ devices: # metrics_scan_args: '--scan --json' # used to detect devices # metrics_info_args: '--info --json' # used to determine device unique ID & register device with Scrutiny # metrics_smart_args: '--xall --json' # used to retrieve smart data for each device. +# metrics_smartctl_wait: 0 # time to wait in seconds between each disk's check ########################################################################################################################