From e21dbef6c1752dafb71506becdbf316aad94a793 Mon Sep 17 00:00:00 2001 From: SuperQ Date: Mon, 22 Jan 2024 17:42:44 +0100 Subject: [PATCH] Update json reading logging 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 https://github.com/prometheus-community/smartctl_exporter/issues/197 Signed-off-by: SuperQ --- readjson.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/readjson.go b/readjson.go index 4b7d4ca..0105c55 100644 --- a/readjson.go +++ b/readjson.go @@ -63,7 +63,8 @@ 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) @@ -71,6 +72,7 @@ func readSMARTctl(logger log.Logger, device string) (gjson.Result, bool) { 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 }