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