Florian Forster [Tue, 14 Jan 2014 07:34:42 +0000 (08:34 +0100)]
swap plugin: Remove the swap_submit() function.
This function was used only by swap_submit_derive(), which was declared
conditionally. This resulted in "defined but not used" warnings, e.g. on
FreeBSD.
Florian Forster [Tue, 14 Jan 2014 06:55:02 +0000 (07:55 +0100)]
src/common.[ch]: Rewrite the escape_slashes() function.
Cleaner and slightly more efficient (3.8% faster) version of escape_slashes().
This function is quite hot with, depending on the configuration, between 1.2%
and 2.6% of total CPU time spent here.
Florian Forster [Tue, 14 Jan 2014 06:24:40 +0000 (07:24 +0100)]
src/utils_cache.c: Very minor performance improvement.
cache_compare() is one of the hottest functions in collectd. Depending how many
metrics collectd handles (how deep the tree is) it gets called an order of
magnitude or two more often than the number of metrics handled. With 100k
metrics, about 6.6% of the CPU time were spent within cache_compare(), with
this commit this reduces to 6.3% (that's, uhm, 4.7% faster?).
Florian Forster [Sun, 12 Jan 2014 09:25:29 +0000 (10:25 +0100)]
swap plugin: Improvements for the percent code:
* Don't rely on the left-to-right evaluation order, i.e. move the
division to the right.
* Avoid casting by making many of the internally used variables gauge_t.
They were derive_t in many cases for historical reasons that no longer
apply.
* Change the naming: Don't use the "swap" type for percentages (putting
the information that it *is* a percentage into the type instance) and
use "percent" instead.
A different fix for this problem was commited to the collectd-5.4 branch
(8327ee64) and conflicts with this patch. Also, initializing url the
same way as 8327ee64 does it, to avoid a merge conflict.
Marc Fournier [Tue, 7 Jan 2014 15:06:10 +0000 (16:06 +0100)]
interface.c: FreeBSD-10 support
Quoting @trtrmitya in github issue #506 : "[...] it is broken on
FreeBSD-10, in which getifaddrs() returns not only link level stats for
a particular interface, but also entries for each IP configured on that
interface. As a result if_submit() is called several times for each
interface, which results in incorrect data being logged.
I am attaching a patch which fixes a problem on FreeBSD (9/10), but it
should work for every *BSD because [...] the getifaddrs implementation
first appeared in BSDi BSD/OS."
Many thanks to @trtrmitya for providing the patch !
Adds two options to snmp plugin Data Section:
- Ignore -> A List of string containing patterns to blacklist
- InvertMatch -> A Boolean value to tell if using blacklist or
whitelist (true is whitelist, false (default) is blacklist)
Report a CPU "active" value, summing non-idle values
This small change provides a per-core aggregate of non-idle
values for CPUs. This is a good indicator to apply a threshold
on (especially if aggregated by means of the aggregation plugin).
Rainer Müller [Sun, 10 Nov 2013 02:51:40 +0000 (03:51 +0100)]
Link to IOKit using -framework
The libIOKit.dylib symlink no longer exists in OS X 10.9 Mavericks, we
now have to link using -framework. This should also work in all previous
versions of OS X.
Rainer Müller [Sun, 10 Nov 2013 02:39:22 +0000 (03:39 +0100)]
curl_json, curl_xml: Fix unitialized variable
The variable url is used unintialized here. The code used to be the same
in both plugins, but diverged in 19808b44. The solution applied there
does not work correctly as the effective URL can only be queried after
performing the request. Instead, just use the original request URL.
Vincent Bernat [Sat, 12 Oct 2013 20:38:57 +0000 (22:38 +0200)]
dbi plugin: register one read callback for each database block
By using a distinct read callback for each database block, collectd
will be able to query several databases in parallel. This is useful if
the plugin should handle many queries. This lets the user split them in
chunks and speed up the retrieval.
Add a JMXProvider Class Loader to be able to load Provider using
getConnectorAsService from JMXConnectorFactory. The protocol remoting-jmx
using by JBOSS > 7 need that to work.
Marc Falzon [Tue, 1 Oct 2013 16:53:39 +0000 (18:53 +0200)]
Append rules/targets to existing chain.
This patch allows appending rules/targets to an existing chain instead
of overwriting it. This way, it is possible to split filter chains
definition among several files.
spotted by lukas227 in IRC:
23:43 < lukas227> Hi, I think I found a mistake in the threshold.conf(5) man page: the example
THRESHOLD CONFIGURATION is within <Threshold></Threshold> tags, but should
probably be within <Plugin "threshold"></Plugin> tags (doesn work with
<Threshold> for me)
Day changed to 27 Sep 2013
Jeremy Katz [Wed, 25 Sep 2013 18:36:48 +0000 (14:36 -0400)]
Fix handling of 127.0.0.1 instead of localhost for *sql plugins
The mysql and postgresql plugins have special handling if you
use localhost as your hostname. Sometimes you need to use 127.0.0.1
instead and want to not have that make changes to the hostname
for the metrics.
Jeremy Katz [Sun, 22 Sep 2013 19:50:05 +0000 (21:50 +0200)]
Add support for a custom user agent at compile-time
Make it possible to specify a custom user agent at compile time
and then use on all libcurl calls instead of just going with
PACKAGE_NAME/PACKAGE_VERSION
Marc Fournier [Thu, 19 Sep 2013 21:27:02 +0000 (23:27 +0200)]
switch default write_graphite protocol back to TCP
The *default* protocol was switched to UDP in 498a0dcd, when UDP support
was added to the plugin.
Switching this default back to TCP, because it makes the plugin break
for users upgrading to 5.4, and also because the UDP listener is disabled
in a default graphite installation (cf.
https://github.com/graphite-project/carbon/blob/0.9.x/conf/carbon.conf.example#L78)
write_riemann plugin: Receive acknowledge message when using TCP.
Not receiving an acknowledge message when communicating with riemann over TCP
will cause the riemann instance to eventually hang for extended periods of time
because of resource exhaustion.
Took the time to reaorganize the riemann_send function to simplify locking.
Florian Forster [Wed, 28 Aug 2013 13:19:48 +0000 (15:19 +0200)]
cgroups plugin: Use cu_mount_checkoption().
cu_mount_checkoption() behaves a bit like strstr() in that it returns a pointer
into the buffer. cu_mount_getoptionvalue() allocated memory that was never
freed, slowly leaking memory (although very little).
Marc Fournier [Wed, 21 Aug 2013 14:22:32 +0000 (16:22 +0200)]
cgroups: don't fail parsing when colon not found
The format of cpuacct.stat seems to not always have a colon as separator.
It appears to *not* have the colon at least on debian's kernel 3.2.41 and
3.2.35, as well as on RHEL6 with 2.6.32. All of them have decent support for
cgroups/lxc, and the cgroups plugin fails to work with them without this patch.
Also, looking at other implementations shows that they *don't* expect a colon:
https://bitbucket.org/dotcloud/liblxcstats/src/2558b4fbbf589c609895b0badbfc7d413466d716/probes/cpuacct.c?at=default#cl-71
https://github.com/BrightcoveOS/Diamond/blob/master/src/collectors/cpuacct_cgroup/cpuacct_cgroup.py#L55
Jim Radford [Sat, 10 Aug 2013 16:14:27 +0000 (09:14 -0700)]
curl_json plugin: avoid accessing off the end of the avl_tree_s
It's not written this way, but really we have a union { *key; *tree; }
which is differentiated by checking for the presence a magic field
which only exists in key. This leads to accesses off the end of the
tree. Putting the magic at start of the key avoids this.