@cryptotaxi247 / netdata-1 / commits / 3b6f879d0

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 +}