Marc Fournier [Tue, 16 Feb 2016 09:28:04 +0000 (10:28 +0100)]
processes: use long for pids on linux and solaris
Up to now, we had a mix of `int`, `long` and `pid_t` to represent the
variable part of `/proc/<PID>/status` and friends. This patch
standardizes on `long` on the Linux and Solaris platforms.
The max size of `int` is smaller than the maximum number of processes
current kernels support. `pid_t` is used to ensure portability of
functions such as `getpid()`, which aren't used in this plugin, and
apparently resolves to an `int` on Solaris.
This is a follow up to bb978c1, which triggered a format string issue on
solaris 64 bit.
Corey Kosak [Fri, 22 Jan 2016 21:56:37 +0000 (16:56 -0500)]
Don't divide by 0 when doing percentages (e.g. with the swap plugin).
Prior to this change, if all the values being sent sum to zero, then the
calculated percentage is a division by 0 which is either Inf or NaN
depending on the numerator.
This is not a theoretical concern: it can easily happen if all the input
gauges are 0.
This change forces the output to be zero if the denominator is zero.
Corey Kosak [Sat, 23 Jan 2016 00:10:21 +0000 (19:10 -0500)]
Provide a unified signature for ps_get_cmdline.
Prior to this change, ps_get_cmdline had different signatures for
KERNEL_LINUX vs. KERNEL_SOLARIS. This means that callers who want to
call this function would have to have an #if..#else that controlled which
variant of the function to call.
By giving them the same signature, callers don't have to worry about
that.
Corey Kosak [Fri, 22 Jan 2016 22:22:18 +0000 (17:22 -0500)]
The field 're' only exists if HAVE_REGEX_H is defined (see definition at
line 194). So, consistent with all other usages, this should be protected
with an #if guard.
I cherry-picked this patch, but overlooked the fact it relates to
another change (c339d93f) only found in the collectd-5.5 branch.
Reverting, as it results in a compilation error.
Jakub Jankowski [Thu, 21 Jan 2016 20:43:26 +0000 (21:43 +0100)]
docs: Add info about mode7 requirement for ntpd
Since ntpd-4.2.7p230 "mode 7" requests are ignored by default, and
that's what ntpd plugin uses currently. The ntp daemon must be
explicitly configured to enable mode7 requests.
This patch adds short information about that to collectd.conf manpage.
Related to collectd/collectd#932
Signed-off-by: Jakub Jankowski <shasta@toxcorp.com>
Jakub Jankowski [Thu, 21 Jan 2016 16:15:20 +0000 (17:15 +0100)]
docs: mention regexps for the interface plugin
It is very useful to collect data (or ignore) from a group of interfaces
that are similarly named - especially if the list is dynamic and it's
not feasible to update configuration each time an interface shows up or
disappears. It's possible to use regexps to specify interfaces to
collect data from (or ignore), but it's not clearly stated anywhere in
the documentation.
This is an attempt to improve documentation in this area.
Signed-off-by: Jakub Jankowski <shasta@toxcorp.com>
Marc Fournier [Wed, 20 Jan 2016 08:47:31 +0000 (09:47 +0100)]
virt plugin: make indentation explicit
Fixes this warning raised by gcc-6's new "misleading-indentation"
option:
```
virt.c: In function 'lv_init':
virt.c:331:2: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
return 0;
^~~~~~
virt.c:328:5: note: ...this 'if' clause, but it is not
if (virInitialize () != 0)
^~
```
src/utils_latency.c: Store "bin_width" as cdtime_t.
This solves the integer overflow when passing huge latency values to
latency_counter_add(). In addition to fixing the overflow the function
will now ignore values that are larger than LLONG_MAX, i.e. the longest
possible latency is 272 years. As a nice side-effect, the precission of
latency_counter_get_percentile() is improved.
The dependency is either UTMPX or UTMP or Statgrab. The inclusion above hasn't statgrab.h in the elif-chain, that means compilation fails when only libstatgrab is available. The line can safely be taken out as the same condition is checked in #L120.
Florian Forster [Fri, 18 Dec 2015 08:26:14 +0000 (09:26 +0100)]
network plugin: Coding style fixes.
This fixes a number of sizeof() operations which did not follow our best
practice of using the variable rather than its type. It also removes
unnecessary (void *) casts.
Florian Forster [Fri, 18 Dec 2015 08:24:19 +0000 (09:24 +0100)]
network plugin: Check range of pkg_numval.
This is essentially the same as the check using exp_size a couple lines
earlier, but that appears to be too indirect for Coverity to understand.
This hopefully fixes the resulting "tainted_data_return" errors.
Florian Forster [Thu, 17 Dec 2015 13:25:19 +0000 (14:25 +0100)]
gmond plugin: Inline the plugin_dispatch_values() call.
Since version 5.3, a write queue is used. This means that the
plugin_dispatch_values() call will create a copy of the value list and
return quickly. Creating yet another copy here is therefore not as useful
anymore.
Ruben Kerkhof [Sat, 12 Dec 2015 17:15:15 +0000 (18:15 +0100)]
write_riemann: remove unneeded include
Fixes build on NetBSD:
Making all in daemon
CC write_riemann_threshold.lo
write_riemann_threshold.c:36:18: fatal error: ltdl.h: No such file or directory
#include <ltdl.h>
^
compilation terminated.
*** Error code 1
Stop.
make[3]: stopped in /home/ruben/src/collectd/src
*** Error code 1
Stop.
make[2]: stopped in /home/ruben/src/collectd/src
*** Error code 1
Stop.
make[1]: stopped in /home/ruben/src/collectd/src
*** Error code 1
Ruben Kerkhof [Sat, 12 Dec 2015 14:32:23 +0000 (15:32 +0100)]
redis plugin: fix build error on NetBSD
Making all in daemon
CC redis_la-redis.lo
redis.c: In function 'redis_handle_info':
redis.c:307:5: error: array subscript has type 'char' [-Werror=char-subscripts]
for(i=0;(*str && (isdigit(*str) || *str == '.'));i++,str++)
^
cc1: all warnings being treated as errors
*** Error code 1
Stop.
make[3]: stopped in /home/ruben/src/collectd/src
*** Error code 1
Stop.
make[2]: stopped in /home/ruben/src/collectd/src
*** Error code 1
Stop.
make[1]: stopped in /home/ruben/src/collectd/src
*** Error code 1