X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsmart.c;h=2207bd6722449f4de11c3b89a976817ba8702558;hb=08a2128ac248150b50f9c54c9c71f573e54df3c3;hp=6c01e677d94b8ac4647b99ab95263a5648f0525f;hpb=5e77bd677c549c4c1f81b8b8f7d78b8fd193749a;p=collectd.git diff --git a/src/smart.c b/src/smart.c index 6c01e677..2207bd67 100644 --- a/src/smart.c +++ b/src/smart.c @@ -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 (¬if); + } } static void smart_handle_disk (const char *dev) @@ -234,6 +253,7 @@ static int smart_read (void) /* Query status with libatasmart */ smart_handle_disk (devpath); + udev_device_unref (dev); } udev_enumerate_unref (enumerate);