From: Florian Forster Date: Fri, 2 Oct 2009 07:50:20 +0000 (+0200) Subject: Merge branch 'collectd-4.7' into collectd-4.8 X-Git-Tag: collectd-4.8.1~3 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=ec6204a39b67229bfb05b763d1ceea135150880d;hp=-c Merge branch 'collectd-4.7' into collectd-4.8 Conflicts: README --- ec6204a39b67229bfb05b763d1ceea135150880d diff --combined README index 50716172,f9e49f02..c5c2b7fa --- a/README +++ b/README @@@ -33,9 -33,6 +33,6 @@@ Feature Batterycharge, -current and voltage of ACPI and PMU based laptop batteries. - - curl - Parse statistics from websites using regular expressions. - - bind Name server and resolver statistics from the `statistics-channel' interface of BIND 9.5, 9,6 and later. @@@ -50,10 -47,9 +47,13 @@@ - cpufreq CPU frequency (For laptops with speed step or a similar technology) + - curl + Parse statistics from websites using regular expressions. + + - curl_json + Retrieves JSON data via cURL and parses it according to user + configuration. + - dbi Executes SQL statements on various databases and interprets the returned data. @@@ -121,10 -117,6 +121,10 @@@ - libvirt CPU, disk and network I/O statistics from virtual machines. + - madwifi + Queries very detailed usage statistics from wireless LAN adapters and + interfaces that use the Atheros chipset and the MadWifi driver. + - mbmon Motherboard sensors: temperature, fanspeed and voltage information, using mbmon(1). @@@ -173,10 -165,6 +173,10 @@@ Network UPS tools: UPS current, voltage, power, charge, utilisation, temperature, etc. See upsd(8). + - olsr + Queries routing information from the “Optimized Link State Routing” + daemon. + - onewire (EXPERIMENTAL!) Read onewire sensors using the owcapu library of the owfs project. Please read in collectd.conf(5) why this plugin is experimental. @@@ -250,10 -238,6 +250,10 @@@ - thermal Linux ACPI thermal zone information. + - tokyotyrant + Reads the number of records and file size from a running Tokyo Tyrant + server. + - uptime System uptime statistics. @@@ -274,9 -258,6 +274,9 @@@ - xmms Bitrate and frequency of music played with XMMS. + - zfs_arc + Statistics for ZFS' “Adaptive Replacement Cache” (ARC). + * Output can be written or send to various destinations by the following plugins: @@@ -311,11 -292,6 +311,11 @@@ needed. Please read collectd-unixsock(5) for a description on how that's done. + - write_http + Sends the values collected by collectd to a web-server using HTTP POST + requests. The transmitted data is either in a form understood by the + Exec plugin or formatted in JSON. + * Logging is, as everything in collectd, provided by plugins. The following plugins keep up informed about what's going on: @@@ -358,9 -334,6 +358,9 @@@ * Value processing can be controlled using the "filter chain" infrastructure and "matches" and "targets". The following plugins are available: + - match_empty_counter + Match counter values which are currently zero. + - match_regex Match values by their identifier based on regular expressions. @@@ -459,8 -432,7 +459,8 @@@ Prerequisite Used by the `oracle' plugin. * libcurl (optional) - If you want to use the `apache', `ascent', `curl' or `nginx' plugin. + If you want to use the `apache', `ascent', `curl', `nginx', or `write_http' + plugin. * libdbi (optional) @@@ -571,9 -543,6 +571,9 @@@ * libxmms (optional) + * libyajl (optional) + Parse JSON data. This is needed for the `curl_json' plugin. + Configuring / Compiling / Installing ------------------------------------ diff --combined src/df.c index 194c2573,ce1ef107..462e1c67 --- a/src/df.c +++ b/src/df.c @@@ -1,7 -1,6 +1,7 @@@ /** * collectd - src/df.c * Copyright (C) 2005-2007 Florian octo Forster + * Copyright (C) 2009 Paul Sadauskas * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@@ -18,7 -17,6 +18,7 @@@ * * Authors: * Florian octo Forster + * Paul Sadauskas **/ #include "collectd.h" @@@ -50,16 -48,14 +50,16 @@@ static const char *config_keys[] "MountPoint", "FSType", "IgnoreSelected", - NULL + "ReportByDevice" }; -static int config_keys_num = 4; +static int config_keys_num = STATIC_ARRAY_SIZE (config_keys); 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) @@@ -96,7 -92,9 +96,7 @@@ static int df_config (const char *key, } else if (strcasecmp (key, "IgnoreSelected") == 0) { - if ((strcasecmp (value, "True") == 0) - || (strcasecmp (value, "Yes") == 0) - || (strcasecmp (value, "On") == 0)) + if (IS_TRUE (value)) { ignorelist_set_invert (il_device, 0); ignorelist_set_invert (il_mountpoint, 0); @@@ -110,13 -108,6 +110,13 @@@ } return (0); } + else if (strcasecmp (key, "ReportByDevice") == 0) + { + if (IS_TRUE (value)) + by_device = true; + + return (0); + } return (-1); } @@@ -136,7 -127,7 +136,7 @@@ static void df_submit (char *df_name sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "df", sizeof (vl.plugin)); sstrncpy (vl.plugin_instance, "", sizeof (vl.plugin_instance)); - sstrncpy (vl.type, "df", sizeof (vl.host)); + sstrncpy (vl.type, "df", sizeof (vl.type)); sstrncpy (vl.type_instance, df_name, sizeof (vl.type_instance)); plugin_dispatch_values (&vl); @@@ -156,7 -147,7 +156,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) @@@ -164,6 -155,22 +164,6 @@@ for (mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next) { - 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 < len; i++) - if (mnt_name[i] == '/') - mnt_name[i] = '-'; - } - if (ignorelist_match (il_device, (mnt_ptr->spec_device != NULL) ? mnt_ptr->spec_device @@@ -190,40 -197,7 +190,40 @@@ df_free = statbuf.f_bfree * blocksize; df_used = (statbuf.f_blocks - statbuf.f_bfree) * blocksize; - df_submit (mnt_name, df_used, df_free); + if (by_device) + { + /* eg, /dev/hda1 -- strip off the "/dev/" */ + if (strncmp (mnt_ptr->spec_device, "/dev/", strlen ("/dev/")) == 0) + sstrncpy (disk_name, mnt_ptr->spec_device + strlen ("/dev/"), sizeof (disk_name)); + else + sstrncpy (disk_name, mnt_ptr->spec_device, sizeof (disk_name)); + + if (strlen(disk_name) < 1) + { + DEBUG("df: no device name name for mountpoint %s, skipping", mnt_ptr->dir); + continue; + } + } + 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 < len; i++) + if (disk_name[i] == '/') + disk_name[i] = '-'; + } + } + + df_submit (disk_name, df_used, df_free); } cu_mount_freelist (mnt_list);