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 */