Separate net.inet.tcp.states module
Vladimir Kobal committed
Mar 14, 2017 at 13:12 UTC
61bf5dc9fbaa494684246728e2fb48a0ab25fc95
3 files changed
+45
-25
src/freebsd_sysctl.c
+43
-25
@@ -1391,6 +1391,49 @@ int do_net_isr(int update_every, usec_t dt) {
1391
return 0;
1392
}
1393
1394
+// --------------------------------------------------------------------------------------------------------------------
1395
+// net.inet.tcp.states
1396
+
1397
+int do_net_inet_tcp_states(int update_every, usec_t dt) {
1398
+ static int mib[4] = {0, 0, 0, 0};
1399
+ uint64_t tcps_states[TCP_NSTATES];
1400
+
1401
+ // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
1402
+ if (unlikely(GETSYSCTL_SIMPLE("net.inet.tcp.states", mib, tcps_states))) {
1403
+ error("DISABLED: ipv4.tcpsock chart");
1404
+ error("DISABLED: net.inet.tcp.states module");
1405
+ return 1;
1406
+ } else {
1407
+
1408
+ // --------------------------------------------------------------------
1409
+
1410
+ static RRDSET *st = NULL;
1411
+ static RRDDIM *rd = NULL;
1412
+
1413
+ if (unlikely(!st)) {
1414
+ st = rrdset_create_localhost("ipv4",
1415
+ "tcpsock",
1416
+ NULL,
1417
+ "tcp",
1418
+ NULL,
1419
+ "IPv4 TCP Connections",
1420
+ "active connections",
1421
+ 2500,
1422
+ update_every,
1423
+ RRDSET_TYPE_LINE
1424
+ );
1425
+
1426
+ rd = rrddim_add(st, "CurrEstab", "connections", 1, 1, RRD_ALGORITHM_ABSOLUTE);
1427
+ } else
1428
+ rrdset_next(st);
1429
+
1430
+ rrddim_set_by_pointer(st, rd, tcps_states[TCPS_ESTABLISHED]);
1431
+ rrdset_done(st);
1432
+ }
1433
+
1434
+ return 0;
1435
+}
1436
+
1437
// --------------------------------------------------------------------------------------------------------------------
1438
// old sources
1439
@@ -1476,7 +1519,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1519
1520
// NEEDED BY: do_tcp...
1521
struct tcpstat tcpstat;
1479
- uint64_t tcps_states[TCP_NSTATES];
1522
1523
// NEEDED BY: do_udp...
1524
struct udpstat udpstat;
@@ -1834,30 +1876,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1876
1877
// --------------------------------------------------------------------
1878
1837
- // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
1838
- if (likely(do_tcp_sockets)) {
1839
- if (unlikely(GETSYSCTL_BY_NAME("net.inet.tcp.states", tcps_states))) {
1840
- do_tcp_sockets = 0;
1841
- error("DISABLED: ipv4.tcpsock");
1842
- } else {
1843
- if (likely(do_tcp_sockets)) {
1844
- st = rrdset_find_localhost("ipv4.tcpsock");
1845
- if (unlikely(!st)) {
1846
- st = rrdset_create_localhost("ipv4", "tcpsock", NULL, "tcp", NULL, "IPv4 TCP Connections",
1847
- "active connections", 2500, update_every, RRDSET_TYPE_LINE);
1848
-
1849
- rrddim_add(st, "CurrEstab", "connections", 1, 1, RRD_ALGORITHM_ABSOLUTE);
1850
- } else
1851
- rrdset_next(st);
1852
-
1853
- rrddim_set(st, "CurrEstab", tcps_states[TCPS_ESTABLISHED]);
1854
- rrdset_done(st);
1855
- }
1856
- }
1857
- }
1858
-
1859
- // --------------------------------------------------------------------
1860
-
1879
// see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
1880
if (likely(do_tcp_packets || do_tcp_errors || do_tcp_handshake || do_tcpext_connaborts || do_tcpext_ofo || do_tcpext_syscookies || do_ecn)) {
1881
if (unlikely(GETSYSCTL_BY_NAME("net.inet.tcp.stats", tcpstat))){
src/plugin_freebsd.c
+1
@@ -32,6 +32,7 @@ static struct freebsd_module {
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
{ .name = "net.isr", .dim = "net_isr", .enabled = 1, .func = do_net_isr },
35
+ { .name = "net.inet.tcp.states", .dim = "tcp_states", .enabled = 1, .func = do_net_inet_tcp_states },
36
37
// CPU metrics
38
{ .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
src/plugin_freebsd.h
+1
@@ -25,6 +25,7 @@ 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
extern int do_net_isr(int update_every, usec_t dt);
28
+extern int do_net_inet_tcp_states(int update_every, usec_t dt);
29
30
extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
31