summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0627701)
raw | patch | inline | side by side (parent: 0627701)
author | Florian Forster <sifnfors@faui02h.informatik.uni-erlangen.de> | |
Mon, 22 Jan 2007 08:59:47 +0000 (09:59 +0100) | ||
committer | Florian Forster <sifnfors@faui02h.informatik.uni-erlangen.de> | |
Mon, 22 Jan 2007 08:59:47 +0000 (09:59 +0100) |
Only works on Linux systems right now..
configure.in | patch | blob | history | |
src/Makefile.am | patch | blob | history | |
src/entropy.c | [new file with mode: 0644] | patch | blob |
diff --git a/configure.in b/configure.in
index ac6e5c998dd2cd6c681692a4c1afa9b3d01a6891..0b0aa8904f2515c5e45d26459f67b10105b14e04 100644 (file)
--- a/configure.in
+++ b/configure.in
AC_COLLECTD([df], [disable], [module], [df statistics])
AC_COLLECTD([dns], [disable], [module], [dns statistics])
AC_COLLECTD([email], [disable], [module], [email statistics])
+AC_COLLECTD([entropy], [disable], [module], [entropy statistics])
AC_COLLECTD([hddtemp], [disable], [module], [hdd temperature statistics])
AC_COLLECTD([load], [disable], [module], [system load statistics])
AC_COLLECTD([mbmon], [disable], [module], [motherboard monitor statistics])
disk . . . . . . . $enable_disk
dns . . . . . . . . $enable_dns
email . . . . . . . $enable_email
+ entropy . . . . . . $enable_entropy
hddtemp . . . . . . $enable_hddtemp
load . . . . . . . $enable_load
mbmon . . . . . . . $enable_mbmon
diff --git a/src/Makefile.am b/src/Makefile.am
index 555841912ca9ac5a1bb8451d603b0e812a27bf11..87dcec07984122862f133d780dc33f8d608324c3 100644 (file)
--- a/src/Makefile.am
+++ b/src/Makefile.am
collectd_DEPENDENCIES += email.la
endif
+if BUILD_MODULE_ENTROPY
+pkglib_LTLIBRARIES += entropy.la
+entropy_la_SOURCES = entropy.c
+entropy_la_LDFLAGS = -module -avoid-version
+collectd_LDADD += "-dlopen" entropy.la
+collectd_DEPENDENCIES += entropy.la
+endif
+
#if BUILD_MODULE_QUOTA
#pkglib_LTLIBRARIES += quota.la
#quota_la_SOURCES = quota_plugin.c quota_plugin.h
diff --git a/src/entropy.c b/src/entropy.c
--- /dev/null
+++ b/src/entropy.c
@@ -0,0 +1,97 @@
+/**
+ * collectd - src/entropy.c
+ * Copyright (C) 2005,2006 Florian octo Forster
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; only version 2 of the License is applicable.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Florian octo Forster <octo at verplant.org>
+ **/
+
+#include "collectd.h"
+#include "common.h"
+#include "plugin.h"
+
+#if KERNEL_LINUX
+# define ENTROPY_HAVE_READ 1
+#else
+# define ENTROPY_HAVE_READ 0
+#endif
+
+#define ENTROPY_FILE "/proc/sys/kernel/random/entropy_avail"
+
+static data_source_t dsrc[1] =
+{
+ {"entropy", DS_TYPE_GAUGE, 0.0, 4294967295.0}
+};
+
+static data_set_t ds =
+{
+ "entropy", 1, dsrc
+};
+
+#if ENTROPY_HAVE_READ
+static void entropy_submit (double entropy)
+{
+ value_t values[1];
+ value_list_t vl = VALUE_LIST_INIT;
+
+ values[0].gauge = entropy;
+
+ vl.values = values;
+ vl.values_len = 1;
+ vl.time = time (NULL);
+ strcpy (vl.host, hostname);
+ strcpy (vl.plugin, "entropy");
+ strcpy (vl.plugin_instance, "");
+ strcpy (vl.type_instance, "");
+
+ plugin_dispatch_values ("entropy", &vl);
+}
+
+static int entropy_read (void)
+{
+#if KERNEL_LINUX
+ double entropy;
+ FILE *fh;
+ char buffer[64];
+
+ fh = fopen (ENTROPY_FILE, "r");
+ if (fh == NULL)
+ return (-1);
+
+ if (fgets (buffer, sizeof (buffer), fh) == NULL)
+ {
+ fclose (fh);
+ return (-1);
+ }
+ fclose (fh);
+
+ entropy = atof (buffer);
+
+ if (entropy > 0.0)
+ entropy_submit (entropy);
+#endif /* KERNEL_LINUX */
+
+ return (0);
+}
+#endif /* ENTROPY_HAVE_READ */
+
+void module_register (void)
+{
+ plugin_register_data_set (&ds);
+#if ENTROPY_HAVE_READ
+ plugin_register_read ("entropy", entropy_read);
+#endif
+}