@cryptotaxi247 / netdata-1 / commits / 331ae4c0c

Minor cleanups and plugin structure changes

Vladimir Kobal committed Dec 5, 2016 at 22:10 UTC 331ae4c0caccff0df4abac224de94c969b6f35cd
10 files changed +333 -608
configure.ac
+1 -1
@@ -41,7 +41,7 @@ case "$host_os" in
41 freebsd*)
42 build_target=freebsd
43 ;;
44 -*)
44 +*)
45 ;;
46 esac
47
src/Makefile.am
+1 -3
@@ -62,8 +62,7 @@ netdata_SOURCES = \
62 if FREEBSD
63 netdata_SOURCES += \
64 plugin_freebsd.c plugin_freebsd.h \
65 - freebsd_loadavg.c \
66 - freebsd_stat.c \
65 + freebsd_sysctl.c \
66 $(NULL)
67 else
68 netdata_SOURCES += \
@@ -91,7 +90,6 @@ netdata_SOURCES += \
90 $(NULL)
91 endif
92
94 -
93 netdata_LDADD = \
94 $(OPTIONAL_MATH_LIBS) \
95 $(OPTIONAL_NFACCT_LIBS) \
src/common.c
+6 -9
@@ -1,9 +1,8 @@
1 #include "common.h"
2
3 -#ifdef __FreeBSD__
4 -# include <sys/thr.h>
5 -# define O_NOATIME 0
6 -# define MADV_DONTFORK INHERIT_NONE
3 +#ifdef __FreeBSD__
4 +# define O_NOATIME 0
5 +# define MADV_DONTFORK INHERIT_NONE
6 #endif /* __FreeBSD__ */
7
8 char *global_host_prefix = "";
@@ -1031,11 +1030,9 @@ int fd_is_valid(int fd) {
1030 }
1031
1032 pid_t gettid(void) {
1034 -#ifdef __FreeBSD__
1035 - long pid;
1036 - thr_self( &pid );
1037 - return (unsigned) pid;
1038 -#else /* __FreeBSD__ */
1033 +#ifdef __FreeBSD__
1034 + return (pid_t)pthread_getthreadid_np();
1035 +#else
1036 return (pid_t)syscall(SYS_gettid);
1037 #endif /* __FreeBSD__ */
1038 }
src/common.h
-2
@@ -54,11 +54,9 @@
54 #include <signal.h>
55 #include <syslog.h>
56 #include <sys/mman.h>
57 -
57 #ifndef __FreeBSD__
58 #include <sys/prctl.h>
59 #endif /* __FreeBSD__ */
61 -
60 #include <sys/resource.h>
61 #include <sys/socket.h>
62 #include <sys/stat.h>
src/freebsd_loadavg.c deleted
-78
@@ -1,78 +0,0 @@
1 -#include "common.h"
2 -#include <sys/vmmeter.h>
3 -
4 -// FreeBSD calculates this once every 5 seconds
5 -#define MIN_LOADAVG_UPDATE_EVERY 5
6 -
7 -int do_proc_loadavg(int update_every, unsigned long long dt) {
8 - (void)dt;
9 -
10 - static int do_loadavg = -1, do_all_processes = -1;
11 - static unsigned long long last_loadavg_usec = 0;
12 - static RRDSET *load_chart = NULL, *processes_chart = NULL;
13 -
14 - if(unlikely(do_loadavg == -1)) {
15 - do_loadavg = config_get_boolean("plugin:proc:/proc/loadavg", "enable load average", 1);
16 - do_all_processes = config_get_boolean("plugin:proc:/proc/loadavg", "enable total processes", 1);
17 - }
18 -
19 - struct loadavg sysload;
20 -
21 - if (unlikely(GETSYSCTL("vm.loadavg", sysload)))
22 - return 1;
23 -
24 - double load1 = (double)sysload.ldavg[0] / sysload.fscale;
25 - double load5 = (double)sysload.ldavg[1] / sysload.fscale;
26 - double load15 = (double)sysload.ldavg[2] / sysload.fscale;
27 -
28 - struct vmtotal total;
29 -
30 - if (unlikely(GETSYSCTL("vm.vmtotal", total)))
31 - return 1;
32 -
33 - unsigned long long active_processes = total.t_rq + total.t_dw + total.t_pw + total.t_sl + total.t_sw;
34 -
35 - // --------------------------------------------------------------------
36 -
37 - if(last_loadavg_usec <= dt) {
38 - if(likely(do_loadavg)) {
39 - if(unlikely(!load_chart)) {
40 - load_chart = rrdset_find_byname("system.load");
41 - if(unlikely(!load_chart)) {
42 - load_chart = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
43 - rrddim_add(load_chart, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE);
44 - rrddim_add(load_chart, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE);
45 - rrddim_add(load_chart, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE);
46 - }
47 - }
48 - else
49 - rrdset_next(load_chart);
50 -
51 - rrddim_set(load_chart, "load1", (collected_number) (load1 * 1000));
52 - rrddim_set(load_chart, "load5", (collected_number) (load5 * 1000));
53 - rrddim_set(load_chart, "load15", (collected_number) (load15 * 1000));
54 - rrdset_done(load_chart);
55 - }
56 -
57 - last_loadavg_usec = load_chart->update_every * 1000000ULL;
58 - }
59 - else last_loadavg_usec -= dt;
60 -
61 - // --------------------------------------------------------------------
62 -
63 - if(likely(do_all_processes)) {
64 - if(unlikely(!processes_chart)) {
65 - processes_chart = rrdset_find_byname("system.active_processes");
66 - if(unlikely(!processes_chart)) {
67 - processes_chart = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
68 - rrddim_add(processes_chart, "active", NULL, 1, 1, RRDDIM_ABSOLUTE);
69 - }
70 - }
71 - else rrdset_next(processes_chart);
72 -
73 - rrddim_set(processes_chart, "active", active_processes);
74 - rrdset_done(processes_chart);
75 - }
76 -
77 - return 0;
78 -}
src/freebsd_stat.c deleted
-254
@@ -1,254 +0,0 @@
1 -#include "common.h"
2 -#include <sys/vmmeter.h>
3 -
4 -int do_proc_stat(int update_every, unsigned long long dt) {
5 - (void)dt;
6 -
7 - static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1;
8 -
9 - if(unlikely(do_cpu == -1)) {
10 - do_cpu = config_get_boolean("plugin:proc:/proc/stat", "cpu utilization", 1);
11 - do_cpu_cores = config_get_boolean("plugin:proc:/proc/stat", "per cpu core utilization", 1);
12 - do_interrupts = config_get_boolean("plugin:proc:/proc/stat", "cpu interrupts", 1);
13 - do_context = config_get_boolean("plugin:proc:/proc/stat", "context switches", 1);
14 - do_forks = config_get_boolean("plugin:proc:/proc/stat", "processes started", 1);
15 - do_processes = config_get_boolean("plugin:proc:/proc/stat", "processes running", 1);
16 - }
17 -
18 - RRDSET *st;
19 -
20 - char cpuid[5] = "cpu0";
21 - unsigned long long user = 0, nice = 0, system = 0, interrupt = 0, idle = 0;
22 - u_int vm_stat;
23 - size_t intrcnt_size;
24 - unsigned long nintr = 0;
25 - unsigned long *intrcnt;
26 - unsigned long long totalintr = 0;
27 - unsigned long long running = 0 , blocked = 0;
28 -
29 - long multiplier = 1;
30 - long divisor = 1; // sysconf(_SC_CLK_TCK);
31 -
32 - long cp_time[CPUSTATES];
33 - long *pcpu_cp_time;
34 -
35 - int i, ncpus;
36 -
37 - struct vmtotal total;
38 -
39 - if(likely(do_cpu)) {
40 - if (unlikely(CPUSTATES != 5)) {
41 - error("There are %d CPU states (5 was expected)", CPUSTATES);
42 - do_cpu = 0;
43 - error("Total CPU utilization stats was switched off");
44 - return 0;
45 - }
46 - if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) {
47 - do_cpu = 0;
48 - error("Total CPU utilization stats was switched off");
49 - return 0;
50 - }
51 - user = cp_time[0];
52 - nice = cp_time[1];
53 - system = cp_time[2];
54 - interrupt = cp_time[3];
55 - idle = cp_time[4];
56 -
57 - st = rrdset_find_bytype("system", "cpu");
58 - if(unlikely(!st)) {
59 - st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
60 -
61 - rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
62 - rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
63 - rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
64 - rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
65 - rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
66 - rrddim_hide(st, "idle");
67 - }
68 - else rrdset_next(st);
69 -
70 - rrddim_set(st, "user", user);
71 - rrddim_set(st, "system", system);
72 - rrddim_set(st, "interrupt", interrupt);
73 - rrddim_set(st, "nice", nice);
74 - rrddim_set(st, "idle", idle);
75 - rrdset_done(st);
76 - }
77 -
78 - // --------------------------------------------------------------------
79 -
80 - if(likely(do_cpu_cores)) {
81 - if (unlikely(CPUSTATES != 5)) {
82 - error("There are %d CPU states (5 was expected)", CPUSTATES);
83 - do_cpu_cores = 0;
84 - error("CPU cores utilization stats was switched off");
85 - return 0;
86 - }
87 - if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) {
88 - do_cpu_cores = 0;
89 - error("CPU cores utilization stats was switched off");
90 - return 0;
91 - }
92 - pcpu_cp_time = malloc(sizeof(cp_time) * ncpus);
93 -
94 - for (i = 0; i < ncpus; i++) {
95 - if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) {
96 - do_cpu_cores = 0;
97 - error("CPU cores utilization stats was switched off");
98 - return 0;
99 - }
100 - cpuid[3] = '0' + i;
101 - user = pcpu_cp_time[i * 5 + 0];
102 - nice = pcpu_cp_time[i * 5 + 1];
103 - system = pcpu_cp_time[i * 5 + 2];
104 - interrupt = pcpu_cp_time[i * 5 + 3];
105 - idle = pcpu_cp_time[i * 5 + 4];
106 -
107 - st = rrdset_find_bytype("cpu", cpuid);
108 - if(unlikely(!st)) {
109 - st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED);
110 -
111 - rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
112 - rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
113 - rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
114 - rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
115 - rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL);
116 - rrddim_hide(st, "idle");
117 - }
118 - else rrdset_next(st);
119 -
120 - rrddim_set(st, "user", user);
121 - rrddim_set(st, "system", system);
122 - rrddim_set(st, "interrupt", interrupt);
123 - rrddim_set(st, "nice", nice);
124 - rrddim_set(st, "idle", idle);
125 - rrdset_done(st);
126 - }
127 - free(pcpu_cp_time);
128 - }
129 -
130 - // --------------------------------------------------------------------
131 -
132 - if(likely(do_interrupts)) {
133 - if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) {
134 - error("sysctl(hw.intrcnt...) failed: %s", strerror(errno));
135 - do_interrupts = 0;
136 - error("Total device interrupts stats was switched off");
137 - return 0;
138 - }
139 - nintr = intrcnt_size / sizeof(u_long);
140 - intrcnt = malloc(nintr * sizeof(u_long));
141 - if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){
142 - do_interrupts = 0;
143 - error("Total device interrupts stats was switched off");
144 - return 0;
145 - }
146 - for (i = 0; i < nintr; i++)
147 - totalintr += intrcnt[i];
148 - free(intrcnt);
149 -
150 - st = rrdset_find_bytype("system", "intr");
151 - if(unlikely(!st)) {
152 - st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
153 - st->isdetail = 1;
154 -
155 - rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
156 - }
157 - else rrdset_next(st);
158 -
159 - rrddim_set(st, "interrupts", totalintr);
160 - rrdset_done(st);
161 - }
162 -
163 -/* Temporarily switched off
164 - if(likely(do_interrupts)) {
165 - if (unlikely(GETSYSCTL("vm.stats.sys.v_intr", vm_stat))) {
166 - do_interrupts = 0;
167 - error("Device interrupts utilization stats was switched off");
168 - return 0;
169 - }
170 -
171 - st = rrdset_find_bytype("system", "intr");
172 - if(unlikely(!st)) {
173 - st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
174 - st->isdetail = 1;
175 -
176 - rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
177 - }
178 - else rrdset_next(st);
179 -
180 - rrddim_set(st, "interrupts", vm_stat);
181 - rrdset_done(st);
182 - }
183 -*/
184 - // --------------------------------------------------------------------
185 -
186 - if(likely(do_context)) {
187 - if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", vm_stat))) {
188 - do_context = 0;
189 - error("CPU context switches stats was switched off");
190 - return 0;
191 - }
192 -
193 - st = rrdset_find_bytype("system", "ctxt");
194 - if(unlikely(!st)) {
195 - st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE);
196 -
197 - rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL);
198 - }
199 - else rrdset_next(st);
200 -
201 - rrddim_set(st, "switches", vm_stat);
202 - rrdset_done(st);
203 - }
204 -
205 - // --------------------------------------------------------------------
206 -
207 - if(likely(do_forks)) {
208 - if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", vm_stat))) {
209 - do_forks = 0;
210 - error("Fork stats was switched off");
211 - return 0;
212 - }
213 -
214 - st = rrdset_find_bytype("system", "forks");
215 - if(unlikely(!st)) {
216 - st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE);
217 - st->isdetail = 1;
218 -
219 - rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL);
220 - }
221 - else rrdset_next(st);
222 -
223 - rrddim_set(st, "started", vm_stat);
224 - rrdset_done(st);
225 - }
226 -
227 - // --------------------------------------------------------------------
228 -
229 - if(likely(do_processes)) {
230 - if (unlikely(GETSYSCTL("vm.vmtotal", total))) {
231 - do_processes = 0;
232 - error("System processes stats was switched off");
233 - return 0;
234 - }
235 -
236 - running = total.t_rq;
237 - blocked = total.t_dw + total.t_pw;
238 -
239 - st = rrdset_find_bytype("system", "processes");
240 - if(unlikely(!st)) {
241 - st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
242 -
243 - rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
244 - rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
245 - }
246 - else rrdset_next(st);
247 -
248 - rrddim_set(st, "running", running);
249 - rrddim_set(st, "blocked", blocked);
250 - rrdset_done(st);
251 - }
252 -
253 - return 0;
254 -}
\ No newline at end of file
src/freebsd_sysctl.c new
+305
@@ -0,0 +1,305 @@
1 +#include "common.h"
2 +
3 +// NEEDED BY: struct vmstat
4 +#include <sys/vmmeter.h>
5 +
6 +// FreeBSD calculates load averages once every 5 seconds
7 +#define MIN_LOADAVG_UPDATE_EVERY 5
8 +
9 +int do_freebsd_sysctl(int update_every, unsigned long long dt) {
10 + (void)dt;
11 +
12 + static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1,
13 + do_loadavg = -1, do_all_processes = -1;
14 +
15 + if(unlikely(do_cpu == -1)) {
16 + do_cpu = config_get_boolean("plugin:freebsd:sysctl", "cpu utilization", 1);
17 + do_cpu_cores = config_get_boolean("plugin:freebsd:sysctl", "per cpu core utilization", 1);
18 + do_interrupts = config_get_boolean("plugin:freebsd:sysctl", "cpu interrupts", 1);
19 + do_context = config_get_boolean("plugin:freebsd:sysctl", "context switches", 1);
20 + do_forks = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1);
21 + do_processes = config_get_boolean("plugin:freebsd:sysctl", "processes running", 1);
22 + do_loadavg = config_get_boolean("plugin:freebsd:sysctl", "enable load average", 1);
23 + do_all_processes = config_get_boolean("plugin:freebsd:sysctl", "enable total processes", 1);
24 + }
25 +
26 + RRDSET *st;
27 +
28 + int i;
29 +
30 +// NEEDED BY: do_loadavg
31 + static unsigned long long last_loadavg_usec = 0;
32 + struct loadavg sysload;
33 +
34 +// NEEDED BY: do_cpu, do_cpu_cores
35 + long cp_time[CPUSTATES];
36 +
37 +// NEEDED BY: do_cpu_cores
38 + int ncpus;
39 + static long *pcpu_cp_time = NULL;
40 + char cpuid[8]; // no more than 4 digits expected
41 +
42 +// NEEDED BY: do_all_processes, do_processes
43 + struct vmtotal vmtotal_data;
44 +
45 +// NEEDED BY: do_context, do_forks
46 + u_int u_int_data;
47 +
48 +// NEEDED BY: do_interrupts
49 + size_t intrcnt_size;
50 + unsigned long nintr = 0;
51 + static unsigned long *intrcnt = NULL;
52 + unsigned long long totalintr = 0;
53 +
54 + // --------------------------------------------------------------------
55 +
56 + if(last_loadavg_usec <= dt) {
57 + if(likely(do_loadavg)) {
58 + if (unlikely(GETSYSCTL("vm.loadavg", sysload))) {
59 + do_loadavg = 0;
60 + error("DISABLED: system.load");
61 + } else {
62 +
63 + st = rrdset_find_bytype("system", "load");
64 + if(unlikely(!st)) {
65 + st = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
66 + rrddim_add(st, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE);
67 + rrddim_add(st, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE);
68 + rrddim_add(st, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE);
69 + }
70 + else rrdset_next(st);
71 +
72 + rrddim_set(st, "load1", (collected_number) ((double)sysload.ldavg[0] / sysload.fscale * 1000));
73 + rrddim_set(st, "load5", (collected_number) ((double)sysload.ldavg[1] / sysload.fscale * 1000));
74 + rrddim_set(st, "load15", (collected_number) ((double)sysload.ldavg[2] / sysload.fscale * 1000));
75 + rrdset_done(st);
76 + }
77 + }
78 +
79 + last_loadavg_usec = st->update_every * 1000000ULL;
80 + }
81 + else last_loadavg_usec -= dt;
82 +
83 + // --------------------------------------------------------------------
84 +
85 + if(likely(do_all_processes | do_processes)) {
86 + if (unlikely(GETSYSCTL("vm.vmtotal", vmtotal_data))) {
87 + do_all_processes = 0;
88 + error("DISABLED: system.active_processes");
89 + do_processes = 0;
90 + error("DISABLED: system.processes");
91 + } else {
92 + if(likely(do_processes)) {
93 +
94 + st = rrdset_find_bytype("system", "active_processes");
95 + if(unlikely(!st)) {
96 + st = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
97 + rrddim_add(st, "active", NULL, 1, 1, RRDDIM_ABSOLUTE);
98 + }
99 + else rrdset_next(st);
100 +
101 + rrddim_set(st, "active", (vmtotal_data.t_rq + vmtotal_data.t_dw + vmtotal_data.t_pw + vmtotal_data.t_sl + vmtotal_data.t_sw));
102 + rrdset_done(st);
103 + }
104 + if(likely(do_processes)) {
105 +
106 + st = rrdset_find_bytype("system", "processes");
107 + if(unlikely(!st)) {
108 + st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
109 +
110 + rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
111 + rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
112 + }
113 + else rrdset_next(st);
114 +
115 + rrddim_set(st, "running", vmtotal_data.t_rq);
116 + rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw));
117 + rrdset_done(st);
118 + }
119 +
120 + }
121 + }
122 +
123 + // --------------------------------------------------------------------
124 +
125 + if(likely(do_processes)) {
126 +
127 + st = rrdset_find_bytype("system", "processes");
128 + if(unlikely(!st)) {
129 + st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
130 +
131 + rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE);
132 + rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE);
133 + }
134 + else rrdset_next(st);
135 +
136 + rrddim_set(st, "running", vmtotal_data.t_rq);
137 + rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw));
138 + rrdset_done(st);
139 + }
140 +
141 + // --------------------------------------------------------------------
142 +
143 + if(likely(do_cpu)) {
144 + if (unlikely(CPUSTATES != 5)) {
145 + error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
146 + do_cpu = 0;
147 + error("DISABLED: system.cpu");
148 + } else {
149 + if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) {
150 + do_cpu = 0;
151 + error("DISABLED: system.cpu");
152 + } else {
153 +
154 + st = rrdset_find_bytype("system", "cpu");
155 + if(unlikely(!st)) {
156 + st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
157 +
158 + rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
159 + rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
160 + rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
161 + rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
162 + rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
163 + rrddim_hide(st, "idle");
164 + }
165 + else rrdset_next(st);
166 +
167 + rrddim_set(st, "user", cp_time[0]);
168 + rrddim_set(st, "nice", cp_time[1]);
169 + rrddim_set(st, "system", cp_time[2]);
170 + rrddim_set(st, "interrupt", cp_time[3]);
171 + rrddim_set(st, "idle", cp_time[4]);
172 + rrdset_done(st);
173 + }
174 + }
175 + }
176 +
177 + // --------------------------------------------------------------------
178 +
179 + if(likely(do_cpu_cores)) {
180 + if (unlikely(CPUSTATES != 5)) {
181 + error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
182 + do_cpu_cores = 0;
183 + error("DISABLED: cpu.cpuXX");
184 + } else {
185 + if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) {
186 + do_cpu_cores = 0;
187 + error("DISABLED: cpu.cpuXX");
188 + } else {
189 + pcpu_cp_time = realloc(pcpu_cp_time, sizeof(cp_time) * ncpus);
190 +
191 + for (i = 0; i < ncpus; i++) {
192 + if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) {
193 + do_cpu_cores = 0;
194 + error("DISABLED: cpu.cpuXX");
195 + break;
196 + }
197 + if (unlikely(ncpus > 9999)) {
198 + error("FREEBSD: There are more than 4 digits in cpu cores number");
199 + do_cpu_cores = 0;
200 + error("DISABLED: cpu.cpuXX");
201 + break;
202 + }
203 + snprintfz(cpuid, 8, "cpu%d", i);
204 +
205 + st = rrdset_find_bytype("cpu", cpuid);
206 + if(unlikely(!st)) {
207 + st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED);
208 +
209 + rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
210 + rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
211 + rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
212 + rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
213 + rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
214 + rrddim_hide(st, "idle");
215 + }
216 + else rrdset_next(st);
217 +
218 + rrddim_set(st, "user", pcpu_cp_time[i * 5 + 0]);
219 + rrddim_set(st, "nice", pcpu_cp_time[i * 5 + 1]);
220 + rrddim_set(st, "system", pcpu_cp_time[i * 5 + 2]);
221 + rrddim_set(st, "interrupt", pcpu_cp_time[i * 5 + 3]);
222 + rrddim_set(st, "idle", pcpu_cp_time[i * 5 + 4]);
223 + rrdset_done(st);
224 + }
225 + }
226 + }
227 + }
228 +
229 + // --------------------------------------------------------------------
230 +
231 + if(likely(do_interrupts)) {
232 + if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) {
233 + error("FREEBSD: sysctl(hw.intrcnt...) failed: %s", strerror(errno));
234 + do_interrupts = 0;
235 + error("DISABLED: system.intr");
236 + } else {
237 + nintr = intrcnt_size / sizeof(u_long);
238 + intrcnt = realloc(intrcnt, nintr * sizeof(u_long));
239 + if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){
240 + do_interrupts = 0;
241 + error("DISABLED: system.intr");
242 + } else {
243 + for (i = 0; i < nintr; i++)
244 + totalintr += intrcnt[i];
245 +
246 + st = rrdset_find_bytype("system", "intr");
247 + if(unlikely(!st)) {
248 + st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
249 + st->isdetail = 1;
250 +
251 + rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
252 + }
253 + else rrdset_next(st);
254 +
255 + rrddim_set(st, "interrupts", totalintr);
256 + rrdset_done(st);
257 + }
258 + }
259 + }
260 +
261 + // --------------------------------------------------------------------
262 +
263 + if(likely(do_context)) {
264 + if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", u_int_data))) {
265 + do_context = 0;
266 + error("DISABLED: system.ctxt");
267 + } else {
268 +
269 + st = rrdset_find_bytype("system", "ctxt");
270 + if(unlikely(!st)) {
271 + st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE);
272 +
273 + rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL);
274 + }
275 + else rrdset_next(st);
276 +
277 + rrddim_set(st, "switches", u_int_data);
278 + rrdset_done(st);
279 + }
280 + }
281 +
282 + // --------------------------------------------------------------------
283 +
284 + if(likely(do_forks)) {
285 + if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", u_int_data))) {
286 + do_forks = 0;
287 + error("DISABLED: system.forks");
288 + } else {
289 +
290 + st = rrdset_find_bytype("system", "forks");
291 + if(unlikely(!st)) {
292 + st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE);
293 + st->isdetail = 1;
294 +
295 + rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL);
296 + }
297 + else rrdset_next(st);
298 +
299 + rrddim_set(st, "started", u_int_data);
300 + rrdset_done(st);
301 + }
302 + }
303 +
304 + return 0;
305 +}
src/main.c
+6 -7
@@ -45,12 +45,11 @@ struct netdata_static_thread {
45
46 {"tc", "plugins", "tc", 1, NULL, NULL, tc_main},
47 {"idlejitter", "plugins", "idlejitter", 1, NULL, NULL, cpuidlejitter_main},
48 -#ifndef __FreeBSD__
48 +#ifndef __FreeBSD__
49 {"proc", "plugins", "proc", 1, NULL, NULL, proc_main},
50 #else
51 - {"proc", "plugins", "proc", 1, NULL, NULL, freebsd_main},
51 + {"freebsd", "plugins", "freebsd", 1, NULL, NULL, freebsd_main},
52 #endif /* __FreeBSD__ */
53 -
53 {"cgroups", "plugins", "cgroups", 1, NULL, NULL, cgroups_main},
54 {"check", "plugins", "checks", 0, NULL, NULL, checks_main},
55 {"backends", NULL, NULL, 1, NULL, NULL, backends_main},
@@ -463,15 +462,15 @@ int main(int argc, char **argv)
462 debug_flags = strtoull(flags, NULL, 0);
463 debug(D_OPTIONS, "Debug flags set to '0x%8llx'.", debug_flags);
464
466 -#ifndef __FreeBSD__
465 if(debug_flags != 0) {
466 struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
467 if(setrlimit(RLIMIT_CORE, &rl) != 0)
468 error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
469
470 +#ifndef __FreeBSD__
471 prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
473 - }
472 #endif /* __FreeBSD__ */
473 + }
474
475 // --------------------------------------------------------------------
476
@@ -640,16 +639,16 @@ int main(int argc, char **argv)
639 // initialize the log files
640 open_all_log_files();
641
643 -#ifndef __FreeBSD__
642 #ifdef NETDATA_INTERNAL_CHECKS
643 if(debug_flags != 0) {
644 struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
645 if(setrlimit(RLIMIT_CORE, &rl) != 0)
646 error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
647 +#ifndef __FreeBSD__
648 prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
649 +#endif /* __FreeBSD__ */
650 }
651 #endif /* NETDATA_INTERNAL_CHECKS */
652 -#endif /* __FreeBSD__ */
652
653 // fork, switch user, create pid file, set process priority
654 if(become_daemon(dont_fork, user) == -1)
src/plugin_freebsd.c
+11 -230
@@ -17,59 +17,13 @@ void *freebsd_main(void *ptr)
17 config_get_boolean("plugin:proc:/proc/net/dev:lo", "enabled", 0);
18 config_get_boolean("plugin:proc:/proc/net/dev:fireqos_monitor", "enabled", 0);
19 */
20 -
20 +
21 // when ZERO, attempt to do it
22 - /*
23 - int vdo_proc_net_dev = !config_get_boolean("plugin:proc", "/proc/net/dev", 1);
24 - int vdo_proc_diskstats = !config_get_boolean("plugin:proc", "/proc/diskstats", 1);
25 - int vdo_proc_net_snmp = !config_get_boolean("plugin:proc", "/proc/net/snmp", 1);
26 - int vdo_proc_net_snmp6 = !config_get_boolean("plugin:proc", "/proc/net/snmp6", 1);
27 - int vdo_proc_net_netstat = !config_get_boolean("plugin:proc", "/proc/net/netstat", 1);
28 - int vdo_proc_net_stat_conntrack = !config_get_boolean("plugin:proc", "/proc/net/stat/conntrack", 1);
29 - int vdo_proc_net_ip_vs_stats = !config_get_boolean("plugin:proc", "/proc/net/ip_vs/stats", 1);
30 - int vdo_proc_net_stat_synproxy = !config_get_boolean("plugin:proc", "/proc/net/stat/synproxy", 1);
31 - int vdo_proc_stat = !config_get_boolean("plugin:proc", "/proc/stat", 1);
32 - int vdo_proc_meminfo = !config_get_boolean("plugin:proc", "/proc/meminfo", 1);
33 - int vdo_proc_vmstat = !config_get_boolean("plugin:proc", "/proc/vmstat", 1);
34 - int vdo_proc_net_rpc_nfs = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfs", 1);
35 - int vdo_proc_net_rpc_nfsd = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
36 - int vdo_proc_sys_kernel_random_entropy_avail = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
37 - int vdo_proc_interrupts = !config_get_boolean("plugin:proc", "/proc/interrupts", 1);
38 - int vdo_proc_softirqs = !config_get_boolean("plugin:proc", "/proc/softirqs", 1);
39 - int vdo_proc_net_softnet_stat = !config_get_boolean("plugin:proc", "/proc/net/softnet_stat", 1);
40 - int vdo_proc_loadavg = !config_get_boolean("plugin:proc", "/proc/loadavg", 1);
41 - int vdo_ipc = !config_get_boolean("plugin:proc", "ipc", 1);
42 - int vdo_sys_kernel_mm_ksm = !config_get_boolean("plugin:proc", "/sys/kernel/mm/ksm", 1);
43 - */
44 - int vdo_cpu_netdata = !config_get_boolean("plugin:proc", "netdata server resources", 1);
45 - int vdo_proc_stat = !config_get_boolean("plugin:proc", "/proc/stat", 1);
46 - int vdo_proc_loadavg = !config_get_boolean("plugin:proc", "/proc/loadavg", 1);
22 + int vdo_cpu_netdata = !config_get_boolean("plugin:freebsd", "netdata server resources", 1);
23 + int vdo_freebsd_sysctl = !config_get_boolean("plugin:freebsd", "sysctl", 1);
24
25 // keep track of the time each module was called
49 - /*
50 - unsigned long long sutime_proc_net_dev = 0ULL;
51 - unsigned long long sutime_proc_diskstats = 0ULL;
52 - unsigned long long sutime_proc_net_snmp = 0ULL;
53 - unsigned long long sutime_proc_net_snmp6 = 0ULL;
54 - unsigned long long sutime_proc_net_netstat = 0ULL;
55 - unsigned long long sutime_proc_net_stat_conntrack = 0ULL;
56 - unsigned long long sutime_proc_net_ip_vs_stats = 0ULL;
57 - unsigned long long sutime_proc_net_stat_synproxy = 0ULL;
58 - unsigned long long sutime_proc_stat = 0ULL;
59 - unsigned long long sutime_proc_meminfo = 0ULL;
60 - unsigned long long sutime_proc_vmstat = 0ULL;
61 - unsigned long long sutime_proc_net_rpc_nfs = 0ULL;
62 - unsigned long long sutime_proc_net_rpc_nfsd = 0ULL;
63 - unsigned long long sutime_proc_sys_kernel_random_entropy_avail = 0ULL;
64 - unsigned long long sutime_proc_interrupts = 0ULL;
65 - unsigned long long sutime_proc_softirqs = 0ULL;
66 - unsigned long long sutime_proc_net_softnet_stat = 0ULL;
67 - unsigned long long sutime_proc_loadavg = 0ULL;
68 - unsigned long long sutime_ipc = 0ULL;
69 - unsigned long long sutime_sys_kernel_mm_ksm = 0ULL;
70 - */
71 - unsigned long long sutime_proc_stat = 0ULL;
72 - unsigned long long sutime_proc_loadavg = 0ULL;
26 + unsigned long long sutime_freebsd_sysctl = 0ULL;
27
28 unsigned long long step = rrd_update_every * 1000000ULL;
29 for(;;) {
@@ -84,183 +38,12 @@ void *freebsd_main(void *ptr)
38 if(unlikely(netdata_exit)) break;
39
40 // BEGIN -- the job to be done
87 - /*
88 -
89 - if(!vdo_sys_kernel_mm_ksm) {
90 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_sys_kernel_mm_ksm().");
91 -
92 - now = time_usec();
93 - vdo_sys_kernel_mm_ksm = do_sys_kernel_mm_ksm(rrd_update_every, (sutime_sys_kernel_mm_ksm > 0)?now - sutime_sys_kernel_mm_ksm:0ULL);
94 - sutime_sys_kernel_mm_ksm = now;
95 - }
96 - if(unlikely(netdata_exit)) break;
97 -
98 - if(!vdo_proc_loadavg) {
99 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg().");
100 - now = time_usec();
101 - vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL);
102 - sutime_proc_loadavg = now;
103 - }
104 - if(unlikely(netdata_exit)) break;
105 -
106 - if(!vdo_ipc) {
107 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_ipc().");
108 - now = time_usec();
109 - vdo_ipc = do_ipc(rrd_update_every, (sutime_ipc > 0)?now - sutime_ipc:0ULL);
110 - sutime_ipc = now;
111 - }
112 - if(unlikely(netdata_exit)) break;
113 -
114 - if(!vdo_proc_interrupts) {
115 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_interrupts().");
116 - now = time_usec();
117 - vdo_proc_interrupts = do_proc_interrupts(rrd_update_every, (sutime_proc_interrupts > 0)?now - sutime_proc_interrupts:0ULL);
118 - sutime_proc_interrupts = now;
119 - }
120 - if(unlikely(netdata_exit)) break;
121 -
122 - if(!vdo_proc_softirqs) {
123 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_softirqs().");
124 - now = time_usec();
125 - vdo_proc_softirqs = do_proc_softirqs(rrd_update_every, (sutime_proc_softirqs > 0)?now - sutime_proc_softirqs:0ULL);
126 - sutime_proc_softirqs = now;
127 - }
128 - if(unlikely(netdata_exit)) break;
129 -
130 - if(!vdo_proc_net_softnet_stat) {
131 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_softnet_stat().");
132 - now = time_usec();
133 - vdo_proc_net_softnet_stat = do_proc_net_softnet_stat(rrd_update_every, (sutime_proc_net_softnet_stat > 0)?now - sutime_proc_net_softnet_stat:0ULL);
134 - sutime_proc_net_softnet_stat = now;
135 - }
136 - if(unlikely(netdata_exit)) break;
137 -
138 - if(!vdo_proc_sys_kernel_random_entropy_avail) {
139 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail().");
140 - now = time_usec();
141 - vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, (sutime_proc_sys_kernel_random_entropy_avail > 0)?now - sutime_proc_sys_kernel_random_entropy_avail:0ULL);
142 - sutime_proc_sys_kernel_random_entropy_avail = now;
143 - }
144 - if(unlikely(netdata_exit)) break;
145 -
146 - if(!vdo_proc_net_dev) {
147 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_dev().");
148 - now = time_usec();
149 - vdo_proc_net_dev = do_proc_net_dev(rrd_update_every, (sutime_proc_net_dev > 0)?now - sutime_proc_net_dev:0ULL);
150 - sutime_proc_net_dev = now;
151 - }
152 - if(unlikely(netdata_exit)) break;
153 -
154 - if(!vdo_proc_diskstats) {
155 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_diskstats().");
156 - now = time_usec();
157 - vdo_proc_diskstats = do_proc_diskstats(rrd_update_every, (sutime_proc_diskstats > 0)?now - sutime_proc_diskstats:0ULL);
158 - sutime_proc_diskstats = now;
159 - }
160 - if(unlikely(netdata_exit)) break;
161 -
162 - if(!vdo_proc_net_snmp) {
163 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp().");
164 - now = time_usec();
165 - vdo_proc_net_snmp = do_proc_net_snmp(rrd_update_every, (sutime_proc_net_snmp > 0)?now - sutime_proc_net_snmp:0ULL);
166 - sutime_proc_net_snmp = now;
167 - }
168 - if(unlikely(netdata_exit)) break;
169 -
170 - if(!vdo_proc_net_snmp6) {
171 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp6().");
172 - now = time_usec();
173 - vdo_proc_net_snmp6 = do_proc_net_snmp6(rrd_update_every, (sutime_proc_net_snmp6 > 0)?now - sutime_proc_net_snmp6:0ULL);
174 - sutime_proc_net_snmp6 = now;
175 - }
176 - if(unlikely(netdata_exit)) break;
177 -
178 - if(!vdo_proc_net_netstat) {
179 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_netstat().");
180 - now = time_usec();
181 - vdo_proc_net_netstat = do_proc_net_netstat(rrd_update_every, (sutime_proc_net_netstat > 0)?now - sutime_proc_net_netstat:0ULL);
182 - sutime_proc_net_netstat = now;
183 - }
184 - if(unlikely(netdata_exit)) break;
41
186 - if(!vdo_proc_net_stat_conntrack) {
187 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_stat_conntrack().");
42 + if(!vdo_freebsd_sysctl) {
43 + debug(D_PROCNETDEV_LOOP, "FREEBSD: calling do_freebsd_sysctl().");
44 now = time_usec();
189 - vdo_proc_net_stat_conntrack = do_proc_net_stat_conntrack(rrd_update_every, (sutime_proc_net_stat_conntrack > 0)?now - sutime_proc_net_stat_conntrack:0ULL);
190 - sutime_proc_net_stat_conntrack = now;
191 - }
192 - if(unlikely(netdata_exit)) break;
193 -
194 - if(!vdo_proc_net_ip_vs_stats) {
195 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_ip_vs_stats().");
196 - now = time_usec();
197 - vdo_proc_net_ip_vs_stats = do_proc_net_ip_vs_stats(rrd_update_every, (sutime_proc_net_ip_vs_stats > 0)?now - sutime_proc_net_ip_vs_stats:0ULL);
198 - sutime_proc_net_ip_vs_stats = now;
199 - }
200 - if(unlikely(netdata_exit)) break;
201 -
202 - if(!vdo_proc_net_stat_synproxy) {
203 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_stat_synproxy().");
204 - now = time_usec();
205 - vdo_proc_net_stat_synproxy = do_proc_net_stat_synproxy(rrd_update_every, (sutime_proc_net_stat_synproxy > 0)?now - sutime_proc_net_stat_synproxy:0ULL);
206 - sutime_proc_net_stat_synproxy = now;
207 - }
208 - if(unlikely(netdata_exit)) break;
209 -
210 - if(!vdo_proc_stat) {
211 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat().");
212 - now = time_usec();
213 - vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL);
214 - sutime_proc_stat = now;
215 - }
216 - if(unlikely(netdata_exit)) break;
217 -
218 - if(!vdo_proc_meminfo) {
219 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_meminfo().");
220 - now = time_usec();
221 - vdo_proc_meminfo = do_proc_meminfo(rrd_update_every, (sutime_proc_meminfo > 0)?now - sutime_proc_meminfo:0ULL);
222 - sutime_proc_meminfo = now;
223 - }
224 - if(unlikely(netdata_exit)) break;
225 -
226 - if(!vdo_proc_vmstat) {
227 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_vmstat().");
228 - now = time_usec();
229 - vdo_proc_vmstat = do_proc_vmstat(rrd_update_every, (sutime_proc_vmstat > 0)?now - sutime_proc_vmstat:0ULL);
230 - sutime_proc_vmstat = now;
231 - }
232 - if(unlikely(netdata_exit)) break;
233 -
234 - if(!vdo_proc_net_rpc_nfsd) {
235 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfsd().");
236 - now = time_usec();
237 - vdo_proc_net_rpc_nfsd = do_proc_net_rpc_nfsd(rrd_update_every, (sutime_proc_net_rpc_nfsd > 0)?now - sutime_proc_net_rpc_nfsd:0ULL);
238 - sutime_proc_net_rpc_nfsd = now;
239 - }
240 - if(unlikely(netdata_exit)) break;
241 -
242 - if(!vdo_proc_net_rpc_nfs) {
243 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfs().");
244 - now = time_usec();
245 - vdo_proc_net_rpc_nfs = do_proc_net_rpc_nfs(rrd_update_every, (sutime_proc_net_rpc_nfs > 0)?now - sutime_proc_net_rpc_nfs:0ULL);
246 - sutime_proc_net_rpc_nfs = now;
247 - }
248 - if(unlikely(netdata_exit)) break;
249 - */
250 -
251 - if(!vdo_proc_stat) {
252 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat().");
253 - now = time_usec();
254 - vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL);
255 - sutime_proc_stat = now;
256 - }
257 - if(unlikely(netdata_exit)) break;
258 -
259 - if(!vdo_proc_loadavg) {
260 - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg().");
261 - now = time_usec();
262 - vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL);
263 - sutime_proc_loadavg = now;
45 + vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, (sutime_freebsd_sysctl > 0)?now - sutime_freebsd_sysctl:0ULL);
46 + sutime_freebsd_sysctl = now;
47 }
48 if(unlikely(netdata_exit)) break;
49
@@ -285,14 +68,12 @@ int getsysctl(const char *name, void *ptr, size_t len)
68 size_t nlen = len;
69
70 if (unlikely(sysctlbyname(name, ptr, &nlen, NULL, 0) == -1)) {
288 - error("FREEBSD: sysctl(%s...) failed: %s\n", name,
289 - strerror(errno));
71 + error("FREEBSD: sysctl(%s...) failed: %s", name, strerror(errno));
72 return 1;
73 }
74 if (unlikely(nlen != len)) {
293 - error("FREEBSD: sysctl(%s...) expected %lu, got %lu\n",
294 - name, (unsigned long)len, (unsigned long)nlen);
75 + error("FREEBSD: sysctl(%s...) expected %lu, got %lu", name, (unsigned long)len, (unsigned long)nlen);
76 return 1;
77 }
78 return 0;
298 -}
\ No newline at end of file
79 +}
src/plugin_freebsd.h
+3 -24
@@ -5,29 +5,8 @@
5
6 void *freebsd_main(void *ptr);
7
8 -extern int getsysctl(const char *name, void *ptr, size_t len);
8 +int getsysctl(const char *name, void *ptr, size_t len);
9
10 -/*
11 -extern int do_proc_net_dev(int update_every, unsigned long long dt);
12 -extern int do_proc_diskstats(int update_every, unsigned long long dt);
13 -extern int do_proc_net_snmp(int update_every, unsigned long long dt);
14 -extern int do_proc_net_snmp6(int update_every, unsigned long long dt);
15 -extern int do_proc_net_netstat(int update_every, unsigned long long dt);
16 -extern int do_proc_net_stat_conntrack(int update_every, unsigned long long dt);
17 -extern int do_proc_net_ip_vs_stats(int update_every, unsigned long long dt);
18 -extern int do_proc_meminfo(int update_every, unsigned long long dt);
19 -extern int do_proc_vmstat(int update_every, unsigned long long dt);
20 -extern int do_proc_net_rpc_nfs(int update_every, unsigned long long dt);
21 -extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt);
22 -extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt);
23 -extern int do_proc_interrupts(int update_every, unsigned long long dt);
24 -extern int do_proc_softirqs(int update_every, unsigned long long dt);
25 -extern int do_sys_kernel_mm_ksm(int update_every, unsigned long long dt);
26 -extern int do_proc_loadavg(int update_every, unsigned long long dt);
27 -extern int do_proc_net_stat_synproxy(int update_every, unsigned long long dt);
28 -extern int do_proc_net_softnet_stat(int update_every, unsigned long long dt);
29 -*/
30 -extern int do_proc_stat(int update_every, unsigned long long dt);
31 -extern int do_proc_loadavg(int update_every, unsigned long long dt);
10 +extern int do_freebsd_sysctl(int update_every, unsigned long long dt);
11
33 -#endif /* NETDATA_FREEBSD_PROC_H */
12 +#endif /* NETDATA_PLUGIN_FREEBSD_H */