From e69c565871e2d4e8316e047f15a8879774084afd Mon Sep 17 00:00:00 2001 From: Egon Rijpkema Date: Mon, 19 Apr 2021 21:47:02 +0200 Subject: [PATCH] Made the removal of non numeric values more robust. --- nvidia_smi_exporter.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nvidia_smi_exporter.go b/nvidia_smi_exporter.go index 17cca18..a93752c 100644 --- a/nvidia_smi_exporter.go +++ b/nvidia_smi_exporter.go @@ -45,6 +45,11 @@ func metrics(response http.ResponseWriter, request *http.Request) { name := fmt.Sprintf("%s[%s]", row[0], row[1]) for idx, value := range row[2:] { metric := strings.Replace(metricList[idx], ".", "_", -1) + // Non numerical values like [N/A] wil break prometeus when a number is expected. + _, err := strconv.Atoi(value) + if err != nil { + value = "-1" + } result = fmt.Sprintf( "%s%s{gpu=\"%s\"} %s\n", result, metric, name, value) @@ -54,7 +59,6 @@ func metrics(response http.ResponseWriter, request *http.Request) { deviceCount, err = strconv.Atoi(max_id) result = fmt.Sprintf( "%sdeviceCount %d\n", result, deviceCount+1) - result = strings.Replace(result, "[Not Supported]", "-1", -1) }