From: Florian Forster Date: Sun, 13 Sep 2009 12:32:34 +0000 (+0200) Subject: Merge branch 'collectd-4.7' into collectd-4.8 X-Git-Tag: collectd-4.8.0~6 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=79c87aeda9172e219a842e393c6499c8bf37662a;p=collectd.git Merge branch 'collectd-4.7' into collectd-4.8 Conflicts: ChangeLog contrib/collection3/etc/collection.conf src/df.c version-gen.sh --- 79c87aeda9172e219a842e393c6499c8bf37662a diff --cc ChangeLog index 0838f8fe,f88135ff..64006dbb --- a/ChangeLog +++ b/ChangeLog @@@ -1,51 -1,35 +1,83 @@@ +2009-09-13, Version 4.8.0 + + * collectd: Two new data source types, “DERIVE” and “ABSOLUTE”, have + been added. “DERIVE” can be used for counters that are reset + occasionally. Thanks to Mariusz Gronczewski for implementing this. + * thresholds: The advanced threshold options “Percentage”, “Hits”, and + “Hysteresis” have been added. Thanks to Andrés J. Díaz for hit + patches. + * curl_json plugin: The new cURL-JSON plugin reads JSON files using + the cURL library and parses the contents according to user + specification. Among other things, this allows to read statistics + from a CouchDB instance. Thanks to Doug MacEachern for the patch. + * df plugin: Using the new “ReportByDevice” option the device rather + than the mount point can be used to identify partitions. Thanks to + Paul Sadauskas for the patch. + * dns plugin: The possibility to ignore numeric QTypes has been added. + Thanks to Mirko Buffoni for the patch. + * GenericJMX plugin: The new, Java-based GenericJMX plugin allows to + query arbitrary data from a Java process using the “Java Management + Extensions” (JMX). + * madwifi plugin: The new MadWifi plugin collects information about + Atheros wireless LAN chipsets from the MadWifi driver. Thanks to + Ondrej Zajicek for his patches. + * network plugin: The receive- and send-buffer-sizes have been made + configurable, allowing for bigger and smaller packets. Thanks to + Aman Gupta for the patch. + * olsrd plugin: The new OLSRd plugin queries routing information from + the “Optimized Link State Routing” daemon. + * rrdtool plugin: A new configuration option allows to define a random + write delay when writing RRD files. This spreads the load created by + writing RRD files more evenly. Thanks to Mariusz Gronczewski for the + patch. + * swap plugin: The possibility to collect swapped in/out pages has + been added to the Swap plugin. Thanks to Stefan Völkel for the + patch. + * tokyotyrant plugin: The new TokyoTyrant plugin reads the number of + records and file size from a running Tokyo Tyrant server. Thanks to + Paul Sadauskas for the patch. + * write_http plugin: The new Write HTTP plugin sends the values + collected by collectd to a web-server using HTTP POST requests. + Thanks to Paul Sadauskas for the patch. + * zfs_arc plugin: The new ZFS ARC plugin collects information about + the “Adaptive Replacement Cache” (ARC) of the “Zeta File-System” + (ZFS). Thanks to Anthony Dewhurst for the patch. + * empty_counter match: The new Empty Counter match matches value + lists, where at least one data source is of type COUNTER and the + counter value of all counter data sources is zero. + + 2009-09-13, Version 4.7.3 + * collectd: Fix a possible but very rare invalid “free” in the caching + code. Thanks to Sebastian Harl for the patch. + * collectd: Remove old values when a cache entry is marked as missing. + This way the “GETVAL” command of the UnixSock plugin doesn't return + old, no longer valid values when this happens. Thanks to Andrés J. + Díaz for the patch. + * collectd: The “plugin_unregister_read” function has been fixed. + * apache, ascent, bind, curl, nginx plugins: Advise the cURL library + to follow redirects. Thanks to Joey Hess for reporting this bug. + * df plugin: Check the ignorelist before stating the file system, + possibly reducing the number of stats considerably. Thanks to Joey + Hess for reporting this bug. + * iptables plugin: Support for the new libiptc API has been added. + Thanks to Sebastian Harl for the patch. The build system has been + updated to the plugin only includes the shipped header files when it + is linked with the shipped library, too. + * java plugin: Delay creating the JVM until after the daemon has + forked. The JVM internally creates threads that are lost when + forking. This means that Java-based plugins are now configured + during the init-phase, i. e. later than other plugins. + * libvirt plugin: Re-connect to libvirtd if connecting fails. Thanks + to Alan Pevec for the patch. + * network plugin: Fix the handling of the “CacheFlush” option: The + value was assigned to a wrong variable. The initialization of the + gcrypt library, which is used for signing / encrypting traffic, has + been fixed. Thanks to Luke Heberling for the patch. + * powerdns plugin: Set a timeout when reading data from the datagram + socket. Handling of the “LocalSocket” option has been fixed. An + incorrectly used “type” has been corrected. Thanks to Luke Heberling + for his patches. + 2009-07-19, Version 4.7.2 * Build system: Support for `DESTDIR' has been fixed in the Java bindings. diff --cc contrib/collection3/etc/collection.conf index 5bf8df88,1bef175d..f15ea56f --- a/contrib/collection3/etc/collection.conf +++ b/contrib/collection3/etc/collection.conf @@@ -47,52 -47,13 +47,59 @@@ GraphWidth 40 Color starting ff00ff Color waiting ffb000 + + Module ArcCounts + RRDTitle "ARC {type_instance} on {hostname}" +# RRDOptions ... + + + Module GenericIO + DataSources read write + DSName "read Read " + DSName "write Written" + RRDTitle "L2ARC traffic" + RRDVerticalLabel "Bytes per second" +# RRDOptions ... + RRDFormat "%5.1lf%s" + + + RRDTitle "L2ARC size on {hostname}" + RRDVerticalLabel "Size" + RRDFormat "%4.0lf%s" + RRDOptions -b 1024 + DSName "value Current size" + Color value 00e000 + + + DataSources "current target minlimit maxlimit" + RRDTitle "ARC size on {hostname}" + RRDVerticalLabel "Size" + RRDFormat "%4.0lf%s" + RRDOptions -b 1024 + DSName "current Current size" + DSName "target Target size " + DSName "maxlimit Max size " + DSName "minlimit Min size " + Color current 00e000 + Color target 0000ff + Color minlimit ff0000 + Color maxlimit ff00ff + + + DataSources value + RRDTitle "{type_instance}ARC ratio on {hostname}" + RRDVerticalLabel "Ratio" + RRDFormat "%4.1lf" + RRDOptions -l 0 + DSName "value Hit ratio" + + + DataSources value + DSName value Percent + RRDTitle "Cache hit ratio for {plugin_instance} {type_instance}" + RRDVerticalLabel "Percent" + RRDFormat "%5.1lf %%" + Module GenericStacked DataSources value diff --cc src/df.c index 79829855,2c59b01c..194c2573 --- a/src/df.c +++ b/src/df.c @@@ -164,6 -155,32 +164,16 @@@ static int df_read (void 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 + : mnt_ptr->device)) + continue; + if (ignorelist_match (il_mountpoint, mnt_ptr->dir)) + continue; + if (ignorelist_match (il_fstype, mnt_ptr->type)) + continue; + if (STATANYFS (mnt_ptr->dir, &statbuf) < 0) { char errbuf[1024]; @@@ -180,50 -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] = '-'; + } + } + - if (ignorelist_match (il_device, - (mnt_ptr->spec_device != NULL) - ? mnt_ptr->spec_device - : mnt_ptr->device)) - continue; - if (ignorelist_match (il_mountpoint, mnt_ptr->dir)) - continue; - if (ignorelist_match (il_fstype, mnt_ptr->type)) - continue; - + df_submit (disk_name, df_used, df_free); } cu_mount_freelist (mnt_list); diff --cc src/network.c index 92271b78,cf67c2bd..62407888 --- a/src/network.c +++ b/src/network.c @@@ -52,8 -51,12 +52,9 @@@ #if HAVE_LIBGCRYPT # include + GCRY_THREAD_OPTION_PTHREAD_IMPL; #endif -/* 1500 - 40 - 8 = Ethernet packet - IPv6 header - UDP header */ -/* #define BUFF_SIZE 1452 */ - #ifndef IPV6_ADD_MEMBERSHIP # ifdef IPV6_JOIN_GROUP # define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP @@@ -2926,24 -2933,24 +2927,30 @@@ static int network_shutdown (void static int network_init (void) { + static _Bool have_init = false; + /* Check if we were already initialized. If so, just return - there's * nothing more to do (for now, that is). */ - if (cache_flush_last != 0) + if (have_init) return (0); + have_init = true; + #if HAVE_LIBGCRYPT + gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); + gcry_control (GCRYCTL_INIT_SECMEM, 32768, 0); + gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); + #endif + plugin_register_shutdown ("network", network_shutdown); + send_buffer = malloc (network_config_packet_size); + if (send_buffer == NULL) + { + ERROR ("network plugin: malloc failed."); + return (-1); + } network_init_buffer (); - cache_tree = c_avl_create ((int (*) (const void *, const void *)) strcmp); - cache_flush_last = time (NULL); - /* setup socket(s) and so on */ if (sending_sockets != NULL) {