@cryptotaxi247 / netdata-1 / commits / 894141ec4

added proc_loadavg.c

Costa Tsaousis (ktsaou) committed Feb 10, 2016 at 00:40 UTC 894141ec4a8705690810cf5a0b886244bd6312a8
2 files changed +112
src/proc_loadavg.c new
+88
@@ -0,0 +1,88 @@
1 +#ifdef HAVE_CONFIG_H
2 +#include <config.h>
3 +#endif
4 +#include <stdio.h>
5 +#include <stdlib.h>
6 +#include <string.h>
7 +
8 +#include "common.h"
9 +#include "appconfig.h"
10 +#include "procfile.h"
11 +#include "rrd.h"
12 +#include "plugin_proc.h"
13 +
14 +int do_proc_loadavg(int update_every, unsigned long long dt) {
15 + static procfile *ff = NULL;
16 + static int do_loadavg = -1, do_all_processes = -1;
17 +
18 + if(dt) {};
19 +
20 + if(!ff) {
21 + char filename[FILENAME_MAX + 1];
22 + snprintf(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/loadavg");
23 + ff = procfile_open(config_get("plugin:proc:/proc/loadavg", "filename to monitor", filename), " \t,:|/", PROCFILE_FLAG_DEFAULT);
24 + }
25 + if(!ff) return 1;
26 +
27 + ff = procfile_readall(ff);
28 + if(!ff) return 0; // we return 0, so that we will retry to open it next time
29 +
30 + if(do_loadavg == -1) do_loadavg = config_get_boolean("plugin:proc:/proc/loadavg", "enable load average", 1);
31 + if(do_all_processes == -1) do_all_processes = config_get_boolean("plugin:proc:/proc/loadavg", "enable total processes", 1);
32 +
33 + if(procfile_lines(ff) < 1) {
34 + error("/proc/loadavg has no lines.");
35 + return 1;
36 + }
37 + if(procfile_linewords(ff, 0) < 6) {
38 + error("/proc/loadavg has less than 6 words in it.");
39 + return 1;
40 + }
41 +
42 + double load1 = strtod(procfile_lineword(ff, 0, 0), NULL);
43 + double load5 = strtod(procfile_lineword(ff, 0, 1), NULL);
44 + double load15 = strtod(procfile_lineword(ff, 0, 2), NULL);
45 +
46 + //unsigned long long running_processes = strtoull(procfile_lineword(ff, 0, 3), NULL, 10);
47 + unsigned long long active_processes = strtoull(procfile_lineword(ff, 0, 4), NULL, 10);
48 + //unsigned long long next_pid = strtoull(procfile_lineword(ff, 0, 5), NULL, 10);
49 +
50 +
51 + RRDSET *st;
52 +
53 + // --------------------------------------------------------------------
54 +
55 + if(do_loadavg) {
56 + st = rrdset_find_byname("system.load");
57 + if(!st) {
58 + st = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, update_every, RRDSET_TYPE_LINE);
59 +
60 + rrddim_add(st, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE);
61 + rrddim_add(st, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE);
62 + rrddim_add(st, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE);
63 + }
64 + else rrdset_next(st);
65 +
66 + rrddim_set(st, "load1", load1 * 1000);
67 + rrddim_set(st, "load5", load5 * 1000);
68 + rrddim_set(st, "load15", load15 * 1000);
69 + rrdset_done(st);
70 + }
71 +
72 + // --------------------------------------------------------------------
73 +
74 + if(do_all_processes) {
75 + st = rrdset_find_byname("system.active_processes");
76 + if(!st) {
77 + st = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
78 +
79 + rrddim_add(st, "active", NULL, 1, 1, RRDDIM_ABSOLUTE);
80 + }
81 + else rrdset_next(st);
82 +
83 + rrddim_set(st, "active", active_processes);
84 + rrdset_done(st);
85 + }
86 +
87 + return 0;
88 +}
web/index.html
+24
@@ -946,6 +946,30 @@ var chartData = {
946 info: 'System swap memory, read from <code>/proc/meminfo</code>.'
947 },
948
949 + 'mem.ksm_savings': {
950 + heads: [
951 + gaugeChart('Saved', '12%', 'savings', '#0099CC')
952 + ]
953 + },
954 +
955 + 'mem.ksm_ratios': {
956 + heads: [
957 + function(id) {
958 + return '<div data-netdata="' + id + '"'
959 + + ' data-gauge-max-value="100"'
960 + + ' data-chart-library="gauge"'
961 + + ' data-title="Savings"'
962 + + ' data-units="percentage %"'
963 + + ' data-gauge-adjust="width"'
964 + + ' data-width="12%"'
965 + + ' data-before="0"'
966 + + ' data-after="-CHART_DURATION"'
967 + + ' data-points="CHART_DURATION"'
968 + + ' role="application"></div>';
969 + }
970 + ]
971 + },
972 +
973 'mem.committed': {
974 colors: NETDATA.colors[3]
975 },