]> arthur.barton.de Git - netdata.git/commitdiff
Separate net.inet.tcp.states module
authorVladimir Kobal <vlad@prokk.net>
Tue, 14 Mar 2017 11:12:46 +0000 (13:12 +0200)
committerVladimir Kobal <vlad@prokk.net>
Tue, 14 Mar 2017 11:12:46 +0000 (13:12 +0200)
src/freebsd_sysctl.c
src/plugin_freebsd.c
src/plugin_freebsd.h

index 2b34cc3d5bbdf91818ad0ef9fc339b512c3691d0..189781128c86996db87cb94c375c257aeb536930 100644 (file)
@@ -1391,6 +1391,49 @@ int do_net_isr(int update_every, usec_t dt) {
     return 0;
 }
 
+// --------------------------------------------------------------------------------------------------------------------
+// net.inet.tcp.states
+
+int do_net_inet_tcp_states(int update_every, usec_t dt) {
+    static int mib[4] = {0, 0, 0, 0};
+    uint64_t tcps_states[TCP_NSTATES];
+
+    // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
+    if (unlikely(GETSYSCTL_SIMPLE("net.inet.tcp.states", mib, tcps_states))) {
+        error("DISABLED: ipv4.tcpsock chart");
+        error("DISABLED: net.inet.tcp.states module");
+        return 1;
+    } else {
+
+        // --------------------------------------------------------------------
+
+        static RRDSET *st = NULL;
+        static RRDDIM *rd = NULL;
+
+        if (unlikely(!st)) {
+            st = rrdset_create_localhost("ipv4",
+                                         "tcpsock",
+                                         NULL,
+                                         "tcp",
+                                         NULL,
+                                         "IPv4 TCP Connections",
+                                         "active connections",
+                                         2500,
+                                         update_every,
+                                         RRDSET_TYPE_LINE
+            );
+
+            rd = rrddim_add(st, "CurrEstab", "connections", 1, 1, RRD_ALGORITHM_ABSOLUTE);
+        } else
+            rrdset_next(st);
+
+        rrddim_set_by_pointer(st, rd, tcps_states[TCPS_ESTABLISHED]);
+        rrdset_done(st);
+    }
+
+    return 0;
+}
+
 // --------------------------------------------------------------------------------------------------------------------
 // old sources
 
@@ -1476,7 +1519,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
 
     // NEEDED BY: do_tcp...
     struct tcpstat tcpstat;
-    uint64_t tcps_states[TCP_NSTATES];
 
     // NEEDED BY: do_udp...
     struct udpstat udpstat;
@@ -1834,30 +1876,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
 
     // --------------------------------------------------------------------
 
-    // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
-    if (likely(do_tcp_sockets)) {
-        if (unlikely(GETSYSCTL_BY_NAME("net.inet.tcp.states", tcps_states))) {
-            do_tcp_sockets = 0;
-            error("DISABLED: ipv4.tcpsock");
-        } else {
-            if (likely(do_tcp_sockets)) {
-                st = rrdset_find_localhost("ipv4.tcpsock");
-                if (unlikely(!st)) {
-                    st = rrdset_create_localhost("ipv4", "tcpsock", NULL, "tcp", NULL, "IPv4 TCP Connections",
-                                       "active connections", 2500, update_every, RRDSET_TYPE_LINE);
-
-                    rrddim_add(st, "CurrEstab", "connections", 1, 1, RRD_ALGORITHM_ABSOLUTE);
-                } else
-                    rrdset_next(st);
-
-                rrddim_set(st, "CurrEstab", tcps_states[TCPS_ESTABLISHED]);
-                rrdset_done(st);
-            }
-        }
-    }
-
-    // --------------------------------------------------------------------
-
     // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
     if (likely(do_tcp_packets || do_tcp_errors || do_tcp_handshake || do_tcpext_connaborts || do_tcpext_ofo || do_tcpext_syscookies || do_ecn)) {
         if (unlikely(GETSYSCTL_BY_NAME("net.inet.tcp.stats", tcpstat))){
index a4d7b06b640a14f7aec459e601d42808b382290a..c0b3f9b4fb32e0b23d253cda210bed151db47d5d 100644 (file)
@@ -32,6 +32,7 @@ static struct freebsd_module {
         { .name = "kern.ipc.msq", .dim = "message_queues", .enabled = 1, .func = do_kern_ipc_msq },
         { .name = "uptime", .dim = "uptime", .enabled = 1, .func = do_uptime },
         { .name = "net.isr", .dim = "net_isr", .enabled = 1, .func = do_net_isr },
+        { .name = "net.inet.tcp.states", .dim = "tcp_states", .enabled = 1, .func = do_net_inet_tcp_states },
 
         // CPU metrics
         { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
index 846d2262194ae94a5f80d71b50f4e5a1d67f3591..df482bec572da84be87f7666f4496edc1db8ef8e 100644 (file)
@@ -25,6 +25,7 @@ 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_net_isr(int update_every, usec_t dt);
+extern int do_net_inet_tcp_states(int update_every, usec_t dt);
 
 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);