ipmi: force domain to reread SELs when event is received on SMI.
System management interface (SMI) is listening for events from BMC
and processes them to user without delays. When SMI receives an event
force domain to reread SELs. It will cause event handlers for discrete
and threshold sensors to be called.
Florian Forster [Tue, 6 Dec 2016 10:50:53 +0000 (11:50 +0100)]
perl plugin: Include <stdbool.h> unconditionally.
With the autoconf work in dcb67fd746e550f73f4db4db2e2b24ff9788f209,
HAVE_STDBOOL_H will no longer be defined. Since we depend on C99, we can
include this header unconditionally.
Ruben Kerkhof [Mon, 5 Dec 2016 19:23:39 +0000 (20:23 +0100)]
Fix some automake warnings
src/Makefile.am:1286: warning: variable 'test_plugin_virt_SOURCES' is defined but no program or
src/Makefile.am:1286: library has 'test_plugin_virt' as canonical name (possible typo)
src/Makefile.am:1290: warning: variable 'test_plugin_virt_LDADD' is defined but no program or
src/Makefile.am:1290: library has 'test_plugin_virt' as canonical name (possible typo)
src/Makefile.am:1289: warning: variable 'test_plugin_virt_LDFLAGS' is defined but no program or
src/Makefile.am:1289: library has 'test_plugin_virt' as canonical name (possible typo)
autoreconf: Leaving directory `.'
Ruben Kerkhof [Mon, 5 Dec 2016 19:19:40 +0000 (20:19 +0100)]
Fix autoreconf error on Mac OS
autoreconf: running: /usr/local/Cellar/autoconf/2.69/bin/autoconf --force
configure.ac:39: error: possibly undefined macro: AC_DISABLE_STATIC
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/local/Cellar/autoconf/2.69/bin/autoconf failed with exit status: 1
Ruben Kerkhof [Fri, 2 Dec 2016 13:53:40 +0000 (14:53 +0100)]
battery_statefs: fix a few build warnings
battery_statefs.c:95:8: warning: initializing 'char *' with an expression of type 'const char [38]' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
{STATEFS_ROOT "Current", "current", NULL, 1e-6}, // from uA to A
^~~~~~~~~~~~~~~~~~~~~~
Florian Forster [Thu, 1 Dec 2016 13:52:06 +0000 (14:52 +0100)]
src/Makefile.am: Fix dependencies for the "tail" and "match" utilities.
Since being pulled out of the core daemon, the daemon no longer provides
all the required symbols for these shared objects. The "tail", "match"
and "tail_match" utils need to be compiled in explicitly. Also, we need
to link with the liblatency.la convenience library for the
"Distribution" handling in the "match" util.
Francesco Romani [Thu, 24 Nov 2016 15:09:41 +0000 (16:09 +0100)]
virt plugin: Properly reset the lists
If all the libvirt domains are shutdown between two refresh cycles,
the code failed to clean the lists.
Thus, the last detected libvirt domains are kept forever, leading
to failures in the data collection.
This leads to messages like
Nov 24 15:34:57 benji.rokugan.lan collectd[15083]: libvirt: QEMU Driver
error : Domain not found: no domain with matching uuid
'bc324fee-5707-4ac6-a650-6037562d4632' (nano_C010)
In the logs.
This bug was also present in collectd 5.6.1.
Signed-off-by: Francesco Romani <fromani@redhat.com>
Francesco Romani [Thu, 24 Nov 2016 09:16:00 +0000 (10:16 +0100)]
virt plugin: Disable tests momentarily
Old libvirts (<= 0.10.z, such as the version shipped on debian wheezy)
depend on libnl-1. There is a small memory leak caused by the
initialization of the library, and we have no means to avoid it.
This causes valgrind to complain in the tests, creating a false
positive.
Anyway, libvirt switched to libnl-3, which should also fix this leak.
The simplest solution is just to disable those tests until we
can depend on libnl-3 enabled libvirt.
Francesco Romani [Wed, 30 Nov 2016 09:20:55 +0000 (10:20 +0100)]
virt plugin: Minor fixes
- avoid double registration with useless lv_read callback (will do
nothing now without userdata)
- fix configuration parsing
- improve and reformat logging
- avoid unitialized memory in partition tag buffer
- refactor and improve finalization, and ensure deregistration of
namespaces to improve cleanup.
Signed-off-by: Francesco Romani <fromani@redhat.com>
Francesco Romani [Mon, 21 Nov 2016 10:29:52 +0000 (11:29 +0100)]
virt plugin: Add support for domain tags
One "domain tag" is one custom attribute in the libvirt domain
metadata section. This patch enhances the virt plugin to partition
the domains to sample into reader instances according to tags.
One reader instance will only query the domains with attached
a macthing tag.
The special-purpose reader instance #0, guaranteed to be always present,
(since <0 instances are not allowed), will query all the domains
with missing or unrecognized tag, so no domain will ever left
out.
It's up to one external entity, like a management application,
to properly tag domains however it sees fit; how tags are picked
is completely transparent to the plugin
Tagging could be used by management application to evenly spread the
load among the reader threads, or to pin on the same threads all
the libvirt domains which use the same shared storage, to minimize
the disruption in presence of storage outages.
Signed-off-by: Francesco Romani <fromani@redhat.com>
Francesco Romani [Mon, 21 Nov 2016 08:30:45 +0000 (09:30 +0100)]
virt plugin: Support for multiple read callbacks
Add support to register more than one read callbacks in the
reader thread pool.
The default configuration is to use just one read callback,
for backward compatibility. No user-visible changes are expected
in this scenario.
Signed-off-by: Francesco Romani <fromani@redhat.com>
Florian Forster [Sun, 20 Nov 2016 21:53:34 +0000 (22:53 +0100)]
tail plugin: Rename DSType from Latency to Distribution.
This is a more flexible naming owing to the fact that percentiles and other
distribution parameters are interesting for a variety of metrics, not just
latencies.
The config handling is now completely in src/utils_latency_config.c so
that other plugins, such as the cURL plugin, can easily reuse the module
with consistent config handling.
Florian Forster [Wed, 12 Oct 2016 07:15:49 +0000 (09:15 +0200)]
src/utils_latency.[ch]: get_rate(): Make lower bound exclusive.
This has a bunch of benefits:
* You can easily iterate over a range of latencies without counting
latencies twice. This was previously tricky because both borders were
considered to be inclusive.
* When lower equals upper, the returned value is now zero.
Previously, it was a value very close to zero, but not zero. The exact
value depended on the bucket width, an information not easily
available to the caller.
Ruben Kerkhof [Sat, 19 Nov 2016 10:47:00 +0000 (11:47 +0100)]
Fix Lua header detection
checking lua.h usability... yes
checking lua.h presence... no
configure: WARNING: lua.h: accepted by the compiler, rejected by the
preprocessor!
configure: WARNING: lua.h: proceeding with the compiler's result
checking for lua.h... yes
checking lauxlib.h usability... yes
checking lauxlib.h presence... no
configure: WARNING: lauxlib.h: accepted by the compiler, rejected by the
preprocessor!
configure: WARNING: lauxlib.h: proceeding with the compiler's result
checking for lauxlib.h... yes
checking lualib.h usability... yes
checking lualib.h presence... no
configure: WARNING: lualib.h: accepted by the compiler, rejected by the
preprocessor!
configure: WARNING: lualib.h: proceeding with the compiler's result
checking for lualib.h... yes
AC_CHECK_HEADERS uses the preprocessor directly, which doesn't use
CFLAGS. Fixes detection of the lua-5.1 compat libs on Fedora Rawhide.
Ruben Kerkhof [Sat, 19 Nov 2016 16:31:23 +0000 (17:31 +0100)]
Rewrite the check for libdpdk
This fixes various issues, like us not picking up the right include path
and testing for the library in the wrong location.
We now allow you to override the CPPFLAGS and LDFLAGS by doing
./configure LIBDPDK_CPPFLAGS="-I/path/to/your/libdpdk_headers" LIBDPDK_LDFLAGS="-L/path/to/your/libdpdk.so -Wl,--no-as-needed"
The nice thing is that these settings are now logged and remembered
between configure runs.