diff --git a/metrics.go b/metrics.go index 1ee8708..3b773eb 100644 --- a/metrics.go +++ b/metrics.go @@ -166,4 +166,15 @@ var ( }, nil, ) + metricDeviceStatus = prometheus.NewDesc( + "smartctl_device_status", + "Device status", + []string{ + "device", + "model_family", + "model_name", + "serial_number", + }, + nil, + ) ) diff --git a/smartctl.go b/smartctl.go index 5a5c073..0f800c7 100644 --- a/smartctl.go +++ b/smartctl.go @@ -50,6 +50,7 @@ func (smart *SMARTctl) Collect() { smart.mineTemperatures() smart.minePowerCycleCount() smart.mineDeviceStatistics() + smart.mineDeviceStatus() } func (smart *SMARTctl) mineExitStatus() { @@ -266,3 +267,16 @@ func (smart *SMARTctl) mineLongFlags(json gjson.Result, flags []string) string { } return strings.Join(result, ",") } + +func (smart *SMARTctl) mineDeviceStatus() { + status := smart.json.Get("smart_status") + smart.ch <- prometheus.MustNewConstMetric( + metricDeviceStatus, + prometheus.GaugeValue, + status.Get("passed").Float(), + smart.device.device, + smart.device.family, + smart.device.model, + smart.device.serial, + ) +}