@cryptotaxi247 / netdata-1 / commits / c74bc1c7b

Separate net.inet.tcp.stats module

Vladimir Kobal committed Mar 14, 2017 at 14:31 UTC c74bc1c7b31358e347cf76d3bb322e6470cc840e
3 files changed +306 -188
src/freebsd_sysctl.c
+302 -188
@@ -1231,7 +1231,7 @@ int do_net_isr(int update_every, usec_t dt) {
1231 static int do_netisr = -1, do_netisr_per_core = -1;
1232
1233 if (unlikely(do_netisr == -1)) {
1234 - do_netisr = config_get_boolean("plugin:freebsd:sysctl", "netisr", 1);
1234 + do_netisr = config_get_boolean("plugin:freebsd:sysctl", "netisr", 1);
1235 do_netisr_per_core = config_get_boolean("plugin:freebsd:sysctl", "netisr per core", 1);
1236 }
1237
@@ -1434,14 +1434,313 @@ int do_net_inet_tcp_states(int update_every, usec_t dt) {
1434 return 0;
1435 }
1436
1437 +// --------------------------------------------------------------------------------------------------------------------
1438 +// net.inet.tcp.stats
1439 +
1440 +int do_net_inet_tcp_stats(int update_every, usec_t dt) {
1441 + static int do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1, do_tcpext_connaborts = -1, do_tcpext_ofo = -1, do_tcpext_syncookies = -1, do_ecn = -1;
1442 +
1443 + if (unlikely(do_tcp_packets == -1)) {
1444 + do_tcp_packets = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP packets", 1);
1445 + do_tcp_errors = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP errors", 1);
1446 + do_tcp_handshake = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP handshake issues", 1);
1447 + do_tcpext_connaborts = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP connection aborts",
1448 + CONFIG_BOOLEAN_AUTO);
1449 + do_tcpext_ofo = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP out-of-order queue",
1450 + CONFIG_BOOLEAN_AUTO);
1451 + do_tcpext_syncookies = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP SYN cookies",
1452 + CONFIG_BOOLEAN_AUTO);
1453 + do_ecn = config_get_boolean_ondemand("plugin:freebsd:sysctl", "ECN packets",
1454 + CONFIG_BOOLEAN_AUTO);
1455 + }
1456 +
1457 + static int mib[4] = {0, 0, 0, 0};
1458 + struct tcpstat tcpstat;
1459 +
1460 + // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
1461 + if (likely(do_tcp_packets || do_tcp_errors || do_tcp_handshake || do_tcpext_connaborts || do_tcpext_ofo || do_tcpext_syncookies || do_ecn)) {
1462 + if (unlikely(GETSYSCTL_SIMPLE("net.inet.tcp.stats", mib, tcpstat))) {
1463 + do_tcp_packets = 0;
1464 + error("DISABLED: ipv4.tcppackets chart");
1465 + do_tcp_errors = 0;
1466 + error("DISABLED: ipv4.tcperrors chart");
1467 + do_tcp_handshake = 0;
1468 + error("DISABLED: ipv4.tcphandshake chart");
1469 + do_tcpext_connaborts = 0;
1470 + error("DISABLED: ipv4.tcpconnaborts chart");
1471 + do_tcpext_ofo = 0;
1472 + error("DISABLED: ipv4.tcpofo chart");
1473 + do_tcpext_syncookies = 0;
1474 + error("DISABLED: ipv4.tcpsyncookies chart");
1475 + do_ecn = 0;
1476 + error("DISABLED: ipv4.ecnpkts chart");
1477 + error("DISABLED: net.inet.tcp.stats module");
1478 + return 1;
1479 + } else {
1480 +
1481 + // --------------------------------------------------------------------
1482 +
1483 + if (likely(do_tcp_packets)) {
1484 + static RRDSET *st_packets = NULL;
1485 + static RRDDIM *rd_in_segs = NULL, *rd_out_segs = NULL;
1486 +
1487 + if (unlikely(!st_packets)) {
1488 + st_packets = rrdset_create_localhost("ipv4",
1489 + "tcppackets",
1490 + NULL,
1491 + "tcp",
1492 + NULL,
1493 + "IPv4 TCP Packets",
1494 + "packets/s",
1495 + 2600,
1496 + update_every,
1497 + RRDSET_TYPE_LINE
1498 + );
1499 +
1500 + rd_in_segs = rrddim_add(st_packets, "InSegs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1501 + rd_out_segs = rrddim_add(st_packets, "OutSegs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
1502 + } else
1503 + rrdset_next(st_packets);
1504 +
1505 + rrddim_set_by_pointer(st_packets, rd_in_segs, tcpstat.tcps_rcvtotal);
1506 + rrddim_set_by_pointer(st_packets, rd_out_segs, tcpstat.tcps_sndtotal);
1507 + rrdset_done(st_packets);
1508 + }
1509 +
1510 + // --------------------------------------------------------------------
1511 +
1512 + if (likely(do_tcp_errors)) {
1513 + static RRDSET *st_errors = NULL;
1514 + static RRDDIM *rd_in_errs = NULL, *rd_in_csum_errs = NULL, *rd_retrans_segs = NULL;
1515 +
1516 + if (unlikely(!st_errors)) {
1517 + st_errors = rrdset_create_localhost("ipv4",
1518 + "tcperrors",
1519 + NULL,
1520 + "tcp",
1521 + NULL,
1522 + "IPv4 TCP Errors",
1523 + "packets/s",
1524 + 2700,
1525 + update_every,
1526 + RRDSET_TYPE_LINE
1527 + );
1528 +
1529 + rrdset_flag_set(st_errors, RRDSET_FLAG_DETAIL);
1530 +
1531 + rd_in_errs = rrddim_add(st_errors, "InErrs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1532 + rd_in_csum_errs = rrddim_add(st_errors, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1533 + rd_retrans_segs = rrddim_add(st_errors, "RetransSegs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1534 + } else
1535 + rrdset_next(st_errors);
1536 +
1537 +#if __FreeBSD__ >= 11
1538 + rrddim_set_by_pointer(st_errors, rd_in_errs, tcpstat.tcps_rcvbadoff + tcpstat.tcps_rcvreassfull +
1539 + tcpstat.tcps_rcvshort);
1540 +#else
1541 + rrddim_set_by_pointer(st_errors, rd_in_errs, tcpstat.tcps_rcvbadoff + tcpstat.tcps_rcvshort);
1542 +#endif
1543 + rrddim_set_by_pointer(st_errors, rd_in_csum_errs, tcpstat.tcps_rcvbadsum);
1544 + rrddim_set_by_pointer(st_errors, rd_retrans_segs, tcpstat.tcps_sndrexmitpack);
1545 + rrdset_done(st_errors);
1546 + }
1547 +
1548 + // --------------------------------------------------------------------
1549 +
1550 + if (likely(do_tcp_handshake)) {
1551 + static RRDSET *st_handshake = NULL;
1552 + static RRDDIM *rd_estab_resets = NULL, *rd_active_opens = NULL, *rd_passive_opens = NULL,
1553 + *rd_attempt_fails = NULL;
1554 +
1555 + if (unlikely(!st_handshake)) {
1556 + st_handshake = rrdset_create_localhost("ipv4",
1557 + "tcphandshake",
1558 + NULL,
1559 + "tcp",
1560 + NULL,
1561 + "IPv4 TCP Handshake Issues",
1562 + "events/s",
1563 + 2900,
1564 + update_every,
1565 + RRDSET_TYPE_LINE
1566 + );
1567 +
1568 + rrdset_flag_set(st_handshake, RRDSET_FLAG_DETAIL);
1569 +
1570 + rd_estab_resets = rrddim_add(st_handshake, "EstabResets", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1571 + rd_active_opens = rrddim_add(st_handshake, "ActiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1572 + rd_passive_opens = rrddim_add(st_handshake, "PassiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1573 + rd_attempt_fails = rrddim_add(st_handshake, "AttemptFails", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1574 + } else
1575 + rrdset_next(st_handshake);
1576 +
1577 + rrddim_set_by_pointer(st_handshake, rd_estab_resets, tcpstat.tcps_drops);
1578 + rrddim_set_by_pointer(st_handshake, rd_active_opens, tcpstat.tcps_connattempt);
1579 + rrddim_set_by_pointer(st_handshake, rd_passive_opens, tcpstat.tcps_accepts);
1580 + rrddim_set_by_pointer(st_handshake, rd_attempt_fails, tcpstat.tcps_conndrops);
1581 + rrdset_done(st_handshake);
1582 + }
1583 +
1584 + // --------------------------------------------------------------------
1585 +
1586 + if (do_tcpext_connaborts == CONFIG_BOOLEAN_YES || (do_tcpext_connaborts == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_rcvpackafterwin || tcpstat.tcps_rcvafterclose || tcpstat.tcps_rcvmemdrop || tcpstat.tcps_persistdrop || tcpstat.tcps_finwait2_drops))) {
1587 + do_tcpext_connaborts = CONFIG_BOOLEAN_YES;
1588 +
1589 + static RRDSET *st_connaborts = NULL;
1590 + static RRDDIM *rd_on_data = NULL, *rd_on_close = NULL, *rd_on_memory = NULL,
1591 + *rd_on_timeout = NULL, *rd_on_linger = NULL;
1592 +
1593 + if (unlikely(!st_connaborts)) {
1594 + st_connaborts = rrdset_create_localhost("ipv4",
1595 + "tcpconnaborts",
1596 + NULL,
1597 + "tcp",
1598 + NULL,
1599 + "TCP Connection Aborts",
1600 + "connections/s",
1601 + 3010,
1602 + update_every,
1603 + RRDSET_TYPE_LINE
1604 + );
1605 +
1606 + rd_on_data = rrddim_add(st_connaborts, "TCPAbortOnData", "baddata", 1, 1,
1607 + RRD_ALGORITHM_INCREMENTAL);
1608 + rd_on_close = rrddim_add(st_connaborts, "TCPAbortOnClose", "userclosed", 1, 1,
1609 + RRD_ALGORITHM_INCREMENTAL);
1610 + rd_on_memory = rrddim_add(st_connaborts, "TCPAbortOnMemory", "nomemory", 1, 1,
1611 + RRD_ALGORITHM_INCREMENTAL);
1612 + rd_on_timeout = rrddim_add(st_connaborts, "TCPAbortOnTimeout", "timeout", 1, 1,
1613 + RRD_ALGORITHM_INCREMENTAL);
1614 + rd_on_linger = rrddim_add(st_connaborts, "TCPAbortOnLinger", "linger", 1, 1,
1615 + RRD_ALGORITHM_INCREMENTAL);
1616 + }
1617 + else rrdset_next(st_connaborts);
1618 +
1619 + rrddim_set_by_pointer(st_connaborts, rd_on_data, tcpstat.tcps_rcvpackafterwin);
1620 + rrddim_set_by_pointer(st_connaborts, rd_on_close, tcpstat.tcps_rcvafterclose);
1621 + rrddim_set_by_pointer(st_connaborts, rd_on_memory, tcpstat.tcps_rcvmemdrop);
1622 + rrddim_set_by_pointer(st_connaborts, rd_on_timeout, tcpstat.tcps_persistdrop);
1623 + rrddim_set_by_pointer(st_connaborts, rd_on_linger, tcpstat.tcps_finwait2_drops);
1624 + rrdset_done(st_connaborts);
1625 + }
1626 +
1627 + // --------------------------------------------------------------------
1628 +
1629 + if (do_tcpext_ofo == CONFIG_BOOLEAN_YES || (do_tcpext_ofo == CONFIG_BOOLEAN_AUTO && tcpstat.tcps_rcvoopack)) {
1630 + do_tcpext_ofo = CONFIG_BOOLEAN_YES;
1631 +
1632 + static RRDSET *st_ofo_queue = NULL;
1633 + static RRDDIM *rd_ofo_queue = NULL;
1634 +
1635 + if (unlikely(!st_ofo_queue)) {
1636 + st_ofo_queue = rrdset_create_localhost("ipv4",
1637 + "tcpofo",
1638 + NULL,
1639 + "tcp",
1640 + NULL,
1641 + "TCP Out-Of-Order Queue",
1642 + "packets/s",
1643 + 3050,
1644 + update_every,
1645 + RRDSET_TYPE_LINE
1646 + );
1647 +
1648 + rd_ofo_queue = rrddim_add(st_ofo_queue, "TCPOFOQueue", "inqueue", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1649 + }
1650 + else rrdset_next(st_ofo_queue);
1651 +
1652 + rrddim_set_by_pointer(st_ofo_queue, rd_ofo_queue, tcpstat.tcps_rcvoopack);
1653 + rrdset_done(st_ofo_queue);
1654 + }
1655 +
1656 + // --------------------------------------------------------------------
1657 +
1658 + if (do_tcpext_syncookies == CONFIG_BOOLEAN_YES || (do_tcpext_syncookies == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_sc_sendcookie || tcpstat.tcps_sc_recvcookie || tcpstat.tcps_sc_zonefail))) {
1659 + do_tcpext_syncookies = CONFIG_BOOLEAN_YES;
1660 +
1661 + static RRDSET *st_syncookies = NULL;
1662 + static RRDDIM *rd_recv = NULL, *rd_send = NULL, *rd_failed = NULL;
1663 +
1664 + if (unlikely(!st_syncookies)) {
1665 + st_syncookies = rrdset_create_localhost("ipv4",
1666 + "tcpsyncookies",
1667 + NULL,
1668 + "tcp",
1669 + NULL,
1670 + "TCP SYN Cookies",
1671 + "packets/s",
1672 + 3100,
1673 + update_every,
1674 + RRDSET_TYPE_LINE
1675 + );
1676 +
1677 + rd_recv = rrddim_add(st_syncookies, "SyncookiesRecv", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1678 + rd_send = rrddim_add(st_syncookies, "SyncookiesSent", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
1679 + rd_failed = rrddim_add(st_syncookies, "SyncookiesFailed", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
1680 + }
1681 + else rrdset_next(st_syncookies);
1682 +
1683 + rrddim_set_by_pointer(st_syncookies, rd_recv, tcpstat.tcps_sc_recvcookie);
1684 + rrddim_set_by_pointer(st_syncookies, rd_send, tcpstat.tcps_sc_sendcookie);
1685 + rrddim_set_by_pointer(st_syncookies, rd_failed, tcpstat.tcps_sc_zonefail);
1686 + rrdset_done(st_syncookies);
1687 + }
1688 +
1689 + // --------------------------------------------------------------------
1690 +
1691 + if (do_ecn == CONFIG_BOOLEAN_YES || (do_ecn == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_ecn_ce || tcpstat.tcps_ecn_ect0 || tcpstat.tcps_ecn_ect1))) {
1692 + do_ecn = CONFIG_BOOLEAN_YES;
1693 +
1694 + static RRDSET *st_ecn = NULL;
1695 + static RRDDIM *rd_ce = NULL, *rd_no_ect = NULL, *rd_ect0 = NULL, *rd_ect1 = NULL;
1696 +
1697 + if (unlikely(!st_ecn)) {
1698 + st_ecn = rrdset_create_localhost("ipv4",
1699 + "ecnpkts",
1700 + NULL,
1701 + "ecn",
1702 + NULL,
1703 + "IPv4 ECN Statistics",
1704 + "packets/s",
1705 + 8700,
1706 + update_every,
1707 + RRDSET_TYPE_LINE
1708 + );
1709 +
1710 + rrdset_flag_set(st_ecn, RRDSET_FLAG_DETAIL);
1711 +
1712 + rd_ce = rrddim_add(st_ecn, "InCEPkts", "CEP", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1713 + rd_no_ect = rrddim_add(st_ecn, "InNoECTPkts", "NoECTP", -1, 1, RRD_ALGORITHM_INCREMENTAL);
1714 + rd_ect0 = rrddim_add(st_ecn, "InECT0Pkts", "ECTP0", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1715 + rd_ect1 = rrddim_add(st_ecn, "InECT1Pkts", "ECTP1", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1716 + }
1717 + else rrdset_next(st_ecn);
1718 +
1719 + rrddim_set_by_pointer(st_ecn, rd_ce, tcpstat.tcps_ecn_ce);
1720 + rrddim_set_by_pointer(st_ecn, rd_no_ect, tcpstat.tcps_ecn_ce - (tcpstat.tcps_ecn_ect0 +
1721 + tcpstat.tcps_ecn_ect1));
1722 + rrddim_set_by_pointer(st_ecn, rd_ect0, tcpstat.tcps_ecn_ect0);
1723 + rrddim_set_by_pointer(st_ecn, rd_ect1, tcpstat.tcps_ecn_ect1);
1724 + rrdset_done(st_ecn);
1725 + }
1726 +
1727 + }
1728 + } else {
1729 + error("DISABLED: net.inet.tcp.stats module");
1730 + return 1;
1731 + }
1732 +
1733 + return 0;
1734 +}
1735 +
1736 +
1737 +
1738 // --------------------------------------------------------------------------------------------------------------------
1739 // old sources
1740
1741 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1742 static int do_disk_io = -1,
1743 do_bandwidth = -1,
1443 - do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
1444 - do_ecn = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1,
1744 do_udp_packets = -1, do_udp_errors = -1, do_icmp_packets = -1, do_icmpmsg = -1,
1745 do_ip_packets = -1, do_ip_fragsout = -1, do_ip_fragsin = -1, do_ip_errors = -1,
1746 do_ip6_packets = -1, do_ip6_fragsout = -1, do_ip6_fragsin = -1, do_ip6_errors = -1,
@@ -1451,14 +1750,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1750 if (unlikely(do_disk_io == -1)) {
1751 do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
1752 do_bandwidth = config_get_boolean("plugin:freebsd:sysctl", "bandwidth", 1);
1454 - do_tcp_sockets = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP connections", 1);
1455 - do_tcp_packets = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP packets", 1);
1456 - do_tcp_errors = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP errors", 1);
1457 - do_tcp_handshake = config_get_boolean("plugin:freebsd:sysctl", "ipv4 TCP handshake issues", 1);
1458 - do_ecn = config_get_boolean_ondemand("plugin:freebsd:sysctl", "ECN packets", CONFIG_BOOLEAN_AUTO);
1459 - do_tcpext_syscookies = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP SYN cookies", CONFIG_BOOLEAN_AUTO);
1460 - do_tcpext_ofo = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP out-of-order queue", CONFIG_BOOLEAN_AUTO);
1461 - do_tcpext_connaborts = config_get_boolean_ondemand("plugin:freebsd:sysctl", "TCP connection aborts", CONFIG_BOOLEAN_AUTO);
1753 do_udp_packets = config_get_boolean("plugin:freebsd:sysctl", "ipv4 UDP packets", 1);
1754 do_udp_errors = config_get_boolean("plugin:freebsd:sysctl", "ipv4 UDP errors", 1);
1755 do_icmp_packets = config_get_boolean("plugin:freebsd:sysctl", "ipv4 ICMP packets", 1);
@@ -1517,9 +1808,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1808 u_long ift_obytes;
1809 } iftot = {0, 0};
1810
1520 - // NEEDED BY: do_tcp...
1521 - struct tcpstat tcpstat;
1522 -
1811 // NEEDED BY: do_udp...
1812 struct udpstat udpstat;
1813
@@ -1876,180 +2164,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
2164
2165 // --------------------------------------------------------------------
2166
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))){
1882 - do_tcp_packets = 0;
1883 - error("DISABLED: ipv4.tcppackets");
1884 - do_tcp_errors = 0;
1885 - error("DISABLED: ipv4.tcperrors");
1886 - do_tcp_handshake = 0;
1887 - error("DISABLED: ipv4.tcphandshake");
1888 - do_tcpext_connaborts = 0;
1889 - error("DISABLED: ipv4.tcpconnaborts");
1890 - do_tcpext_ofo = 0;
1891 - error("DISABLED: ipv4.tcpofo");
1892 - do_tcpext_syscookies = 0;
1893 - error("DISABLED: ipv4.tcpsyncookies");
1894 - do_ecn = 0;
1895 - error("DISABLED: ipv4.ecnpkts");
1896 - } else {
1897 - if (likely(do_tcp_packets)) {
1898 - st = rrdset_find_localhost("ipv4.tcppackets");
1899 - if (unlikely(!st)) {
1900 - st = rrdset_create_localhost("ipv4", "tcppackets", NULL, "tcp", NULL, "IPv4 TCP Packets",
1901 - "packets/s",
1902 - 2600, update_every, RRDSET_TYPE_LINE);
1903 -
1904 - rrddim_add(st, "InSegs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1905 - rrddim_add(st, "OutSegs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
1906 - } else
1907 - rrdset_next(st);
1908 -
1909 - rrddim_set(st, "InSegs", tcpstat.tcps_rcvtotal);
1910 - rrddim_set(st, "OutSegs", tcpstat.tcps_sndtotal);
1911 - rrdset_done(st);
1912 - }
1913 -
1914 - // --------------------------------------------------------------------
1915 -
1916 - if (likely(do_tcp_errors)) {
1917 - st = rrdset_find_localhost("ipv4.tcperrors");
1918 - if (unlikely(!st)) {
1919 - st = rrdset_create_localhost("ipv4", "tcperrors", NULL, "tcp", NULL, "IPv4 TCP Errors",
1920 - "packets/s",
1921 - 2700, update_every, RRDSET_TYPE_LINE);
1922 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
1923 -
1924 - rrddim_add(st, "InErrs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1925 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1926 - rrddim_add(st, "RetransSegs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1927 - } else
1928 - rrdset_next(st);
1929 -
1930 -#if __FreeBSD__ >= 11
1931 - rrddim_set(st, "InErrs", tcpstat.tcps_rcvbadoff + tcpstat.tcps_rcvreassfull + tcpstat.tcps_rcvshort);
1932 -#else
1933 - rrddim_set(st, "InErrs", tcpstat.tcps_rcvbadoff + tcpstat.tcps_rcvshort);
1934 -#endif
1935 - rrddim_set(st, "InCsumErrors", tcpstat.tcps_rcvbadsum);
1936 - rrddim_set(st, "RetransSegs", tcpstat.tcps_sndrexmitpack);
1937 - rrdset_done(st);
1938 - }
1939 -
1940 - // --------------------------------------------------------------------
1941 -
1942 - if (likely(do_tcp_handshake)) {
1943 - st = rrdset_find_localhost("ipv4.tcphandshake");
1944 - if (unlikely(!st)) {
1945 - st = rrdset_create_localhost("ipv4", "tcphandshake", NULL, "tcp", NULL,
1946 - "IPv4 TCP Handshake Issues",
1947 - "events/s", 2900, update_every, RRDSET_TYPE_LINE);
1948 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
1949 -
1950 - rrddim_add(st, "EstabResets", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1951 - rrddim_add(st, "ActiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1952 - rrddim_add(st, "PassiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1953 - rrddim_add(st, "AttemptFails", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1954 - } else
1955 - rrdset_next(st);
1956 -
1957 - rrddim_set(st, "EstabResets", tcpstat.tcps_drops);
1958 - rrddim_set(st, "ActiveOpens", tcpstat.tcps_connattempt);
1959 - rrddim_set(st, "PassiveOpens", tcpstat.tcps_accepts);
1960 - rrddim_set(st, "AttemptFails", tcpstat.tcps_conndrops);
1961 - rrdset_done(st);
1962 - }
1963 -
1964 - // --------------------------------------------------------------------
1965 -
1966 - if (do_tcpext_connaborts == CONFIG_BOOLEAN_YES || (do_tcpext_connaborts == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_rcvpackafterwin || tcpstat.tcps_rcvafterclose || tcpstat.tcps_rcvmemdrop || tcpstat.tcps_persistdrop || tcpstat.tcps_finwait2_drops))) {
1967 - do_tcpext_connaborts = CONFIG_BOOLEAN_YES;
1968 - st = rrdset_find_localhost("ipv4.tcpconnaborts");
1969 - if (unlikely(!st)) {
1970 - st = rrdset_create_localhost("ipv4", "tcpconnaborts", NULL, "tcp", NULL, "TCP Connection Aborts", "connections/s", 3010, update_every, RRDSET_TYPE_LINE);
1971 -
1972 - rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1973 - rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1974 - rrddim_add(st, "TCPAbortOnMemory", "nomemory", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1975 - rrddim_add(st, "TCPAbortOnTimeout", "timeout", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1976 - rrddim_add(st, "TCPAbortOnLinger", "linger", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1977 - }
1978 - else rrdset_next(st);
1979 -
1980 - rrddim_set(st, "TCPAbortOnData", tcpstat.tcps_rcvpackafterwin);
1981 - rrddim_set(st, "TCPAbortOnClose", tcpstat.tcps_rcvafterclose);
1982 - rrddim_set(st, "TCPAbortOnMemory", tcpstat.tcps_rcvmemdrop);
1983 - rrddim_set(st, "TCPAbortOnTimeout", tcpstat.tcps_persistdrop);
1984 - rrddim_set(st, "TCPAbortOnLinger", tcpstat.tcps_finwait2_drops);
1985 - rrdset_done(st);
1986 - }
1987 -
1988 - // --------------------------------------------------------------------
1989 -
1990 - if (do_tcpext_ofo == CONFIG_BOOLEAN_YES || (do_tcpext_ofo == CONFIG_BOOLEAN_AUTO && tcpstat.tcps_rcvoopack)) {
1991 - do_tcpext_ofo = CONFIG_BOOLEAN_YES;
1992 - st = rrdset_find_localhost("ipv4.tcpofo");
1993 - if (unlikely(!st)) {
1994 - st = rrdset_create_localhost("ipv4", "tcpofo", NULL, "tcp", NULL, "TCP Out-Of-Order Queue", "packets/s", 3050, update_every, RRDSET_TYPE_LINE);
1995 -
1996 - rrddim_add(st, "TCPOFOQueue", "inqueue", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1997 - }
1998 - else rrdset_next(st);
1999 -
2000 - rrddim_set(st, "TCPOFOQueue", tcpstat.tcps_rcvoopack);
2001 - rrdset_done(st);
2002 - }
2003 -
2004 - // --------------------------------------------------------------------
2005 -
2006 - if (do_tcpext_syscookies == CONFIG_BOOLEAN_YES || (do_tcpext_syscookies == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_sc_sendcookie || tcpstat.tcps_sc_recvcookie || tcpstat.tcps_sc_zonefail))) {
2007 - do_tcpext_syscookies = CONFIG_BOOLEAN_YES;
2008 -
2009 - st = rrdset_find_localhost("ipv4.tcpsyncookies");
2010 - if (unlikely(!st)) {
2011 - st = rrdset_create_localhost("ipv4", "tcpsyncookies", NULL, "tcp", NULL, "TCP SYN Cookies", "packets/s", 3100, update_every, RRDSET_TYPE_LINE);
2012 -
2013 - rrddim_add(st, "SyncookiesRecv", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2014 - rrddim_add(st, "SyncookiesSent", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
2015 - rrddim_add(st, "SyncookiesFailed", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
2016 - }
2017 - else rrdset_next(st);
2018 -
2019 - rrddim_set(st, "SyncookiesRecv", tcpstat.tcps_sc_recvcookie);
2020 - rrddim_set(st, "SyncookiesSent", tcpstat.tcps_sc_sendcookie);
2021 - rrddim_set(st, "SyncookiesFailed", tcpstat.tcps_sc_zonefail);
2022 - rrdset_done(st);
2023 - }
2024 -
2025 - // --------------------------------------------------------------------
2026 -
2027 - if (do_ecn == CONFIG_BOOLEAN_YES || (do_ecn == CONFIG_BOOLEAN_AUTO && (tcpstat.tcps_ecn_ce || tcpstat.tcps_ecn_ect0 || tcpstat.tcps_ecn_ect1))) {
2028 - do_ecn = CONFIG_BOOLEAN_YES;
2029 - st = rrdset_find_localhost("ipv4.ecnpkts");
2030 - if (unlikely(!st)) {
2031 - st = rrdset_create_localhost("ipv4", "ecnpkts", NULL, "ecn", NULL, "IPv4 ECN Statistics", "packets/s", 8700, update_every, RRDSET_TYPE_LINE);
2032 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
2033 -
2034 - rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2035 - rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRD_ALGORITHM_INCREMENTAL);
2036 - rrddim_add(st, "InECT0Pkts", "ECTP0", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2037 - rrddim_add(st, "InECT1Pkts", "ECTP1", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2038 - }
2039 - else rrdset_next(st);
2040 -
2041 - rrddim_set(st, "InCEPkts", tcpstat.tcps_ecn_ce);
2042 - rrddim_set(st, "InNoECTPkts", tcpstat.tcps_ecn_ce - (tcpstat.tcps_ecn_ect0 + tcpstat.tcps_ecn_ect1));
2043 - rrddim_set(st, "InECT0Pkts", tcpstat.tcps_ecn_ect0);
2044 - rrddim_set(st, "InECT1Pkts", tcpstat.tcps_ecn_ect1);
2045 - rrdset_done(st);
2046 - }
2047 -
2048 - }
2049 - }
2050 -
2051 - // --------------------------------------------------------------------
2052 -
2167 // see http://net-snmp.sourceforge.net/docs/mibs/udp.html
2168 if (likely(do_udp_packets || do_udp_errors)) {
2169 if (unlikely(GETSYSCTL_BY_NAME("net.inet.udp.stats", udpstat))) {
src/plugin_freebsd.c
+3
@@ -32,7 +32,10 @@ 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 +
36 + // network metrics
37 { .name = "net.inet.tcp.states", .dim = "tcp_states", .enabled = 1, .func = do_net_inet_tcp_states },
38 + { .name = "net.inet.tcp.stats", .dim = "tcp_stats", .enabled = 1, .func = do_net_inet_tcp_stats },
39
40 // CPU metrics
41 { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
src/plugin_freebsd.h
+1
@@ -26,6 +26,7 @@ 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 +extern int do_net_inet_tcp_stats(int update_every, usec_t dt);
30
31 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
32