smart: add notifications when a value is below the threshold
authorVincent Bernat <vincent@bernat.im>
Mon, 10 Nov 2014 10:36:58 +0000 (11:36 +0100)
committerVincent Bernat <Vincent.Bernat@exoscale.ch>
Mon, 10 Nov 2014 21:14:05 +0000 (22:14 +0100)
src/smart.c

index 6c01e67..f0c189e 100644 (file)
@@ -108,6 +108,25 @@ static void smart_handle_disk_attribute(SkDisk *d, const SkSmartAttributeParsedD
   sstrncpy (vl.type_instance, a->name, sizeof (vl.type_instance));
 
   plugin_dispatch_values (&vl);
+
+  if (a->threshold_valid && a->current_value < a->threshold)
+  {
+    notification_t notif = { NOTIF_WARNING,
+                             cdtime (),
+                             "",
+                             "",
+                             "smart", "",
+                             "smart_attribute",
+                             "",
+                             NULL };
+    sstrncpy (notif.host, hostname_g, sizeof (notif.host));
+    sstrncpy (notif.plugin_instance, dev, sizeof (notif.plugin_instance));
+    sstrncpy (notif.type_instance, a->name, sizeof (notif.type_instance));
+    ssnprintf (notif.message, sizeof (notif.message),
+               "attribute %s is below allowed threshold (%d < %d)",
+               a->name, a->current_value, a->threshold);
+    plugin_dispatch_notification (&notif);
+  }
 }
 
 static void smart_handle_disk (const char *dev)