@cryptotaxi247 / netdata-1 / commits / 5f262b15b

Add tcp ListenOverflows to FreeBSD plugin

Vladimir Kobal committed Oct 18, 2017 at 12:53 UTC 5f262b15b329abf9b92d95caf4ccc03485bc993d
2 files changed +44 -3
conf.d/health.d/tcp_listen.conf
+1 -1
@@ -3,7 +3,7 @@
3
4 alarm: 1m_ipv4_tcp_listen_overflows
5 on: ipv4.tcplistenissues
6 - os: linux
6 + os: linux freebsd
7 hosts: *
8 lookup: sum -60s unaligned absolute of ListenOverflows
9 units: overflows
src/freebsd_sysctl.c
+43 -2
@@ -1751,7 +1751,8 @@ int do_net_inet_tcp_states(int update_every, usec_t dt) {
1751
1752 int do_net_inet_tcp_stats(int update_every, usec_t dt) {
1753 (void)dt;
1754 - 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;
1754 + static int do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1, do_tcpext_connaborts = -1, do_tcpext_ofo = -1,
1755 + do_tcpext_syncookies = -1, do_tcpext_listen = -1, do_ecn = -1;
1756
1757 if (unlikely(do_tcp_packets == -1)) {
1758 do_tcp_packets = config_get_boolean("plugin:freebsd:net.inet.tcp.stats", "ipv4 TCP packets", 1);
@@ -1763,12 +1764,15 @@ int do_net_inet_tcp_stats(int update_every, usec_t dt) {
1764 CONFIG_BOOLEAN_AUTO);
1765 do_tcpext_syncookies = config_get_boolean_ondemand("plugin:freebsd:net.inet.tcp.stats", "TCP SYN cookies",
1766 CONFIG_BOOLEAN_AUTO);
1767 + do_tcpext_listen = config_get_boolean_ondemand("plugin:freebsd:net.inet.tcp.stats", "TCP listen issues",
1768 + CONFIG_BOOLEAN_AUTO);
1769 do_ecn = config_get_boolean_ondemand("plugin:freebsd:net.inet.tcp.stats", "ECN packets",
1770 CONFIG_BOOLEAN_AUTO);
1771 }
1772
1773 // see http://net-snmp.sourceforge.net/docs/mibs/tcp.html
1771 - if (likely(do_tcp_packets || do_tcp_errors || do_tcp_handshake || do_tcpext_connaborts || do_tcpext_ofo || do_tcpext_syncookies || do_ecn)) {
1774 + if (likely(do_tcp_packets || do_tcp_errors || do_tcp_handshake || do_tcpext_connaborts || do_tcpext_ofo ||
1775 + do_tcpext_syncookies || do_tcpext_listen || do_ecn)) {
1776 static int mib[4] = {0, 0, 0, 0};
1777 struct tcpstat tcpstat;
1778
@@ -1785,6 +1789,8 @@ int do_net_inet_tcp_stats(int update_every, usec_t dt) {
1789 error("DISABLED: ipv4.tcpofo chart");
1790 do_tcpext_syncookies = 0;
1791 error("DISABLED: ipv4.tcpsyncookies chart");
1792 + do_tcpext_listen = 0;
1793 + error("DISABLED: ipv4.tcplistenissues chart");
1794 do_ecn = 0;
1795 error("DISABLED: ipv4.ecnpkts chart");
1796 error("DISABLED: net.inet.tcp.stats module");
@@ -2011,6 +2017,41 @@ int do_net_inet_tcp_stats(int update_every, usec_t dt) {
2017 rrddim_set_by_pointer(st, rd_failed, tcpstat.tcps_sc_zonefail);
2018 rrdset_done(st);
2019 }
2020 +
2021 + // --------------------------------------------------------------------
2022 +
2023 + if(do_tcpext_listen == CONFIG_BOOLEAN_YES || (do_tcpext_listen == CONFIG_BOOLEAN_AUTO && tcpstat.tcps_listendrop)) {
2024 + do_tcpext_listen = CONFIG_BOOLEAN_YES;
2025 +
2026 + static RRDSET *st_listen = NULL;
2027 + static RRDDIM *rd_overflows = NULL;
2028 +
2029 + if(unlikely(!st_listen)) {
2030 +
2031 + st_listen = rrdset_create_localhost(
2032 + "ipv4",
2033 + "tcplistenissues",
2034 + NULL,
2035 + "tcp",
2036 + NULL,
2037 + "TCP Listen Socket Issues",
2038 + "packets/s",
2039 + "freebsd",
2040 + "net.inet.tcp.stats",
2041 + 3015,
2042 + update_every,
2043 + RRDSET_TYPE_LINE
2044 + );
2045 +
2046 + rd_overflows = rrddim_add(st_listen, "ListenOverflows", "overflows", 1, 1, RRD_ALGORITHM_INCREMENTAL);
2047 + }
2048 + else
2049 + rrdset_next(st_listen);
2050 +
2051 + rrddim_set_by_pointer(st_listen, rd_overflows, tcpstat.tcps_listendrop);
2052 +
2053 + rrdset_done(st_listen);
2054 + }
2055
2056 // --------------------------------------------------------------------
2057