@cryptotaxi247 / netdata-1 / commits / 01821a06d

added TCP memory pressures chart

Costa Tsaousis (ktsaou) committed Sep 23, 2016 at 01:10 UTC 01821a06df80d204d2facc665f421fed1e9d053d
1 file changed +24 -4
src/proc_net_netstat.c
+24 -4
@@ -195,7 +195,7 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
195 (void)dt;
196
197 static int do_bandwidth = -1, do_inerrors = -1, do_mcast = -1, do_bcast = -1, do_mcast_p = -1, do_bcast_p = -1, do_ecn = -1, \
198 - do_tcpext_reorder = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1;
198 + do_tcpext_reorder = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1, do_tcpext_memory = -1;
199 static uint32_t hash_ipext = 0, hash_tcpext = 0;
200 static procfile *ff = NULL;
201
@@ -220,6 +220,8 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
220 static unsigned long long *tcpext_TCPAbortOnLinger = NULL; // connections aborted after user close in linger timeout
221 static unsigned long long *tcpext_TCPAbortFailed = NULL; // times unable to send RST due to no memory
222
223 + static unsigned long long *tcpext_TCPMemoryPressures = NULL;
224 +
225 /*
226 // connection rejects
227 static unsigned long long *tcpext_PAWSActive = NULL; // active connections rejected because of time stamp
@@ -298,7 +300,6 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
300 static unsigned long long *tcpext_TCPSchedulerFailed = NULL;
301 static unsigned long long *tcpext_TCPRcvCollapsed = NULL;
302
301 - static unsigned long long *tcpext_TCPMemoryPressures = NULL;
303 static unsigned long long *tcpext_TCPSpuriousRTOs = NULL;
304 static unsigned long long *tcpext_TCPMD5NotFound = NULL;
305 static unsigned long long *tcpext_TCPMD5Unexpected = NULL;
@@ -382,6 +383,7 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
383 do_tcpext_syscookies = config_get_boolean_ondemand("plugin:proc:/proc/net/netstat", "TCP SYN cookies", CONFIG_ONDEMAND_ONDEMAND);
384 do_tcpext_ofo = config_get_boolean_ondemand("plugin:proc:/proc/net/netstat", "TCP out-of-order queue", CONFIG_ONDEMAND_ONDEMAND);
385 do_tcpext_connaborts = config_get_boolean_ondemand("plugin:proc:/proc/net/netstat", "TCP connection aborts", CONFIG_ONDEMAND_ONDEMAND);
386 + do_tcpext_memory = config_get_boolean_ondemand("plugin:proc:/proc/net/netstat", "TCP memory pressures", CONFIG_ONDEMAND_ONDEMAND);
387
388 hash_ipext = simple_hash("IpExt");
389 hash_tcpext = simple_hash("TcpExt");
@@ -416,6 +418,8 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
418 tcpext_TCPAbortOnLinger = netstat_columns_find(tcpext_data, "TCPAbortOnLinger"); // connections aborted after user close in linger timeout
419 tcpext_TCPAbortFailed = netstat_columns_find(tcpext_data, "TCPAbortFailed"); // times unable to send RST due to no memory
420
421 + tcpext_TCPMemoryPressures = netstat_columns_find(tcpext_data, "TCPMemoryPressures");
422 +
423 /*
424 tcpext_EmbryonicRsts = netstat_columns_find(tcpext_data, "EmbryonicRsts");
425 tcpext_PruneCalled = netstat_columns_find(tcpext_data, "PruneCalled");
@@ -467,7 +471,6 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
471 tcpext_TCPDSACKOfoSent = netstat_columns_find(tcpext_data, "TCPDSACKOfoSent");
472 tcpext_TCPDSACKRecv = netstat_columns_find(tcpext_data, "TCPDSACKRecv");
473 tcpext_TCPDSACKOfoRecv = netstat_columns_find(tcpext_data, "TCPDSACKOfoRecv");
470 - tcpext_TCPMemoryPressures = netstat_columns_find(tcpext_data, "TCPMemoryPressures");
474 tcpext_TCPSACKDiscard = netstat_columns_find(tcpext_data, "TCPSACKDiscard");
475 tcpext_TCPDSACKIgnoredOld = netstat_columns_find(tcpext_data, "TCPDSACKIgnoredOld");
476 tcpext_TCPDSACKIgnoredNoUndo = netstat_columns_find(tcpext_data, "TCPDSACKIgnoredNoUndo");
@@ -727,11 +730,27 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
730
731 // --------------------------------------------------------------------
732
733 + if(do_tcpext_memory == CONFIG_ONDEMAND_YES || (do_tcpext_memory == CONFIG_ONDEMAND_ONDEMAND && (*tcpext_TCPMemoryPressures))) {
734 + do_tcpext_memory = CONFIG_ONDEMAND_YES;
735 + st = rrdset_find("ipv4.tcpmemorypressures");
736 + if(!st) {
737 + st = rrdset_create("ipv4", "tcpmemorypressures", NULL, "tcp", NULL, "TCP Memory Pressures", "events/s", 3000, update_every, RRDSET_TYPE_LINE);
738 +
739 + rrddim_add(st, "TCPMemoryPressures", "pressures", 1, 1, RRDDIM_INCREMENTAL);
740 + }
741 + else rrdset_next(st);
742 +
743 + rrddim_set(st, "TCPMemoryPressures", *tcpext_TCPMemoryPressures);
744 + rrdset_done(st);
745 + }
746 +
747 + // --------------------------------------------------------------------
748 +
749 if(do_tcpext_connaborts == CONFIG_ONDEMAND_YES || (do_tcpext_connaborts == CONFIG_ONDEMAND_ONDEMAND && (*tcpext_TCPAbortOnData || *tcpext_TCPAbortOnClose || *tcpext_TCPAbortOnMemory || *tcpext_TCPAbortOnTimeout || *tcpext_TCPAbortOnLinger || *tcpext_TCPAbortFailed))) {
750 do_tcpext_connaborts = CONFIG_ONDEMAND_YES;
751 st = rrdset_find("ipv4.tcpconnaborts");
752 if(!st) {
734 - st = rrdset_create("ipv4", "tcpconnaborts", NULL, "tcp", NULL, "TCP Connection Aborts", "connections/s", 3000, update_every, RRDSET_TYPE_LINE);
753 + st = rrdset_create("ipv4", "tcpconnaborts", NULL, "tcp", NULL, "TCP Connection Aborts", "connections/s", 3010, update_every, RRDSET_TYPE_LINE);
754
755 rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRDDIM_INCREMENTAL);
756 rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRDDIM_INCREMENTAL);
@@ -813,6 +832,7 @@ int do_proc_net_netstat(int update_every, unsigned long long dt) {
832 rrddim_set(st, "SyncookiesFailed", *tcpext_SyncookiesFailed);
833 rrdset_done(st);
834 }
835 +
836 }
837 }
838