src/plugin.c: Add a user_data_t pointer to log callbacks.
java plugin: Add support for `flush' callbacks.
src/plugin.c: Add a user_data_t pointer to flush callbacks.
Merge branch 'master' into ff/java
Merge branch 'collectd-4.6'
Conflicts:
src/bind.c
Conflicts:
src/bind.c
Bumped version to 4.6.1; Updated ChangeLog.
Merge branch 'collectd-4.5' into collectd-4.6
Conflicts:
ChangeLog
version-gen.sh
The changes made in b6612126 and reverted in 5fa56b89 are retained in
collectd-4.6.
Conflicts:
ChangeLog
version-gen.sh
The changes made in b6612126 and reverted in 5fa56b89 are retained in
collectd-4.6.
15 years agoRevert "libiptc/Makefile.am: Added xtables.h, libxtc.h to libiptc_la_SOURCES." collectd-4.5.3
Revert "libiptc/Makefile.am: Added xtables.h, libxtc.h to libiptc_la_SOURCES."
This reverts commit b6612126d862d182d9219e0512fa9ca833272b62.
This commit should have gone in the master branch, not in the
collectd-4.5 branch.
This reverts commit b6612126d862d182d9219e0512fa9ca833272b62.
This commit should have gone in the master branch, not in the
collectd-4.5 branch.
Bumped version to 4.5.3; Updated ChangeLog.
java plugin: Rename `CollectdAPI' to `Collectd'.
collectd-java(5): Update the documentation.
Especially add the new ``native'' methods.
Especially add the new ``native'' methods.
java plugin: Change the name of all functions to conform to the Java convention.
java plugin: Expose `plugin_log' to Java plugins.
java plugin: Added comments for most functions.
Hopefully this'll make the code a bit easier to read.
Hopefully this'll make the code a bit easier to read.
java plugin: Implement registration for the other methods.
``Other'' meaning `Config', `Init', and `Shutdown' right now.
``Other'' meaning `Config', `Init', and `Shutdown' right now.
collectd-java(5): Updated the documentation.
java plugin: Implemented write plugin registration.
java plugin: Improve the read registration code.
java plugin: Implement plugin registration via `RegisterRead'.
src/plugin.c: Remove all read functions before calling the shutdown functions.
This way the user_data may be cleaned up before the final cleanup
phase..
This way the user_data may be cleaned up before the final cleanup
phase..
java plugin: Change the API to use the `DataSet' class.
java plugin: Use the changed plugin infrastructure to call read and write functions directly.
The read and write functions implemented in Java are now registered with
the "complex" interface as "java:<class name>". This way the cjni_read and
cjni_write functions can determine which Java function to call.
The patch is bigger than it'd need to be, because the order of some
functions has been changed..
The read and write functions implemented in Java are now registered with
the "complex" interface as "java:<class name>". This way the cjni_read and
cjni_write functions can determine which Java function to call.
The patch is bigger than it'd need to be, because the order of some
functions has been changed..
src/plugin.c: Change the write callbacks to receive a user_data_t pointer.
There are by far not as many write callbacks, so I've just changed the
callback in general rather than introducing a `complex write' callback.
There are by far not as many write callbacks, so I've just changed the
callback in general rather than introducing a `complex write' callback.
src/plugin.c: Implement `plugin_register_complex_read'
These read callbacks will receive a user pointer. This is nice for the
Java plugin, because the plugin infrastructure can now call one specific
Java read function.
AfaIk, the Perl plugin can make use of this, too.
These read callbacks will receive a user pointer. This is nice for the
Java plugin, because the plugin infrastructure can now call one specific
Java read function.
AfaIk, the Perl plugin can make use of this, too.
java plugin: Update the full name of the moved classes.
Revert "src/plugin.[ch]: Implement `plugin_dispatch_values_async'."
This reverts commit ba6497bdffb6a225eb6c86c8b8fa57a2520f0c5f.
This reverts commit ba6497bdffb6a225eb6c86c8b8fa57a2520f0c5f.
bindings/java: Moved the `PluginData' and `ValueList' classes.
And implemented various (trivial) `Collectd*Interface' classes.
And implemented various (trivial) `Collectd*Interface' classes.
java plugin: Implement a reference counter for the JVMEnv pointers.
This way one thread entering the Java plugin twice, e. g. with the
following call-chain, will not detach itself from the JVM before it is
completely done with it.
The problematic situation is:
-> cjni_read
-> ALLOC JVM
-> `Read' (in Java)
-> `DispatchValues' (in Java)
-> plugin_dispatch_values
-> cjni_write
-> ALLOC JVM (this is a no-op!)
-> `Write' (in Java)
-> DEALLOC JVM
This last dealloc is prematurely, because the thread is not done with
the JVM yet: It'd like to continue and return from `DispatchValues' to
execute some more Java code..
This way one thread entering the Java plugin twice, e. g. with the
following call-chain, will not detach itself from the JVM before it is
completely done with it.
The problematic situation is:
-> cjni_read
-> ALLOC JVM
-> `Read' (in Java)
-> `DispatchValues' (in Java)
-> plugin_dispatch_values
-> cjni_write
-> ALLOC JVM (this is a no-op!)
-> `Write' (in Java)
-> DEALLOC JVM
This last dealloc is prematurely, because the thread is not done with
the JVM yet: It'd like to continue and return from `DispatchValues' to
execute some more Java code..
types.db(5): Added a note about distributing custom types.db files.
perl plugin: Deprecated the use of plugin_register() to register data-sets.
A custom types.db file should be used instead.
A custom types.db file should be used instead.
Merge branch 'ff/java' of /var/lib/git/collectd into ff/java
collectd-java(5): Fix a typo.
bind plugin: Fix a typo.
java plugin: Use the new `plugin_dispatch_values_async' function.
Having Java read- and write-functions at the same time works now \o/
Having Java read- and write-functions at the same time works now \o/
src/plugin.[ch]: Implement `plugin_dispatch_values_async'.
This function differs from `plugin_dispatch_values' in that it will add
the value_list_t to a queue rather than calling the write functions
right away. This as at least two advantages:
- The _async function will often return faster, since no file
operation is done.
- The ``read thread'' and the ``write thread'' are not the same
thread. This makes it much easier for plugins that provide both,
`read' and `write' callbacks.
This function differs from `plugin_dispatch_values' in that it will add
the value_list_t to a queue rather than calling the write functions
right away. This as at least two advantages:
- The _async function will often return faster, since no file
operation is done.
- The ``read thread'' and the ``write thread'' are not the same
thread. This makes it much easier for plugins that provide both,
`read' and `write' callbacks.
java plugin: Conditionally register read, write, and shutdown callbacks.
Right now, this is a quick and dirty work around to get read functions
working again.
Right now, this is a quick and dirty work around to get read functions
working again.
java plugin: Implement `plugin_get_ds' aka. GetDS.
contrib/cussh.pl: Fixed and improved command parsing.
The input line is now split into separate tokens which are either quoted or
unquoted strings. This simplifies e.g. the parsing of identifiers as the whole
token may be interpreted as just the id string. This allows for specifying a
somewhat greedy regex which before led to the whole remainder of the input
line ending up in the type or type instance.
The input line is now split into separate tokens which are either quoted or
unquoted strings. This simplifies e.g. the parsing of identifiers as the whole
token may be interpreted as just the id string. This allows for specifying a
somewhat greedy regex which before led to the whole remainder of the input
line ending up in the type or type instance.
contrib/cussh.pl: Improved error reporting.
Collectd::Unixsock: Improved error handling in putval().
ipmi plugin: Use a less error-prone approach to build the sensor name.
table plugin, src/common: Un-escape '\t', '\n' and '\r' in column separators.
For this purpose, the function strunescape() has been added to the "common"
module. Currently, any escape sequence that's not '\t', '\n' or '\r' will be
expanded to the literal escaped character.
For this purpose, the function strunescape() has been added to the "common"
module. Currently, any escape sequence that's not '\t', '\n' or '\r' will be
expanded to the literal escaped character.
ipmi plugin: Fix an off-by-one error.
Hi,
One of my ipmi sensors has a name longer than DATA_MAX_NAME_LEN and this
results in a SEGV.
cu Peter
Hi,
One of my ipmi sensors has a name longer than DATA_MAX_NAME_LEN and this
results in a SEGV.
cu Peter
bind plugin: Fix a counter vs. gauge problem with memory statistics.
Thanks to Bruno for the heads-up :)
Thanks to Bruno for the heads-up :)
powerdns, utils_cmd_putval, utils_db_query: Use parse_value().
Besides cleaning up the code a little, this also adds more verbose error
messages.
Besides cleaning up the code a little, this also adds more verbose error
messages.
Moved parse_value() from the table plugin to the common module.
Some other plugins will find that useful as well.
Some other plugins will find that useful as well.
tables plugin: Added a generic plugin to parse tabular data.
Currently, the main purpose of this plugin is to be able to get information
from the Linux proc filesystem but it should be flexible enough to get data
from other sources as well.
Values are selected based on a given column separator and column numbers. The
configuration is a kind of a mix of the tail and *sql plugins' configurations.
A sample configuration might look like this:
<Plugin table>
<Table "/proc/slabinfo">
Instance "slabinfo"
Separator " "
<Result>
Type gauge
InstancePrefix "active_objs"
InstancesFrom 0
ValuesFrom 1
</Result>
<Result>
Type gauge
InstancePrefix "objperslab"
InstancesFrom 0
ValuesFrom 4
</Result>
</Table>
</Plugin>
Currently, the main purpose of this plugin is to be able to get information
from the Linux proc filesystem but it should be flexible enough to get data
from other sources as well.
Values are selected based on a given column separator and column numbers. The
configuration is a kind of a mix of the tail and *sql plugins' configurations.
A sample configuration might look like this:
<Plugin table>
<Table "/proc/slabinfo">
Instance "slabinfo"
Separator " "
<Result>
Type gauge
InstancePrefix "active_objs"
InstancesFrom 0
ValuesFrom 1
</Result>
<Result>
Type gauge
InstancePrefix "objperslab"
InstancesFrom 0
ValuesFrom 4
</Result>
</Table>
</Plugin>
Moved remove_special() from the bind plugin to the "common" module.
This function might be useful for other plugins as well. Also, it has been
renamed to replace_special() which is slightly more appropriate imho.
This function might be useful for other plugins as well. Also, it has been
renamed to replace_special() which is slightly more appropriate imho.
bind plugin: Fix various bugs.
On Mon, 16 February 2009 Florian Forster wrote:
> The new plugins are:
>
> * BIND: Name-server and zone statistics
A few bugs are hidden there, attached is a patch that fixes most
of those I've discovered untils now.
- Url parameter never considered
- missing type definition for dns_reject
- MemoryStats is linked to the wrong variable
(TODO: memory stats seem not to work, probably dispatch_counter()
for gauge value ...)
- SOAOutv6 should be translated to SOA-IPv6 instead of SOA-IPv4
in order to be saved correctly and not cause timestamp collisions
Bruno
On Mon, 16 February 2009 Florian Forster wrote:
> The new plugins are:
>
> * BIND: Name-server and zone statistics
A few bugs are hidden there, attached is a patch that fixes most
of those I've discovered untils now.
- Url parameter never considered
- missing type definition for dns_reject
- MemoryStats is linked to the wrong variable
(TODO: memory stats seem not to work, probably dispatch_counter()
for gauge value ...)
- SOAOutv6 should be translated to SOA-IPv6 instead of SOA-IPv4
in order to be saved correctly and not cause timestamp collisions
Bruno
java plugin: Add some comments to a nasty if-cascade.
java plugin: Divide times received from Java by 1000.
Java keeps time as milliseconds in 64bit integers. Let's keep it that
way and translate to epoch transparently.
The other way around, from C to Java, already multiplies by 1000.
Java keeps time as milliseconds in 64bit integers. Let's keep it that
way and translate to epoch transparently.
The other way around, from C to Java, already multiplies by 1000.
java plugin: Have "DispatchValues" return a meaningful status.
I. e. the status of "plugin_dispatch_values". That's as meaningful as
we're going to get.
I. e. the status of "plugin_dispatch_values". That's as meaningful as
we're going to get.
collectd-java(5): Add a manual page for the java plugin.
java plugin: Added the possibility to configure java plugins.
Merge branch 'master' into ff/java
src/liboconfig/oconfig.[ch]: Add `oconfig_clone'.
This new function clones an entire sub-tree, that can be free'd again
using `oconfig_free'.
This new function clones an entire sub-tree, that can be free'd again
using `oconfig_free'.
java plugin: Implemented oconfig types in Java.
The CollectdAPI class has been moved to the `org.collectd.api'
namespace, too, so that this stuff is together..
The CollectdAPI class has been moved to the `org.collectd.api'
namespace, too, so that this stuff is together..
java plugin: Added some configuration possibilities.
java plugin: Added the ability to have `Write' callbacks in Java modules.
I think right now having both, a `Read' and a `Write' function, would be
a problem, because the same thread would enter the JVM twice, possibly
detaching itself from the JVM when the write callback is finished, while
it actually still is in the read callback. Adding a `dispatch thread' or
something similar should take care of this problem.
Other than that, converting `data_set_t' and `value_list_t' to their
Java equivalents and back works fine now.
I think right now having both, a `Read' and a `Write' function, would be
a problem, because the same thread would enter the JVM twice, possibly
detaching itself from the JVM when the write callback is finished, while
it actually still is in the read callback. Adding a `dispatch thread' or
something similar should take care of this problem.
Other than that, converting `data_set_t' and `value_list_t' to their
Java equivalents and back works fine now.
collectd.conf(5): Removed the section about filter_pcre.
This plugin no longer exists ...
This plugin no longer exists ...
Don't unnecessarily link match_regex against libpcre.
Since no plugin currently uses libpcre, configure no longer checks for it and
it has been removed from README.
Since no plugin currently uses libpcre, configure no longer checks for it and
it has been removed from README.
README: Replaced filter plugins with matches and targets.
README: Added the oracle plugin and libclntsh.
README: Added curl plugin.
java plugin: Add an early prototype of a Java binding, similar to the Perl plugin.
It's totally proof-of-concept, but it's possible to dispatch values from
a Java class using the ValueList implementation provided by Doug
MacEachern from Hyperic. The other way around is not yet implemented,
but that's just a matter of time and code. Configuration, notifications,
targets, matches - all that is still missing.
Right now, the code requires JNI version 1.2. Maybe I'll try to
introduce compatibility with JNI 1.1 at a later point, if it's really
useful for somebody.
Signed-off-by: Florian Forster <octo@leeloo.lan.home.verplant.org>
It's totally proof-of-concept, but it's possible to dispatch values from
a Java class using the ValueList implementation provided by Doug
MacEachern from Hyperic. The other way around is not yet implemented,
but that's just a matter of time and code. Configuration, notifications,
targets, matches - all that is still missing.
Right now, the code requires JNI version 1.2. Maybe I'll try to
introduce compatibility with JNI 1.1 at a later point, if it's really
useful for somebody.
Signed-off-by: Florian Forster <octo@leeloo.lan.home.verplant.org>
Merge branch 'sh/next'
postgresql: Fixed calculation of a database's max_params_num.
This parameter is used to store the size of a frequently used temporary list
and allows that it may be efficiently stored on the stack. It was accidentally
lost in commit 4d380d9, triggering an assertion in c_psql_exec_query_params().
This parameter is used to store the size of a frequently used temporary list
and allows that it may be efficiently stored on the stack. It was accidentally
lost in commit 4d380d9, triggering an assertion in c_psql_exec_query_params().
collectd.conf(5): Fixed some typos.
libcollectdclient: Use `EILSEQ' rather than `EPROTO'.
EPROTO is an XSR (XSI streams) extension and not supported on some
platforms (OpenBSD, apparently).
EPROTO is an XSR (XSI streams) extension and not supported on some
platforms (OpenBSD, apparently).
src/utils_db_query.c: Make `InstancePrefix' and `InstancesFrom' optional.
This is required by the default PostgreSQL queries.
This is required by the default PostgreSQL queries.
Merge branch 'sh/next'
Conflicts:
ChangeLog
Conflicts:
ChangeLog
collectd.conf(5): Fixed and improved the section about the filter mechanism.
src/Makefile.am: Link utils_db_query into the postgresql plugin.
collectd-perl(5): Documented the filter chain support.
ChangeLog: Updated date and fixed a typo.
collectd.conf(5): Fix a minor formatting error.
ChangeLog: Added changes to the perl plugin.
src/filter_chain.c: Made match_proc_t.create optional.
In most cases it does not make sense to not provide a create callback.
However, we never know what the future might bring, so let's chose the more
flexible approach.
In most cases it does not make sense to not provide a create callback.
However, we never know what the future might bring, so let's chose the more
flexible approach.
src/filter_chain.c: Fixed typos in warning / error messages.
perl plugin, Collectd.pm: Added support for filter chains.
fc_register() may now be used to register matches and targets with collectd.
The function takes three arguments: type, name, proc. 'type' has to be any of
FC_MATCH or FC_TARGET, 'name' specifies the name of the target / match and
'proc' is a hash of callbacks (specified by name just like any other
callbacks). There are three types of callbacks: create, destroy and match /
invoke - the former two being optional.
The match / invoke callback has to return any of the following statuses:
FC_MATCH_NO_MATCH, FC_MATCH_MATCHES, FC_TARGET_CONTINUE, FC_TARGET_STOP or
FC_TARGET_RETURN. If none of those constants are used, the behavior is
undefined.
fc_register() may now be used to register matches and targets with collectd.
The function takes three arguments: type, name, proc. 'type' has to be any of
FC_MATCH or FC_TARGET, 'name' specifies the name of the target / match and
'proc' is a hash of callbacks (specified by name just like any other
callbacks). There are three types of callbacks: create, destroy and match /
invoke - the former two being optional.
The match / invoke callback has to return any of the following statuses:
FC_MATCH_NO_MATCH, FC_MATCH_MATCHES, FC_TARGET_CONTINUE, FC_TARGET_STOP or
FC_TARGET_RETURN. If none of those constants are used, the behavior is
undefined.
perl plugin: Do not pass NULL to newRV().
newRV() does not handle that correctly and causes a segfault instead. Now, we
use PL_sv_undef instead.
newRV() does not handle that correctly and causes a segfault instead. Now, we
use PL_sv_undef instead.
Changed plugin_notification_meta_free()'s argument to a notification_meta_t.
This is more flexible and allows the function to be used when using the meta
data without an embedding notification object, e.g. when using the filter
chains.
This is more flexible and allows the function to be used when using the meta
data without an embedding notification object, e.g. when using the filter
chains.
perl plugin: Fixed a memory leak in pplugin_dispatch_notification().
Free the notification meta information that have possibly been allocated in
notification2hv().
Free the notification meta information that have possibly been allocated in
notification2hv().
perl plugin: Convert notification meta data as well.
The notification meta data are represented as an array of hash references:
[
{
name => <name>,
value => <value>
},
...
]
The notification meta data are represented as an array of hash references:
[
{
name => <name>,
value => <value>
},
...
]
perl plugin: Don't ignore the 'interval' member when converting value lists.
swap plugin: Be more sensitive about integer sizes in the *BSD code.
src/filter_chain.c: Document the `meta' argument passed to matches and targets inline.
configure.in: Improve checking for libstatgrab using pkg-config.
swap plugin: Fix another typo in the *BSD code.
Merge branch 'collectd-4.5'
Conflicts:
configure.in
Conflicts:
configure.in
Merge branch 'collectd-4.4' into collectd-4.5
Conflicts:
configure.in
Conflicts:
configure.in
collectd.conf(5): Removed references to the `main' chain.
The chains are now called `PreCache' and `PostCache'.
The chains are now called `PreCache' and `PostCache'.
collectd.conf(5): Add documentation for the `notify_email' plugin.
swap plugin: Fix two typos in the *BSD code.
swap plugin: Added support for OpenBSD and possibly other *BSDs.
ChangeLog: Document Simon's changes.
configure.in: Activate the cpu and swap plugins if sysctl is available.
cpu plugin: Check if all required sysctl defines are present.
Rather than checking for OpenBSD, since this interface may work with
other *BSDs, too. The order of the initialization code has been fixed,
too, and some other minor fixes..
Rather than checking for OpenBSD, since this interface may work with
other *BSDs, too. The order of the initialization code has been fixed,
too, and some other minor fixes..
cpu plugin: Fix indentation for the libstatgrab code.