* thermal plugin: The new thermal plugin collects system temperatures
using Linux ACPI thermal zone data.
+2008-10-16, Version 4.4.4
+ * build system: Change `--enable-<plugin>' to abort with an error if
+ dependencies are not met. Thanks to Bruno Prémont for the patch.
+ Also, the poisoning of various string functions has been restricted
+ to debug builds.
+ * collectd: Fix a memory leak in the global value cache. With every
+ *missing* value a couple of bytes would be leaked. Another memory
+ leak in the configuration handling code has been fixed. Thanks to
+ Niraj Tolia for reporting these issues.
+ * collectd: Fix an off-by-one error in the ignorelist functionality.
+ When using regular expressions, the last character would be missing,
+ possibly matching differently from what one would expect.
+ * collectdmon: Don't block SIGCHLD. This fixes a potential portability
+ problem.
+ * collectd-nagios: Fix handling of the `-d' option. Thanks to Fabian
+ Linzberger for reporting the but.
+ * network plugin: Fix a memory leak in the configuration handling
+ code. Thanks to Niraj Tolia for reporting this issue.
+ * perl plugin: Log an error message if bootstrapping `Collectd' fails.
+ * tail plugin: Call `clearerr' after reading an EOF. This fixes
+ problems with some `libc's. Thanks to Matthias Lay for reporting the
+ bug.
+
2008-09-01, Version 4.4.3
* collectd: Fix a memory leak in the threshold checking code.
* memcached plugin: Fix a too short timeout and a related file
'GPRINT:max:MAX:%5.1lf%sAh Max,',
'GPRINT:avg:LAST:%5.1lf%sAh Last\l'
],
+ connections => ['-v', 'Connections',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Connections",
+ 'GPRINT:min:MIN:%4.1lf Min,',
+ 'GPRINT:avg:AVERAGE:%4.1lf Avg,',
+ 'GPRINT:max:MAX:%4.1lf Max,',
+ 'GPRINT:avg:LAST:%4.1lf Last\l'
+ ],
cpu => ['-v', 'CPU load',
'DEF:avg={file}:value:AVERAGE',
'DEF:min={file}:value:MIN',
main ();
exit (0);
-# Configuration
-# {{{
+# Configuration {{{
=head1 CONFIGURATION
ascent_la_CFLAGS = $(AM_CFLAGS) \
$(BUILD_WITH_LIBCURL_CFLAGS) $(BUILD_WITH_LIBXML2_CFLAGS)
ascent_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS) $(BUILD_WITH_LIBXML2_LIBS)
-collectd_LDADD += "-dlopen" apache.la
+collectd_LDADD += "-dlopen" ascent.la
collectd_DEPENDENCIES += ascent.la
endif
$(INSTALL) -m 0640 collectd.conf $(DESTDIR)$(sysconfdir)/collectd.conf; \
fi; \
cp -f $(srcdir)/types.db $(DESTDIR)$(pkglibdir)/;
- $(INSTALL) -D -m 0644 $(srcdir)/postgresql_default.conf \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
+ $(INSTALL) -m 0644 $(srcdir)/postgresql_default.conf \
$(DESTDIR)$(pkgdatadir)/postgresql_default.conf;
# BaseName "Collectd::Plugin"
# EnableDebugger ""
# LoadPlugin foo
+#
+# <Plugin foo>
+# Foo "Bar"
+# Qux "Baz"
+# </Plugin>
#</Plugin>
#<Plugin ping>
# define __attribute__(x) /**/
#endif
-#if __GNUC__
+#if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__
# pragma GCC poison strcpy strcat strtok
#endif
* included.
*/
#ifndef DONT_POISON_SPRINTF_YET
-# if __GNUC__
+# if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__
# pragma GCC poison sprintf
# endif
#endif
#include <EXTERN.h>
#include <perl.h>
-#if __GNUC__
+#if defined(COLLECT_DEBUG) && COLLECT_DEBUG && defined(__GNUC__) && __GNUC__
# pragma GCC poison sprintf
#endif
static void c_psql_database_delete (c_psql_database_t *db)
{
PQfinish (db->conn);
+ db->conn = NULL;
sfree (db->queries);
db->queries_num = 0;
}
rows = PQntuples (res);
- if (1 > rows)
+ if (1 > rows) {
+ PQclear (res);
return 0;
+ }
cols = PQnfields (res);
if (query->cols_num != cols) {
log_err ("SQL query returned wrong number of fields "
"(expected: %i, got: %i)", query->cols_num, cols);
log_info ("SQL query was: %s", query->query);
+ PQclear (res);
return -1;
}
submit_gauge (db, col.type, col.type_instance, value);
}
}
+ PQclear (res);
return 0;
} /* c_psql_exec_query */
int j;
+ /* this will happen during reinitialization */
+ if (NULL != db->conn) {
+ c_psql_check_connection (db);
+ continue;
+ }
+
status = ssnprintf (buf, buf_len, "dbname = '%s'", db->database);
if (0 < status) {
buf += status;
signal_noise value:GAUGE:U:0
signal_power value:GAUGE:U:0
signal_quality value:GAUGE:0:U
+spam_check value:GAUGE:0:U
spam_score value:GAUGE:U:U
swap value:GAUGE:0:1099511627776
tcp_connections value:GAUGE:0:4294967295
/* Try to read from the filehandle. If that succeeds, everything appears to
* be fine and we can return. */
+ clearerr (obj->fh);
if (fgets (buf, buflen, obj->fh) != NULL)
{
buf[buflen - 1] = 0;