]> arthur.barton.de Git - netdata.git/commitdiff
added available entropy
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sat, 4 Apr 2015 18:26:04 +0000 (21:26 +0300)
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sat, 4 Apr 2015 18:26:04 +0000 (21:26 +0300)
src/Makefile
src/plugin_proc.c
src/plugin_proc.h
src/proc_sys_kernel_random_entropy_avail.c [new file with mode: 0755]

index 1270cbb6bd0923b530d7875bb2768e230f47f22b..3e098f88bddba87591edb9604b34081d3b3ad24e 100755 (executable)
@@ -24,7 +24,7 @@ endif
 
 COMMON_FLAGS = BIN_DIR='$(BIN_DIR)' CONFIG_DIR='$(CONFIG_DIR)' LOG_DIR='$(LOG_DIR)' PLUGINS_DIR='$(PLUGINS_DIR)'
 
-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_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
 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
 libs    = -pthread -lz
 
index 294188b3b8e4382f27d4dee588dfdc84f2e52cb1..e14c181cd1fb05f1ccab74966ccfcc53ef96dde5 100755 (executable)
@@ -42,6 +42,7 @@ void *proc_main(void *ptr)
        int vdo_proc_meminfo                    = !config_get_boolean("plugin:proc", "/proc/meminfo", 1);
        int vdo_proc_vmstat                     = !config_get_boolean("plugin:proc", "/proc/vmstat", 1);
        int vdo_proc_net_rpc_nfsd               = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
+       int vdo_proc_sys_kernel_random_entropy_avail    = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
        int vdo_cpu_netdata                     = !config_get_boolean("plugin:proc", "netdata server resources", 1);
 
        RRDSET *stcpu = NULL, *stclients = NULL, *streqs = NULL, *stbytes = NULL;
@@ -54,6 +55,10 @@ void *proc_main(void *ptr)
                
                // BEGIN -- the job to be done
                
+               if(!vdo_proc_sys_kernel_random_entropy_avail) {
+                       debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail().");
+                       vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, usec+susec);
+               }
                if(!vdo_proc_net_dev) {
                        debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_dev().");
                        vdo_proc_net_dev = do_proc_net_dev(rrd_update_every, usec+susec);
index 513f07d7e95c8677aaa006812d21da16470fe49e..e4ba2cc8f4ec89f09d99f8b06a67219619c93fc7 100755 (executable)
@@ -13,5 +13,6 @@ extern int do_proc_stat(int update_every, unsigned long long dt);
 extern int do_proc_meminfo(int update_every, unsigned long long dt);
 extern int do_proc_vmstat(int update_every, unsigned long long dt);
 extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt);
+extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt);
 
 #endif /* NETDATA_PLUGIN_PROC_H */
diff --git a/src/proc_sys_kernel_random_entropy_avail.c b/src/proc_sys_kernel_random_entropy_avail.c
new file mode 100755 (executable)
index 0000000..cb6154b
--- /dev/null
@@ -0,0 +1,34 @@
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "config.h"
+#include "procfile.h"
+#include "rrd.h"
+#include "plugin_proc.h"
+
+int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt) {
+       static procfile *ff = NULL;
+
+       if(dt) {} ;
+
+       if(!ff) ff = procfile_open("/proc/sys/kernel/random/entropy_avail", "", PROCFILE_FLAG_DEFAULT);
+       if(!ff) return 1;
+
+       ff = procfile_readall(ff);
+       if(!ff) return 0; // we return 0, so that we will retry to open it next time
+
+       unsigned long long entropy = strtoull(procfile_lineword(ff, 0, 0), NULL, 10);
+
+       RRDSET *st = rrdset_find_bytype("system", "entropy");
+       if(!st) {
+               st = rrdset_create("system", "entropy", NULL, "system", "Available Entropy", "entropy", 1000, update_every, RRDSET_TYPE_LINE);
+               rrddim_add(st, "entropy", NULL, 1, 1, RRDDIM_ABSOLUTE);
+       }
+       else rrdset_next(st);
+
+       rrddim_set(st, "entropy", entropy);
+       rrdset_done(st);
+
+       return 0;
+}