df plugin: Implement the "ReportInodes" option.
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Fri, 2 Oct 2009 09:35:43 +0000 (11:35 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Fri, 2 Oct 2009 09:35:43 +0000 (11:35 +0200)
This option can be used to enable / disable inode statistics collection.

Defaults to "false" for now.

src/collectd.conf.pod
src/df.c

index 7a64189..ae56da3 100644 (file)
@@ -899,6 +899,15 @@ set to "free", "reserved" and "used" as appropriate.
 
 Enabling this option is recommended.
 
+=item B<ReportInodes> B<true>|B<false>
+
+Enables or disables reporting of free, reserved and used inodes. Defaults to
+inode collection being disabled.
+
+Enable this option if inodes are a scarce resource for you, usually because
+many small files are stored on the disk. This is a usual scenario for mail
+transfer agents and web caches.
+
 =back
 
 =head2 Plugin C<disk>
index 66daab2..62775fd 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -51,7 +51,8 @@ static const char *config_keys[] =
        "FSType",
        "IgnoreSelected",
        "ReportByDevice",
-       "ReportReserved"
+       "ReportReserved",
+       "ReportInodes"
 };
 static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
 
@@ -61,6 +62,7 @@ static ignorelist_t *il_fstype = NULL;
 
 static _Bool by_device = false;
 static _Bool report_reserved = false;
+static _Bool report_inodes = false;
 
 static int df_init (void)
 {
@@ -128,6 +130,15 @@ static int df_config (const char *key, const char *value)
 
                return (0);
        }
+       else if (strcasecmp (key, "ReportInodes") == 0)
+       {
+               if (IS_TRUE (value))
+                       report_inodes = true;
+               else
+                       report_inodes = false;
+
+               return (0);
+       }
 
 
        return (-1);
@@ -292,6 +303,7 @@ static int df_read (void)
                }
 
                /* inode handling */
+               if (report_inodes)
                {
                        uint64_t inode_free;
                        uint64_t inode_reserved;