Disk space monitoring using CFEngine

Tags:

Problem

You want to monitor free disk space.

Solution

CFEngine has storage promises that can mount file systems and monitor disk space.

bundle agent recipe {

  storage:

    "/var"
      handle => "var_fs_check",
      comment => "var filesystem check",
      volume => min_free_space("13G");
}

In this example we see a message printed if the /var filesystem has less than 13 gigabytes of free space.

root@venus:/home/neil/.cfagent/inputs# cf-agent -f ./recipe.cf 
 !! Disk space under 13631488 kB for volume containing /vars: (12113604
 kB free)
 I: Made in version 'not specified' of './recipe.cf' near line 17
 I: Comment: vars: filesystem check

Gravy

Why stop at passive monitoring? A class can be defined when the file system is filling up. This allows for more actions.

bundle agent recipe {

    storage:

        "/var"
            handle => "var_fs_check",
            comment => "var filesystem check",
            classes => if_notkept("var_full"),
            volume => min_free_space("13G");

    reports:

        var_full::
            "Report: /var has to little free space.";
}

Now the class “var_full” is set. In this example we only create a report but any other action would be possible. Perhaps we can initiate a search for core files and delete them. We could delete aged files from /var/tmp. A package cache could be deleted. An alert could be sent to a central monitoring system. We could even do all of these things.

submit to reddit