Oleg King [Tue, 27 May 2008 14:48:51 +0000 (16:48 +0200)]
processes plugin: Add the `ProcessMatch' option.
Hello!
There is a patch for processes plugin:
1. Added support for libkvm, so processes plugin will be run under
FreeBSD.
2. Added ProcessMatch "NAME" "REGEXP" directive, that adds process
into list of processes that we watch on, but with identification by
Regexp. Rexexp matched against command line, if command line is
empty, than against task name.
3. Changed way we finding processes. Now we match not only first
process, but all processes that match selected criteria. This allows
to make some type of "grouping":
Process "httpd"
Process "dhclient"
ProcessMatch "only-my-perl-program" "perl(.*)my-program\.pl"
ProcessMatch "perl-programs" "^/usr/bin/perl"
ProcessMatch "all-tasks" "(.*)"
Patch is attached to this message.
To octo: it is neede to make some thiungs I have not done:
1. make changes in manpages
2. make changes in config file
3. write rules that users should use when giving names with ProcessMatch
Sebastian Harl [Sat, 24 May 2008 18:32:43 +0000 (20:32 +0200)]
src/liboconfig/oconfig.c: Declare "c_file" as "const char *".
This fixes an "assignment discards qualifiers from pointer target type"
warning. That string stores the name of the config file which is not
going to be modified by liboconfig.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 22 May 2008 11:37:57 +0000 (13:37 +0200)]
src/plugin.c: Don't require write callbacks to be present.
plugin_dispatch_values() used to fail, if no write callbacks had been
registered. As that function is used to update the cache and check
threshold as well, this limited the flexibility of collectd setups. Thus,
the error message has been downgraded to a one-time complaint.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 22 May 2008 11:34:54 +0000 (13:34 +0200)]
src/utils_complain.[ch]: Reintroduced an improved version of the complain mechanism.
This has been asked for a couple of times and since I need it now, here it
goes... ;-) I've done the following modifications to Florian's original
version:
* Renamed "plugin_complain" to "c_complain".
* Renamed "plugin_relief" to "c_release", thus using two verbs which is
more consistent imho.
* Added "c_complain_once" to report a complaint only once.
* Use timestamps instead of counting multiples of "interval_g" to
determine when to report again. Thus, multiple calls to the complain-
functions in one interval are allowed.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 22 May 2008 11:36:00 +0000 (13:36 +0200)]
src/utils_llist.c: Improved robustness against NULL pointers.
All functions searching for some list entry now return NULL if the given
list equals NULL. Imho, that's the expected behavior. Also, it removes the
need to check the lists from the calling function while that function
usually checks the returned list entry anyway.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Wed, 21 May 2008 14:50:07 +0000 (16:50 +0200)]
collectd-nagios: Updated to the new "unixsock" protocol.
When disambiguating the protocol used by the unixsock plugin in commit 90287c6d240a168fca8d01f8330e2e2263e1f0a4 ("Disambiguated the protocol used
by the unixsock (and other) plugins.") the formatting of the return values
of the "GETVAL" command has been modified. This patch updates
collectd-nagios to handle the new format correctly.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Mon, 19 May 2008 21:12:42 +0000 (23:12 +0200)]
configure: Reformatted the configuration summary.
The name of the "desktop_notification" plugin was too long to fit into the
formatting of the summary printed at the end of the configure run. To keep
the other patch readable, fixing this has been split into an extra patch.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Mon, 19 May 2008 21:08:17 +0000 (23:08 +0200)]
desktop_notification: Added a plugin to send desktop notifications.
This plugin sends desktop notifications to a notification daemon, as
defined in the Desktop Notification Specification (see
http://www.galago-project.org/specs/notification/).
The timeout after which to expire the displayed notification may be
configured in collectd.conf.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Florian Forster [Tue, 13 May 2008 12:28:58 +0000 (14:28 +0200)]
src/utils_cmd_flush.c: Add the `identifier' option.
Using something like
FLUSH plugin=rrdtool identifier=localhost/cpu-0/cpu-idle
will now only flush the local cpu-0/cpu-idle value, only using the rrdtool
plugin.
This is meant to be used in frontends which want to display up-to-date graphs
but there are too many hosts/rrd files to update them ``live'', i. e. without
caching.
Sebastian Harl [Thu, 1 May 2008 23:13:24 +0000 (01:13 +0200)]
daemon: Ignore SIGPIPE.
The default action for the PIPE signal is to terminate the process. This
is not really what we want for collectd, as e.g. a client of the unixsock
plugin (which might even be running without root privileges) could kill
the daemon by closing the socket right after sending a request.
The signal now gets ignored and each I/O function is checked for success.
To simply that, the unixsock's output stream is now configured to be line
buffered, removing the need to call fflush() (which could fail as well and
would have to be checked for success).
While I was at it, I renamed the sigaction struct for SIGCHLD to fit the
coding style used elsewhere in collectd.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 1 May 2008 10:48:02 +0000 (12:48 +0200)]
Add libiptc.
libiptc is not meant to be a public interface by upstream. Debian has thus
removed it from all packages. To be able to use it, we need to take care
of it ourselves.
The configure script now checks, if libiptc is available and uses the
shipped version as a fallback.
The following changes to the libiptc sources were required:
* added copyright headers mentioning the "Netfilter Core Team" as author
* changed libiptc/* includes to * only
* made libiptc.c:standard_target_map() static
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Florian Forster [Sat, 3 May 2008 21:17:10 +0000 (23:17 +0200)]
powerdns plugin: Replace the `Command' option with the `Collect' option.
The original code let the user define the command to use when querying the
server. This commit changes that and lets the user select the _values_ he's
interested in. Depending on whether an authorative server or a recursor is
collected this
- issues a `SHOW *' and manually greps the interesting pieces, or
- builds a command that requests only the interesting values.
Code compiles but it untested. Manpage not yet updated.
build system: Define HAVE_LIBSTATGRAB if the statgrab library is available.
This define is used in some plugins. Thanks to Oleg King for noticing and
pointing this out and thanks to Sebastian Harl for a first patch which,
unfortunately, doesn't work anymore after changing the configure script.
Sebastian Harl [Mon, 28 Apr 2008 14:53:57 +0000 (16:53 +0200)]
perl plugin: Work around a compiler warning on FreeBSD.
On FreeBSD, PERL_SYS_INIT3 expands to some expression which triggers a "value
computed is not used" warning by gcc. By telling the compiler to ignore this
value, we can work around this issue. In the long run, this should imho be
fixed in Perl though.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 27 Apr 2008 18:58:44 +0000 (20:58 +0200)]
email plugin: Simplified code.
While looking at the code for some reason, I decided to simplify and
improve large parts of it. Most notably, standard IO streams are now used
to read from the socket. This allowed to remove large parts of the code
which were used to read and buffer data from the socket so far.
Also among the changes:
* free any allocated memory
* added / improved log messages
* do not require euid == 0 to chown() the socket
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 27 Apr 2008 18:56:09 +0000 (20:56 +0200)]
perl plugin: Exported plugin_flush*() to Perl.
This adds the following functions to collectd's Perl API which flush the
given plugins using the given interval.
* Collectd::plugin_flush:
This function is a frontend to _flush_one() and _flush_all() and
expects up to two named parameters:
- timeout => $timeout
- name => $name or [ $name1, $name2, ... ]
* Collectd::plugin_flush_one:
This function expects exactly two parameters, namely the timeout and
the plugin name.
* Collectd::plugin_flush_all:
This function expects a single parameter, namely the timeout.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 27 Apr 2008 18:53:49 +0000 (20:53 +0200)]
perl plugin, Collectd.pm: Added support to flush Perl plugins.
Perl plugins may now register a callback of type Collectd::TYPE_FLUSH. A
single integer argument, representing the timeout in seconds, will be
passed to such callbacks.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 20 Apr 2008 21:21:50 +0000 (23:21 +0200)]
Collectd.pm: Fixed the check for complete function names in plugin_register.
plugin_register() checks if the registered function includes the plugin's
package name. Up to now, this check would also have succeeded if the
function name itself would be prepended by the package name. Now, the
check looks for the separator "::".
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 20 Apr 2008 21:20:45 +0000 (23:20 +0200)]
Unified string handling.
sstrncpy() and the newly added function ssnprintf() are now used all over
the place to make sure strings are null terminated. This removes quite
some duplicate code that was found all over the place and thus fairly
increases overall readability of the code. Also sizeof() is used instead
of hard-coded constants where appropriate to determine the available
space.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Sun, 20 Apr 2008 21:19:28 +0000 (23:19 +0200)]
Added "type" to the value_list_t struct.
This way, the complete tuple (host, plugin, plugin instance, type, type
instance) is stored in a single data-type which is more straight forward
and allows a more flexible use of that data-type. As a consequence, there
is no longer a need to explicitly pass the type to some functions, most
notably plugin_dispatch_values(), which have been updated in that respect.
The "perl" plugin has also been updated to reflect this change. For
backwards compatibility, plugin_dispatch_values() still accepts a second
argument - however, a warning will be submitted to the daemon in that
case.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>