[collectd] [PATCH 1/3] option for df to report by mountpoint of devicename

psadauskas at gmail.com psadauskas at gmail.com
Wed Jul 29 05:45:55 CEST 2009


The git subject line pretty much sums this one up.

Allows df to report datapoints using the device name, according to a config  
parameter. This is so it matches up with the "disk" plugin, and the stats  
can be correlated without having to know the system's mount table.

Also available for merging here: http://github.com/absperf/collectd/tree/df

Thanks,
Paul Sadauskas

On Jul 28, 2009 9:41pm, Paul Sadauskas <psadauskas at gmail.com> wrote:


> Signed-off-by: Paul Sadauskas psadauskas at gmail.com>

> ---

> src/df.c | 57 +++++++++++++++++++++++++++++++++++++++------------------

> 1 files changed, 39 insertions(+), 18 deletions(-)



> diff --git a/src/df.cb/src/df.c

> index 38079d8..6319b18 100644

> --- a/src/df.c

> +++ b/src/df.c

> @@ -48,14 +48,17 @@ static const char *config_keys[] =

> "MountPoint",

> "FSType",

> "IgnoreSelected",

> + "ReportByDevice",

> NULL

> };

> -static int config_keys_num = 4;

> +static int config_keys_num = 5;



> static ignorelist_t *il_device = NULL;

> static ignorelist_t *il_mountpoint = NULL;

> static ignorelist_t *il_fstype = NULL;



> +static bool by_device = false;

> +

> static int df_init (void)

> {

> if (il_device == NULL)

> @@ -108,6 +111,16 @@ static int df_config (const char *key, const char  
> *value)

> }

> return (0);

> }

> + else if (strcasecmp (key, "ReportByDevice") == 0)

> + {

> + if ((strcasecmp (value, "True") == 0)

> + || (strcasecmp (value, "Yes") == 0)

> + || (strcasecmp (value, "On") == 0))

> + {

> + by_device = false;

> + }

> + return (0);

> + }



> return (-1);

> }

> @@ -147,7 +160,7 @@ static int df_read (void)

> unsigned long long blocksize;

> gauge_t df_free;

> gauge_t df_used;

> - char mnt_name[256];

> + char disk_name[256];



> mnt_list = NULL;

> if (cu_mount_getlist (&mnt_list) == NULL)

> @@ -171,21 +184,29 @@ static int df_read (void)

> df_free = statbuf.f_bfree * blocksize;

> df_used = (statbuf.f_blocks - statbuf.f_bfree) * blocksize;



> - if (strcmp (mnt_ptr->dir, "/") == 0)

> - {

> - sstrncpy (mnt_name, "root", sizeof (mnt_name));

> - }

> - else

> - {

> - int i, len;

> -

> - sstrncpy (mnt_name, mnt_ptr->dir + 1, sizeof (mnt_name));

> - len = strlen (mnt_name);

> -

> - for (i = 0; i
> - if (mnt_name[i] == '/')

> - mnt_name[i] = '-';

> - }

> + if (by_device)

> + {

> + // eg, /dev/hda1 -- strip off the "/dev/"

> + strncpy (disk_name, mnt_ptr->device + 5, sizeof (disk_name));

> + }

> + else

> + {

> + if (strcmp (mnt_ptr->dir, "/") == 0)

> + {

> + sstrncpy (disk_name, "root", sizeof (disk_name));

> + }

> + else

> + {

> + int i, len;

> +

> + sstrncpy (disk_name, mnt_ptr->dir + 1, sizeof (disk_name));

> + len = strlen (disk_name);

> +

> + for (i = 0; i
> + if (disk_name[i] == '/')

> + disk_name[i] = '-';

> + }

> + }



> if (ignorelist_match (il_device,

> (mnt_ptr->spec_device != NULL)

> @@ -197,7 +218,7 @@ static int df_read (void)

> if (ignorelist_match (il_fstype, mnt_ptr->type))

> continue;



> - df_submit (mnt_name, df_used, df_free);

> + df_submit (disk_name, df_used, df_free);

> }



> cu_mount_freelist (mnt_list);

> --

> 1.6.3.3



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.verplant.org/pipermail/collectd/attachments/20090729/79ddc948/attachment.htm 


More information about the collectd mailing list