Build system: Don't ship the generated *.pb-c.[ch] files.
They depend on specific versions of the protobuf-c.h header file, so
shipping this will cause problems for people having a different version
of protoc-c installed. This reverts some of the work done in #269, but
distcheck should still work. Meh.
write_riemann plugin: Use the "Attributes" of an Event rather than abuse the "Tags".
Riemann 0.2.0 provides "Attributes", which are key-value pairs. Since
the plugin previously basically abused the tag system for adding this
kind of data, switch to the new and shiny thing :)
configure.in: Fix dependency of the pinba and write_riemann plugins.
Since the generated *.pb-c.[ch] files are now included in the
distribution, they only depend on the <google/protobuf-c/protobuf-c.h>
header file, not the protobuf compiler.
Sebastian Harl [Tue, 20 Nov 2012 13:44:43 +0000 (14:44 +0100)]
build system (Perl bindings): Make Makefile.PL's PREFIX/INSTALL_BASE optional.
Both options may cause problems:
- PREFIX might clash with INSTALL_BASE being set in $PERL_MM_OPT.
- INSTALL_BASE without any further options set will install into non-standard
directories in many cases.
Rather, use PREFIX=${prefix} as default but overwrite that if
--with-perl-bindings=... has been used.
Thanks to faxm0dem for reporting the INSTALL_BASE problems on IRC and
bvarner and nirik for reporting this in GH #177 and #196.
network plugin: Make sure gcrypt is initialized before using any of its functions.
@marekbecka found that sockent_open() is called during the configuration
phase, but gcrypt is initialized later, during the initialization phase.
This patch will initialize gcrypt in sockent_open() if any sockets with
security are configured.
- Java detection used TMPDIR as var to parse command output
- TMPDIR is used in libltdl later on in ./configure
- alternative fix is local var or subshell
- fixes issue introduced via #33163ee
This patch changes the snmp GETNEXT request behaviour implemented in snmp.c.
The old implementation requested all OIDs using GETNEXT requests until all OIDs
left their own subtree. In cases were trees in a Data template are much longer
than other trees the shorter subtrees were re-requested over and over again.
The new implementation will only request OIDs that did not already leave their
subtrees (see the oid_todo_list implementation for details). This renders the
function csnmp_check_res_left_subtree useless as the oid_todo_list keeps track
if all OIDs have finished.
During tests against Cat6500 (CatOS/IOS) as well as Nexus5k (NX-OS) it looks as
though GETNEXT requests (when requesting multiple OIDs like all 14 dot3Stats
errors from Etherlike-MIB) can take about 5-10ms (CatOS 30ms) longer if they wrap
to the next OID.
This does not sound much but when collecting data for the Etherlike-MIB (that only
has entries for physical interfaces) with a collectd "Instance" variable in IF-MIB
(that has entries for all physical as well as pseudo [SVIs, VLANs, ...] interfaces)
this can make a notable difference (e.g. for core routers that have all SVIs and
VLANs but only some switches attached):
After refactoring csnmp_read_table "Instance" and "Value" OIDs are now handled
consistently (so no pointer-forward foo needed). It doesn't change any logic
and data structures, though - so there should not be any impact to other
functions.
The refactored code also fixes GitHub bugs #235 and #258. This bug is due to
reusing the status variable in following code section which might lead to errors
if the subtrees are of different length:
1436 /* Calculate the current suffix. This is later used to check that the
1437 * suffix is increasing. This also checks if we left the subtree */
1438 status = csnmp_oid_suffix (&suffix, &vb_name, data->values + i);
Florian Forster [Sat, 23 Mar 2013 07:47:02 +0000 (08:47 +0100)]
tail_csv plugin: Some bug fixes.
* Query types in the init-phase rather than the config-phase. The
types.db is not guaranteed to be available at that time.
* Make sure the "Instance" option in the <File /> blocks is optional.
Florian Forster [Sun, 17 Mar 2013 14:50:16 +0000 (15:50 +0100)]
uuid plugin: Improve parsing of the dmidecode output.
The entire business of dividing by sizeof(char) only made the code
unreadable, because by specification sizeof(char) evaluates to 1. The
defines were expanded and the parsing is now less sensitive to
formatting changes in the dmidecode output. Module global variables have
been moved to the top.
Florian Forster [Sat, 16 Mar 2013 14:08:39 +0000 (15:08 +0100)]
curl_xml plugin: Change the "Namespace" config option …
… to expect two strings: prefix and URL separately. This way the parsing
is done in the config parser and we don't have to interpret special
characters in a string.
Dan Fandrich [Sat, 2 Mar 2013 17:13:27 +0000 (18:13 +0100)]
Fix automatic link flags with libgcrypt 1.5.0
AM_PATH_LIBGCRYPT from libgcrypt 1.5.0 sets the variables
LIBGCRYPT_CPPFLAGS and LIBGCRYPT_LIBS with their proper
values, not GCRYPT_CPPFLAGS and GCRYPT_LIBS.
Florian Forster [Wed, 6 Mar 2013 07:15:35 +0000 (08:15 +0100)]
snort plugin: Replace the mmap() code with the tail-code from collectd.
This makes following along a file more I/O friendly, I hope. Also, we
don't need to do quite as much buffer processing because lines are
already split for us. Also, in the unlikely case that Snort is writing
the stats file more often than collectd reads it, this will pick up all
intermediate values.
Florian Forster [Sun, 24 Feb 2013 09:33:51 +0000 (10:33 +0100)]
src/utils_rrdcreate.c: Lock files to be created.
This works around an issue where RRDtool crashes due to two threads
trying to create the same file at the same time. This shouldn't happen
in normal operation, but an attacker could cause this, e.g. with
specially crafted network packets.
Florian Forster [Sat, 23 Feb 2013 11:28:39 +0000 (12:28 +0100)]
src/utils_rrdcreate.[ch]: Implement the srrd_create_async() function.
This new functionality, which is also exported by the rrdtool and
rrdcached plguins, allows to create new RRD files in the background.
This avoid blocking write threads on the RRD creation, when hundreds of
files need to be created.