openvpn plugin: Don't signal an error when no clients are connected.
In the multi1_read() function, an error (zero) was returned when no
clients were currently connected to the OpenVPN server, because the
"read" variable was initialized to zero and the while loop exited before
it was set to one. This is not the intended behavior.
Jan Kundrát [Wed, 25 Mar 2015 17:06:50 +0000 (18:06 +0100)]
curl_json: Add support for specifying a connection timeout
There's apparently no need to init the config values in the `db` struct;
memset() is used earlier in the process. This patch doesn't change this
convention.
Peter Wu [Tue, 31 Mar 2015 21:17:32 +0000 (23:17 +0200)]
battery: do not report sysfs ENODEV failure
Linux reports ENODEV if the reported battery values are equal to
ACPI_BATTERY_VALUE_UNKNOWN. This can be observed for an unpatched Clevo
B7130 laptop while reading the "Battery Present Charge" attribute.
Since this is a non-fatal, non-recoverable event, do not report such
errors. Also change the error message to report the filename triggering
this error to ease hunting down the error.
Peter Wu [Mon, 30 Mar 2015 16:48:06 +0000 (18:48 +0200)]
battery: report current if known
The power field is not always available (take my Clevo B7130 laptop for
example). The current is reported though via "current_now".
According to the ACPI spec v5.0, sect. 10.2.2.6 _BST (Battery Status),
the reported field is "battery present rate" which is always positive
(its direction depends on the charging state).
Contents of /sys/class/power_supply/BAT0/uevent for my laptop:
Marc Fournier [Thu, 26 Mar 2015 20:52:39 +0000 (21:52 +0100)]
write_http: control rate using only one parameter
- do not enable the feature with an on/off switch. Enable it by setting
a positive value to the parameter instead. Therefore drop the
arbitrary default value used previously.
- rename LowLimitBytesPerSec to LowSpeedLimit.
- make LowSpeedLimit refer to bytes per second rather than bytes per
Interval.
Marc Fournier [Wed, 25 Mar 2015 23:01:54 +0000 (00:01 +0100)]
write_http: adapt the behaviour of Timeout option
- rename PostTimeoutSec parameter to Timeout
- change Timeout to take milliseconds rather than seconds, for the sake
of consistency: collectd allow working at the sub-second scale if need
be, so it's a shame to restrain this here.
- do *not* set the default timeout to the value of Interval. Rationale:
what matters here is that each POST request completes before the send
buffer fills up again. How fast the send buffer fills up completely
depends on how much data is collected. Interval is unrelated to this,
and unlike read plugins, I don't think it makes a good value to use as
the default timeout.
Yoga Ramalingam [Fri, 31 Oct 2014 20:03:31 +0000 (16:03 -0400)]
AMQP connection failure leads collectd to use 100%CPU
Summary:
Issue : https://ipm.bloomberg.com/jira/browse/SS-103
Solution : When amqp connection fails, it retries for every message, added a fix to retry only after a delay. A new configuration "ConnectionRetryDelay" has been introduced with default value as 60 seconds.
Test Plan:
1. Tested without the new configuration
2. Tested with the new configuration
In both the cases, verified connection is retried only after the delay and made sure collectd is not taking 100% cpu.
Florian Forster [Mon, 9 Mar 2015 09:59:38 +0000 (10:59 +0100)]
write_mongodb plugin: Fix BSON memory handling even further.
According to the mongo-c-driver 0.8.1 documentation, each call to
bson_alloc() needs to be matched by a call to bson_dealloc() and each
call to bson_init() needs to be matched by a call to bson_destroy().
Additionally, this patch adds macros for mongo-c-driver < 0.8.0 to map
the new bson_alloc() and bson_deallow() names to the old bson_create()
and bson_dispose() symbol names.
Yoga Ramalingam [Fri, 14 Nov 2014 14:23:13 +0000 (09:23 -0500)]
statsd histogram to support more than 1 second
Summary:
Problem: Collectd/Statsd supports configurable percentiles for timers but it limits the value to be 1 to 1000ms. If the timer value is more than 1000ms, it uses for min, max, average,... and drops it for percentile computation.
Solution: Added support for increasing bin width when the value is above histogram's range.
Test Plan: Tested by sending metrics within range and out-of-range (ie above 1000 ms)
This commit adds a number of configuration options that overide
which features are enabled by the automated mechanisms.
These options should only be used to turn off unwanted features
or add (temporarily) support for a new CPU
Turbostat can be useful on systems that do not support invariant TSC,
so allow it to run on those systgems.
All arithmetic in turbostat using the TSC value is per-processsor,
so it does not depend on the TSC values being in sync acrosss
processors.
Turbostat uses cdtime() for the measurement interval
rather than using the TSC directly, so that key metric
is also immune from variable TSC.
Turbostat has a TSC sanity check gauge:
TSC_MHz = TSC_delta/interval
If this column is constant and is close to the processor
base frequency, then the TSC is behaving properly.
The other key turbostat columns are calculated this way:
Avg_Mhz = APERF_delta/interval
Bzy_MHz = TSC_delta/APERF_delta/MPERF_delta/interval
c0 = MPERF_delta/TSC_delta
This adaptation of the original commit has not been tested on any
old CPU. This patch also re-introduce the boolean "do_smi" as such
old CPUs don't have SMI.
This new gauge contains TSC / interval_float.
If TSC and interval_float are behaving correctly, this is supposed to be
constant. Otherwise, other measurements can be wrong