Separate uptime module
Vladimir Kobal committed
Mar 9, 2017 at 19:26 UTC
cf1597811865739b265c00e91d1a1c661ff8e880
3 files changed
+40
-25
src/freebsd_sysctl.c
+38
-25
@@ -1188,6 +1188,42 @@ int do_kern_ipc_msq(int update_every, usec_t dt) {
1188
return 0;
1189
}
1190
1191
+// --------------------------------------------------------------------------------------------------------------------
1192
+// uptime
1193
+
1194
+int do_uptime(int update_every, usec_t dt) {
1195
+ struct timespec up_time;
1196
+
1197
+ clock_gettime(CLOCK_UPTIME, &up_time);
1198
+
1199
+ // --------------------------------------------------------------------
1200
+
1201
+ static RRDSET *st = NULL;
1202
+ static RRDDIM *rd = NULL;
1203
+
1204
+ if(unlikely(!st)) {
1205
+ st = rrdset_create_localhost("system",
1206
+ "uptime",
1207
+ NULL,
1208
+ "uptime",
1209
+ NULL,
1210
+ "System Uptime",
1211
+ "seconds",
1212
+ 1000,
1213
+ update_every,
1214
+ RRDSET_TYPE_LINE
1215
+ );
1216
+
1217
+ rd = rrddim_add(st, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
1218
+ }
1219
+ else rrdset_next(st);
1220
+
1221
+ rrddim_set_by_pointer(st, rd, up_time.tv_sec);
1222
+ rrdset_done(st);
1223
+
1224
+ return 0;
1225
+}
1226
+
1227
// --------------------------------------------------------------------------------------------------------------------
1228
// old sources
1229
@@ -1200,9 +1236,9 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1236
do_ip_packets = -1, do_ip_fragsout = -1, do_ip_fragsin = -1, do_ip_errors = -1,
1237
do_ip6_packets = -1, do_ip6_fragsout = -1, do_ip6_fragsin = -1, do_ip6_errors = -1,
1238
do_icmp6 = -1, do_icmp6_redir = -1, do_icmp6_errors = -1, do_icmp6_echos = -1, do_icmp6_router = -1,
1203
- do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1, do_uptime = -1;
1239
+ do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1;
1240
1205
- if (unlikely(do_uptime == -1)) {
1241
+ if (unlikely(do_disk_io == -1)) {
1242
do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
1243
do_netisr = config_get_boolean("plugin:freebsd:sysctl", "netisr", 1);
1244
do_netisr_per_core = config_get_boolean("plugin:freebsd:sysctl", "netisr per core", 1);
@@ -1236,17 +1272,13 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1272
do_icmp6_types = config_get_boolean_ondemand("plugin:freebsd:sysctl", "icmp types", CONFIG_BOOLEAN_AUTO);
1273
do_space = config_get_boolean("plugin:freebsd:sysctl", "space usage for all disks", 1);
1274
do_inodes = config_get_boolean("plugin:freebsd:sysctl", "inodes usage for all disks", 1);
1239
- do_uptime = config_get_boolean("plugin:freebsd:sysctl", "system uptime", 1);
1275
}
1276
1277
RRDSET *st;
1243
- RRDDIM *rd;
1278
1279
int ncpus;
1280
int i, n;
1247
- void *p;
1281
int common_error = 0;
1249
- size_t size;
1282
char title[4096 + 1];
1283
1284
// NEEDED BY: do_disk_io
@@ -1325,9 +1357,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1357
int mntsize;
1358
char mntonname[MNAMELEN + 1];
1359
1328
- // NEEDED BY: do_uptime
1329
- struct timespec up_time;
1330
-
1360
// --------------------------------------------------------------------
1361
1362
if (likely(do_disk_io)) {
@@ -2612,21 +2641,5 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
2641
}
2642
}
2643
2615
- // --------------------------------------------------------------------
2616
-
2617
- if (likely(do_uptime)) {
2618
- clock_gettime(CLOCK_UPTIME, &up_time);
2619
- st = rrdset_find_localhost("system.uptime");
2620
-
2621
- if(unlikely(!st)) {
2622
- st = rrdset_create_localhost("system", "uptime", NULL, "uptime", NULL, "System Uptime", "seconds", 1000, update_every, RRDSET_TYPE_LINE);
2623
- rrddim_add(st, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
2624
- }
2625
- else rrdset_next(st);
2626
-
2627
- rrddim_set(st, "uptime", up_time.tv_sec);
2628
- rrdset_done(st);
2629
- }
2630
-
2644
return 0;
2645
}
src/plugin_freebsd.c
+1
@@ -30,6 +30,7 @@ static struct freebsd_module {
30
{ .name = "kern.ipc.sem", .dim = "semaphores", .enabled = 1, .func = do_kern_ipc_sem },
31
{ .name = "kern.ipc.shm", .dim = "shared_memory", .enabled = 1, .func = do_kern_ipc_shm },
32
{ .name = "kern.ipc.msq", .dim = "message_queues", .enabled = 1, .func = do_kern_ipc_msq },
33
+ { .name = "uptime", .dim = "uptime", .enabled = 1, .func = do_uptime },
34
35
// CPU metrics
36
{ .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
src/plugin_freebsd.h
+1
@@ -23,6 +23,7 @@ extern int do_vm_stats_sys_v_pgfaults(int update_every, usec_t dt);
23
extern int do_kern_ipc_sem(int update_every, usec_t dt);
24
extern int do_kern_ipc_shm(int update_every, usec_t dt);
25
extern int do_kern_ipc_msq(int update_every, usec_t dt);
26
+extern int do_uptime(int update_every, usec_t dt);
27
28
extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
29