Amit Gupta [Thu, 16 Apr 2009 10:39:12 +0000 (12:39 +0200)]
apache plugin: Prepare for parallel reading of instances.
Do find the patch attached. I have moved apache_buffer and friends to the
apache_t structure and set the plugin_instance if there. There are other
changes as well like freeing up the lci->values etc. Have a look at the patch
and let me know if this looks okay to you.
Amit Gupta [Wed, 15 Apr 2009 08:40:26 +0000 (10:40 +0200)]
apache plugin: Add support for multiple servers.
Hi,
Based on Bruno/Florian input, I have changed the apache code to support
the following configuration structure:
<Plugin apache>
<Instance "instance_name">
URL ....
Host ... # optional and defaults to hostname_g
</Instance>
URL ...
</Plugin>
I have defined Instance as a block and not Host because the idea here is to
monitor multiple apache instances on the same machine. For apache instances on
remote machines, one could specify Host within the Instance block (which is
optional and default is hostname_g). For legacy configuration, I am converting
the legacy block to <Instance ""> which defaults to apache.
Do find the patch attached. I am not very familiar with git format-patch
and send-email functionalities as yet, so I am attaching a diff -ur
output as mentioned in the submitting-patches.shtml page.
The things which haven't been done as yet:
- I haven't used plugin_register_complex_read as yet. The main reason
being I am working on 4.6.1 version and I can't seem to find the
function plugin_register_complex_read in the code base. I believe it
is being added only in 4.6.2
- lighttpd scoreboard is not yet handled. This would probably be my next
task.
Question:
Given that this plugin can be used by both apache and lighttpd, how do
we find out if the server is lighttpd or apache?. It will be good to
have different rrd file names for apache and lighttpd which could only
be done if we set different vl.type for both the servers. One way I can
think of is to rely on the differences of the mod_status output of the
two servers or perhaps we could have a generic type as "httpd". (which
can be done only in the next major release if you folks are planning to
change the plugin name to httpd in the next major release)
network plugin: Use SHA-1 instead of SHA-224 to check integrity.
SHA-224 is not supported by older versions of libgcrypt (i. e. the
version included in Debian Etch), so lets take this more conservative
alternative instead.
Also, the padding bytes have been moved to the beginning of the packet
and will be filled with randomness, so they serve as some kind of IV.
It is, however, not guaranteed that any padding bytes exist at all, so
in theory two identical packets could be encrypted in the same way.
Restore BYTE_ORDER on DARWIN The files matching grep "define _POSIX_C_SOURCE" src/*.c on MacOSX do not compile: In file included from target_notification.c:60: collectd.h:172:3: error: #error "Cannot determine byte order"
See /usr/include/i386/endian.h:
#if defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
network plugin: Implement signing and encryption of network traffic.
The patch adds shared secret signing and encryption of network traffic.
Currently, there are three “security levels”:
- Encrypt
Encrypt outgoing data and only accept encrypted data when receiving.
- Sign
Outgoing data is signed; signed and encrypted data is accepted when
receiving.
- None
Send without any cryptography and accept anything when receiving.
The security level and shared secret can be set per-socket, so that
forwarding instances can re-encrypt and similar goodies.
The libgcrypt library is used to calculate hashes, encrypt and decrypt,
see <http://www.gnu.org/software/libgcrypt/>. I tested compiling the
`network' plugin without libgcrypt afterwards, but haven't tested this
much yet.
Algorithms used are SHA-256 for signing and AES-256 in ECB mode /
SHA-224 when encrypting. Also, SHA-256 is used to get the 32 byte key
for AES-256 from the user-supplied secret.
java plugin: Use `void *' to pass arguments of varying type.
The types passed at VM creation time differ from Java implementation to the
next and/or only certain compiler complain. This way we should be on the safe
side.
Sebastian Harl [Fri, 20 Mar 2009 18:32:57 +0000 (19:32 +0100)]
mysql plugin: Added support for "slave notifications".
The new boolean config option "SlaveNotifications" may be used to enable
notifications if the replication slave I/O and / or SQL threads are not
running (and the respective OKAY notifications). Since this is somewhat
related to the time offset between master and slave, "time_offset" is used for
the type information stored in the notification.
Sebastian Harl [Fri, 20 Mar 2009 17:23:51 +0000 (18:23 +0100)]
mysql plugin: Added support for master/slave statistics.
MySQL replication master and slave statistics may be enabled using the newly
added boolean config options "MasterStats" and "SlaveStats". In the first
case, the position in the binlog is collected while in the later case the
read and exec positions in the master log as well as the value of the
Seconds_Behind_Master variable are collected.
For the log positions, the counter type "mysql_log_position" has been
introduced while "time_offset" is used for the Seconds_Behind_Master values.
Florian Forster [Thu, 19 Mar 2009 18:46:01 +0000 (19:46 +0100)]
exec plugin: Allow executed programs to close STDERR.
When an executed program is closing STDERR but continues running, the
daemon will wait for the child to exit and the child will eventually
block because the pipe is filled up, resulting in no statistics being
collected.
Thanks to Thorsten von Eicken for finding this problem :)
Marco Chiappero [Thu, 19 Mar 2009 12:30:32 +0000 (13:30 +0100)]
uptime plugin: Add a plugin to measure the time a system has been running.
Florian Forster ha scritto:
>Hi Marco,
Hi Florian,
> Checking the KSTAT_TYPE_NAMED twice (three times if you count the
> assertion) is of course not necessary. I suspect a copy'n'paste error ;)
Me too. Please remove the second one at least, kstat_read do not change
ks_type.
>A quick `grep' revealed that `get_kstat' is only used in two places, the
>memory and the swap plugin - both trying to figure out the pagesize. If
>you need something else than `KSTAT_TYPE_NAMED', I'd suggest to move the
>checks to a new function `get_kstat_pagesize' and use that function in
>the two plugins.
I went for the kstat.h only solution.
Ok, I'm attaching the code, please check the preprocessor directives for
the includes section, I don't much about defines created by the build
system and its names.
I'm using it right now on a linux machine, but I haven't tested yet on
Solaris and BSDs. Today I tried to compile it on OpenSolaris, but after
fighting with the packaging system and many other things I gave up and
decided I won't try anymore. So, since I'd like to say the plugin is
done after testing it, Solaris testers are wanted :P
As soon as I can I will edit the wiki page, but first I want to have a
closer look to the iptable plugin and see how many modifications are
needed for IPv6 and then have an opinion about the single vs. double
plugin approach.
See you soon :)
Florian Forster [Wed, 18 Mar 2009 17:39:57 +0000 (18:39 +0100)]
snmp plugin: Use `complex reads', one for each host.
This way the reads are sheduled by the global read threads, thread
handling can be removed completely and intervals which are not a
multiple of the global interval are possible.
Florian Forster [Tue, 17 Mar 2009 13:30:02 +0000 (14:30 +0100)]
mysql plugin: Some changes to the configuration handling.
The member `instance' is used to determine whether or not to use ``legacy
mode'':
- If it is NULL, legacy mode is in action
- Otherwise, non-legacy mode should be used.
``legacy mode'' and ``non-legacy mode'' cannot be mixed: If at least one
database is defined in the ``new'' way, all options that'd be valid in
legacy mode will only trigger a warning.
Florian Forster [Sun, 15 Mar 2009 23:02:55 +0000 (00:02 +0100)]
src/plugin.c: Use a heap to schedule reads.
With this change basically only timeout checks are triggered from the
global "read loop". This will allow each read function to be queried at
a different interval. This is currently not used, but will come in handy
in the future.
Bruno Prémont [Sat, 14 Mar 2009 17:06:58 +0000 (18:06 +0100)]
bind plugin: Actually handle RR cache numbers as `gauge'..
Hi Florian,
Well a working patch was even less trivial as the quick one from
yesterday evening.
Just using a gauge type is not sufficient (only 0 is written to RRD
files), it's also necessary to adjust the bind_xml_stats_handle_view()
as has been done for the memory statistics
Attached is a patch to bind.c (I skipped types.db) which fixes the
cache data collection.
In addition I attached a graph of the cache evolution and memory (for
memory it might be worth giving it an own type as it's not cumulative
at all)