Skip to content

Commit

Permalink
Update json reading logging
Browse files Browse the repository at this point in the history
Update the smartctl command reading and parsing of json logging to make
for easier debugging of slow devices by adding a duration to the debug
logging.

For #197

Signed-off-by: SuperQ <[email protected]>
  • Loading branch information
SuperQ committed Jan 22, 2024
1 parent 844af85 commit e21dbef
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion readjson.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,16 @@ func readFakeSMARTctl(logger log.Logger, device string) gjson.Result {

// Get json from smartctl and parse it
func readSMARTctl(logger log.Logger, device string) (gjson.Result, bool) {
level.Debug(logger).Log("msg", "Collecting S.M.A.R.T. counters", "device", device)
level.Debug(logger).Log("msg", "Collecting S.M.A.R.T. json data", "device", device)
start := time.Now()
out, err := exec.Command(*smartctlPath, "--json", "--info", "--health", "--attributes", "--tolerance=verypermissive", "--nocheck=standby", "--format=brief", "--log=error", device).Output()
if err != nil {
level.Warn(logger).Log("msg", "S.M.A.R.T. output reading", "err", err, "device", device)
}
json := parseJSON(string(out))
rcOk := resultCodeIsOk(logger, device, json.Get("smartctl.exit_status").Int())
jsonOk := jsonIsOk(logger, json)
level.Debug(logger).Log("msg", "Reading json data completed", "device", device, "duration", time.Since(start))
return json, rcOk && jsonOk
}

Expand Down

0 comments on commit e21dbef

Please sign in to comment.