[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