From cf1597811865739b265c00e91d1a1c661ff8e880 Mon Sep 17 00:00:00 2001 From: Vladimir Kobal Date: Thu, 9 Mar 2017 19:26:15 +0200 Subject: [PATCH] Separate uptime module --- src/freebsd_sysctl.c | 63 ++++++++++++++++++++++++++------------------ src/plugin_freebsd.c | 1 + src/plugin_freebsd.h | 1 + 3 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c index e85433cd..4238bd10 100644 --- a/src/freebsd_sysctl.c +++ b/src/freebsd_sysctl.c @@ -1188,6 +1188,42 @@ int do_kern_ipc_msq(int update_every, usec_t dt) { return 0; } +// -------------------------------------------------------------------------------------------------------------------- +// uptime + +int do_uptime(int update_every, usec_t dt) { + struct timespec up_time; + + clock_gettime(CLOCK_UPTIME, &up_time); + + // -------------------------------------------------------------------- + + static RRDSET *st = NULL; + static RRDDIM *rd = NULL; + + if(unlikely(!st)) { + st = rrdset_create_localhost("system", + "uptime", + NULL, + "uptime", + NULL, + "System Uptime", + "seconds", + 1000, + update_every, + RRDSET_TYPE_LINE + ); + + rd = rrddim_add(st, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); + } + else rrdset_next(st); + + rrddim_set_by_pointer(st, rd, up_time.tv_sec); + rrdset_done(st); + + return 0; +} + // -------------------------------------------------------------------------------------------------------------------- // old sources @@ -1200,9 +1236,9 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) { do_ip_packets = -1, do_ip_fragsout = -1, do_ip_fragsin = -1, do_ip_errors = -1, do_ip6_packets = -1, do_ip6_fragsout = -1, do_ip6_fragsin = -1, do_ip6_errors = -1, do_icmp6 = -1, do_icmp6_redir = -1, do_icmp6_errors = -1, do_icmp6_echos = -1, do_icmp6_router = -1, - do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1, do_uptime = -1; + do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1; - if (unlikely(do_uptime == -1)) { + if (unlikely(do_disk_io == -1)) { do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1); do_netisr = config_get_boolean("plugin:freebsd:sysctl", "netisr", 1); 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) { do_icmp6_types = config_get_boolean_ondemand("plugin:freebsd:sysctl", "icmp types", CONFIG_BOOLEAN_AUTO); do_space = config_get_boolean("plugin:freebsd:sysctl", "space usage for all disks", 1); do_inodes = config_get_boolean("plugin:freebsd:sysctl", "inodes usage for all disks", 1); - do_uptime = config_get_boolean("plugin:freebsd:sysctl", "system uptime", 1); } RRDSET *st; - RRDDIM *rd; int ncpus; int i, n; - void *p; int common_error = 0; - size_t size; char title[4096 + 1]; // NEEDED BY: do_disk_io @@ -1325,9 +1357,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) { int mntsize; char mntonname[MNAMELEN + 1]; - // NEEDED BY: do_uptime - struct timespec up_time; - // -------------------------------------------------------------------- if (likely(do_disk_io)) { @@ -2612,21 +2641,5 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) { } } - // -------------------------------------------------------------------- - - if (likely(do_uptime)) { - clock_gettime(CLOCK_UPTIME, &up_time); - st = rrdset_find_localhost("system.uptime"); - - if(unlikely(!st)) { - st = rrdset_create_localhost("system", "uptime", NULL, "uptime", NULL, "System Uptime", "seconds", 1000, update_every, RRDSET_TYPE_LINE); - rrddim_add(st, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); - } - else rrdset_next(st); - - rrddim_set(st, "uptime", up_time.tv_sec); - rrdset_done(st); - } - return 0; } diff --git a/src/plugin_freebsd.c b/src/plugin_freebsd.c index bc2adbdf..44acde72 100644 --- a/src/plugin_freebsd.c +++ b/src/plugin_freebsd.c @@ -30,6 +30,7 @@ static struct freebsd_module { { .name = "kern.ipc.sem", .dim = "semaphores", .enabled = 1, .func = do_kern_ipc_sem }, { .name = "kern.ipc.shm", .dim = "shared_memory", .enabled = 1, .func = do_kern_ipc_shm }, { .name = "kern.ipc.msq", .dim = "message_queues", .enabled = 1, .func = do_kern_ipc_msq }, + { .name = "uptime", .dim = "uptime", .enabled = 1, .func = do_uptime }, // CPU metrics { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times }, diff --git a/src/plugin_freebsd.h b/src/plugin_freebsd.h index 77e24a43..7b282de3 100644 --- a/src/plugin_freebsd.h +++ b/src/plugin_freebsd.h @@ -23,6 +23,7 @@ extern int do_vm_stats_sys_v_pgfaults(int update_every, usec_t dt); extern int do_kern_ipc_sem(int update_every, usec_t dt); extern int do_kern_ipc_shm(int update_every, usec_t dt); extern int do_kern_ipc_msq(int update_every, usec_t dt); +extern int do_uptime(int update_every, usec_t dt); extern int do_freebsd_sysctl_old(int update_every, usec_t dt); -- 2.39.2