added available entropy
Costa Tsaousis (ktsaou) committed
Apr 4, 2015 at 21:26 UTC
3b6f879d053f9384c2b06ce3269bcb47ce59ceb8
4 files changed
+41
-1
src/Makefile
+1
-1
@@ -24,7 +24,7 @@ endif
24
25
COMMON_FLAGS = BIN_DIR='$(BIN_DIR)' CONFIG_DIR='$(CONFIG_DIR)' LOG_DIR='$(LOG_DIR)' PLUGINS_DIR='$(PLUGINS_DIR)'
26
27
-proc_sources = proc_net_dev.c proc_net_ip_vs_stats.c proc_diskstats.c proc_meminfo.c proc_net_netstat.c proc_net_snmp.c proc_net_stat_conntrack.c proc_stat.c proc_vmstat.c proc_net_rpc_nfsd.c
27
+proc_sources = proc_net_dev.c proc_net_ip_vs_stats.c proc_diskstats.c proc_meminfo.c proc_net_netstat.c proc_net_snmp.c proc_net_stat_conntrack.c proc_stat.c proc_vmstat.c proc_net_rpc_nfsd.c proc_sys_kernel_random_entropy_avail.c
28
sources = avl.c dictionary.c procfile.c common.c log.c popen.c url.c config.c web_buffer.c storage_number.c web_client.c global_statistics.c rrd.c rrd2json.c web_server.c plugins_d.c daemon.c plugin_tc.c plugin_checks.c plugin_idlejitter.c plugin_proc.c unit_test.c main.c
29
libs = -pthread -lz
30
src/plugin_proc.c
+5
@@ -42,6 +42,7 @@ void *proc_main(void *ptr)
42
int vdo_proc_meminfo = !config_get_boolean("plugin:proc", "/proc/meminfo", 1);
43
int vdo_proc_vmstat = !config_get_boolean("plugin:proc", "/proc/vmstat", 1);
44
int vdo_proc_net_rpc_nfsd = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
45
+ int vdo_proc_sys_kernel_random_entropy_avail = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
46
int vdo_cpu_netdata = !config_get_boolean("plugin:proc", "netdata server resources", 1);
47
48
RRDSET *stcpu = NULL, *stclients = NULL, *streqs = NULL, *stbytes = NULL;
@@ -54,6 +55,10 @@ void *proc_main(void *ptr)
55
56
// BEGIN -- the job to be done
57
58
+ if(!vdo_proc_sys_kernel_random_entropy_avail) {
59
+ debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail().");
60
+ vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, usec+susec);
61
+ }
62
if(!vdo_proc_net_dev) {
63
debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_dev().");
64
vdo_proc_net_dev = do_proc_net_dev(rrd_update_every, usec+susec);
src/plugin_proc.h
+1
@@ -13,5 +13,6 @@ extern int do_proc_stat(int update_every, unsigned long long dt);
13
extern int do_proc_meminfo(int update_every, unsigned long long dt);
14
extern int do_proc_vmstat(int update_every, unsigned long long dt);
15
extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt);
16
+extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt);
17
18
#endif /* NETDATA_PLUGIN_PROC_H */
src/proc_sys_kernel_random_entropy_avail.c
new
+34
@@ -0,0 +1,34 @@
1
+#include <inttypes.h>
2
+#include <stdio.h>
3
+#include <stdlib.h>
4
+
5
+#include "config.h"
6
+#include "procfile.h"
7
+#include "rrd.h"
8
+#include "plugin_proc.h"
9
+
10
+int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt) {
11
+ static procfile *ff = NULL;
12
+
13
+ if(dt) {} ;
14
+
15
+ if(!ff) ff = procfile_open("/proc/sys/kernel/random/entropy_avail", "", PROCFILE_FLAG_DEFAULT);
16
+ if(!ff) return 1;
17
+
18
+ ff = procfile_readall(ff);
19
+ if(!ff) return 0; // we return 0, so that we will retry to open it next time
20
+
21
+ unsigned long long entropy = strtoull(procfile_lineword(ff, 0, 0), NULL, 10);
22
+
23
+ RRDSET *st = rrdset_find_bytype("system", "entropy");
24
+ if(!st) {
25
+ st = rrdset_create("system", "entropy", NULL, "system", "Available Entropy", "entropy", 1000, update_every, RRDSET_TYPE_LINE);
26
+ rrddim_add(st, "entropy", NULL, 1, 1, RRDDIM_ABSOLUTE);
27
+ }
28
+ else rrdset_next(st);
29
+
30
+ rrddim_set(st, "entropy", entropy);
31
+ rrdset_done(st);
32
+
33
+ return 0;
34
+}