linux snmp counter summary

Network problems are divided into two categories, one is the problem in the link, such as routers and switches. The other is the kernel network problem. The kernel may drop packets for various reasons. If there is not an intuitive way to determine the cause of packet loss. The scalp is really numb. Fortunately, the linux kernel provides many counters. According to different scenarios, different operations count network data packets. In order to facilitate future use, the changes are put together. Easy to view. The following information comes from the node-exporter collector.

# HELP node_netstat_TcpExt_ArpFilter Statistic TcpExtArpFilter.
# 在arp_process()中处理ARP时,当这个请求不去arp_filter()处理时增加此指标
node_netstat_TcpExt_ArpFilter 0

# HELP node_netstat_TcpExt_BusyPollRxPackets Statistic TcpExtBusyPollRxPackets.
# 关键词:busy polling,开启busy polling,此参数会增加。
node_netstat_TcpExt_BusyPollRxPackets 0

# HELP node_netstat_TcpExt_DelayedACKLocked Statistic TcpExtDelayedACKLocked.
# 发送延迟ack时,用户已经锁定了sock而导致ack再次延迟的次数.
node_netstat_TcpExt_DelayedACKLocked 5737

# HELP node_netstat_TcpExt_DelayedACKLost Statistic TcpExtDelayedACKLost.
# 延迟ack丢失而进行从发的次数
node_netstat_TcpExt_DelayedACKLost 244257

# HELP node_netstat_TcpExt_DelayedACKs Statistic TcpExtDelayedACKs.
# 尝试发送 delayed ACK 的次数,包括未成功发送的次数
node_netstat_TcpExt_DelayedACKs 3.407473e+06

# HELP node_netstat_TcpExt_EmbryonicRsts Statistic TcpExtEmbryonicRsts.
# 在 SYN_RECV 状态收到带 RST/SYN 标记的包个数
node_netstat_TcpExt_EmbryonicRsts 145514

# HELP node_netstat_TcpExt_IPReversePathFilter Statistic TcpExtIPReversePathFilter.
# 设置rp_filter为1时,这是一个受限制的模式,如果一个数据包从一个接口接收,反向路径通过其他任何借口,这个数据包就会被丢弃,这个参数就会被增加。
node_netstat_TcpExt_IPReversePathFilter 108040

# HELP node_netstat_TcpExt_ListenDrops Statistic TcpExtListenDrops.
# skb指向的数据包由linuxmib_filter_key函数过滤,如果包被过滤则此指标加一。
# 包括 Accept 队列超限,创建新连接,继承端口失败等
# 相关函数 tcp_v4_syn_recv_sock() ,linuxmib_filter_key()
node_netstat_TcpExt_ListenDrops 25

# HELP node_netstat_TcpExt_ListenOverflows Statistic TcpExtListenOverflows.
# 三路握手最后一步完全之后,Accept queue队列超过上限时加1
# 相关函数 tcp_v4_syn_recv_sock()
node_netstat_TcpExt_ListenOverflows 0

# HELP node_netstat_TcpExt_LockDroppedIcmps Statistic TcpExtLockDroppedIcmps.
# icmp协议栈处理ICMP_DEST_UNREACH, ICMP_TIME_EXCEED, ICMP_QUENCH类型包时,当时sock正被用户程序锁定的包个数
node_netstat_TcpExt_LockDroppedIcmps 1

# HELP node_netstat_TcpExt_OfoPruned Statistic TcpExtOfoPruned.
# 在清理结构tcp_sock的乱序队列时增加,相关函数:tcp_prune_ofo_queue()
node_netstat_TcpExt_OfoPruned 0

# HELP node_netstat_TcpExt_OutOfWindowIcmps Statistic TcpExtOutOfWindowIcmps.
# icmp协议栈处理ICMP_DEST_UNREACH, ICMP_TIME_EXCEED, ICMP_QUENCH类型包时,是超出tcp窗口类型的包个数
node_netstat_TcpExt_OutOfWindowIcmps 536

# HELP node_netstat_TcpExt_PAWSActive Statistic TcpExtPAWSActive.
# 客户端在接收到syn+ack包但因时间截超出预取而被reset的连接数.
# 在发送 SYN 后,接收到 ACK,但 PAWS 检查失败的次数。
# 相关函数 tcp_rcv_synsent_state_process()
node_netstat_TcpExt_PAWSActive 0

# HELP node_netstat_TcpExt_PAWSEstab Statistic TcpExtPAWSEstab.
# 连接已经建立中接收到时间截项错误的数据包的个数.
#相关函数:
#tcp_validate_incoming()
#tcp_timewait_state_process()
#tcp_check_req()
node_netstat_TcpExt_PAWSEstab 11241

# HELP node_netstat_TcpExt_PFMemallocDrop Statistic TcpExtPFMemallocDrop.
# TYPE node_netstat_TcpExt_PFMemallocDrop untyped
node_netstat_TcpExt_PFMemallocDrop 0

# HELP node_netstat_TcpExt_PruneCalled Statistic TcpExtPruneCalled.
# 由于接收缓存空间不足而进行tcp内存回收的次数
# 相关函数 tcp_data_queue() -> tcp_try_rmem_schedule()
# 慢速路径中,如果不能将数据直接复制到用户态内存,需要加入到 sk_receive_queue 前,会检查 receiver side memory 是否允许,如果 rcv_buf 不足就可能 prune ofo queue。此时计数器加1。
node_netstat_TcpExt_PruneCalled 6296

# HELP node_netstat_TcpExt_RcvPruned Statistic TcpExtRcvPruned.
# 慢速路径中,如果不能将数据直接复制到用户态内存,需要加入到 sk_receive_queue 前,会检查 receiver side memory 是否允许,如果 rcv_buf 不足就可能 prune receive queue ,如果 prune 失败了,此计数器加1。
# 相关函数 tcp_data_queue() -> tcp_try_rmem_schedule()
node_netstat_TcpExt_RcvPruned 0

# SYN Cookies 一般不会被触发,只有在 tcp_max_syn_backlog 队列被占满时才会被触发, 因此 SyncookiesSent 和 SyncookiesRecv 一般应该是0。但是 SyncookiesFailed 值即使SYN Cookies 机制没有被触发,也很可能不为0。 这是因为一个处于 LISTEN 状态的 socket 收到一个不带 SYN 标记的数据包时,就会调 用 cookie_v4_check() 尝试验证 cookie 信息。 而如果验证失败,SyncookiesFailed 次数就加1。

# HELP node_netstat_TcpExt_SyncookiesFailed Statistic TcpExtSyncookiesFailed.
# 在CONFIG_SYN_COOKIES配置打开后接收ack而进行syn cookies检测计算失败的次数
node_netstat_TcpExt_SyncookiesFailed 48
# HELP node_netstat_TcpExt_SyncookiesRecv Statistic TcpExtSyncookiesRecv.
# TYPE node_netstat_TcpExt_SyncookiesRecv untyped
node_netstat_TcpExt_SyncookiesRecv 0
# HELP node_netstat_TcpExt_SyncookiesSent Statistic TcpExtSyncookiesSent.
# TYPE node_netstat_TcpExt_SyncookiesSent untyped
node_netstat_TcpExt_SyncookiesSent 0

# HELP node_netstat_TcpExt_TCPACKSkippedChallenge Statistic TcpExtTCPACKSkippedChallenge.
# 如果ack是质询ack,则跳过此ack
node_netstat_TcpExt_TCPACKSkippedChallenge 158

# HELP node_netstat_TcpExt_TCPACKSkippedFinWait2 Statistic TcpExtTCPACKSkippedFinWait2.
# 在Fin-Wait-2状态下将跳过ACK,原因可能是PAWS检查失败或接收到的序列号不在窗口范围内
node_netstat_TcpExt_TCPACKSkippedFinWait2 0

# HELP node_netstat_TcpExt_TCPACKSkippedPAWS Statistic TcpExtTCPACKSkippedPAWS.
# 由于PAWS(针对包装序列的保护)检查失败,因此跳过了ACK。如果PAWS检查在Syn-Recv,Fin-Wait-2或Time-Wait状态下失败,则跳过的ACK将被计为TcpExtTCPACKSkippedSynRecv,TcpExtTCPACKSkippedFinWait2或TcpExtTCPACKSkippedTimeWait。在所有其他状态下,跳过的ACK将计入TcpExtTCPACKSkippedPAWS。
node_netstat_TcpExt_TCPACKSkippedPAWS 4464

# HELP node_netstat_TcpExt_TCPACKSkippedSeq Statistic TcpExtTCPACKSkippedSeq.
# 序列号不在窗口中,并且时间戳通过了PAWS检查,并且TCP状态不是Syn-Recv,Fin-Wait-2和Time-Wait。
node_netstat_TcpExt_TCPACKSkippedSeq 1217

# HELP node_netstat_TcpExt_TCPACKSkippedSynRecv Statistic TcpExtTCPACKSkippedSynRecv.
# 在Syn-Recv状态下跳过的ACK,SYN-Recv状态意味着TCP栈收到了SYN并回复SYN+ACK,此时,TCP堆栈正在等待ACK。通常,TCP堆栈不需要再Syn-Recv状态下发送ACK。但在某些情况下,TCP堆栈需要发送一个ACK。比如:TCP堆栈重复接收相同的SYN数据包,接收的数据包未通过PAWS检查或接收的数据包序列号超出窗口。在这些情况下,TCP堆栈需要发送ACK。如果ACK发送频率高于tcp_invalid_ratelimit允许的值,则TCP堆栈将跳过发送ACK并增加此指标
node_netstat_TcpExt_TCPACKSkippedSynRecv 1

# HELP node_netstat_TcpExt_TCPACKSkippedTimeWait Statistic TcpExtTCPACKSkippedTimeWait.
# 在Time-Wait状态ACK被跳过,原因可能是PAWS检查失败或接收到的序列号不在窗口范围内。
node_netstat_TcpExt_TCPACKSkippedTimeWait 19

# HELP node_netstat_TcpExt_TCPAbortFailed Statistic TcpExtTCPAbortFailed.
# 内核TCP层发送RST。如果在此过程中发生内部错误,则此指标增加
node_netstat_TcpExt_TCPAbortFailed 0

# HELP node_netstat_TcpExt_TCPAbortOnClose Statistic TcpExtTCPAbortOnClose.
# 此计数器表示当应用程序想要关闭TCP连接时,应用程序在TCP层中有未读的数据。在这种情况下,内核会将RST发送到TCP连接的另一端。

node_netstat_TcpExt_TCPAbortOnClose 160427

# HELP node_netstat_TcpExt_TCPAbortOnData Statistic TcpExtTCPAbortOnData.
# 这意味着TCP层中有数据在传输中,但需要关闭连接。因此TCP层将RST发送到另一端,表明连接没有关闭很优美。增加此计数器的一种简单方法是使用SO_LINGER选项。
# 默认情况下,当应用程序关闭连接时,close函数将立即返回,内核将尝试异步发送正在进行的数据。
# 如果使用SO_LINGER选项,将l_onoff设置为1,并将l_linger设置为正数,则close函数不会立即返回,而是等待传输中的数据被另一方确认,最大等待时间为l_linger秒。
# 如果将l_onoff设置为1并将l_linger设置为0,则当应用程序关闭连接时,内核将立即发送RST并增加TcpExtTCPAbortOnData计数器。
node_netstat_TcpExt_TCPAbortOnData 920728

# HELP node_netstat_TcpExt_TCPAbortOnLinger Statistic TcpExtTCPAbortOnLinger.
# 当TCP连接进入FIN_WAIT_2状态时,内核无需等待另一端的fin数据包,而是可以发送RST并立即删除套接字。这不是Linux内核TCP堆栈的默认行为。通过配置TCP_LINGER2套接字选项,可以让内核遵循此行为。
node_netstat_TcpExt_TCPAbortOnLinger 0

# HELP node_netstat_TcpExt_TCPAbortOnMemory Statistic TcpExtTCPAbortOnMemory.
# 当应用程序关闭TCP连接时,内核仍然需要跟踪改连接,让它完成TCP断开连接过程。
# 一个应用程序调用套接字的close方法,内核将fin发送到连接的另一端,然后该应用程序不再与该套接字有任何关系,然后该应用程序不再与该套接字有任何关系,但是内核需要保留该套接字,该套接字称为孤立套接字,内核等待对方的回复,最终将进入TIME_WAIT状态。当内核没有足够的内存来保持孤立套接字,内核就会向另一端发送一个RST,并删除这个socket,在这种情况下,内核会将TcpExtTCPAbortOnMemory加1.
# 有两种情况会促发TcpExtTCPAbortOnMemory:
#    1.TCP协议使用的内存高于tcp_mem的第三个值。
     2.孤立套接字计数高于net.ipv4.tcp_max_orphans
node_netstat_TcpExt_TCPAbortOnMemory 0

# HELP node_netstat_TcpExt_TCPAbortOnTimeout Statistic TcpExtTCPAbortOnTimeout.
# 当任何TCP计时器到期时,此计数器将增加。这种情况下,内核不会发送RST,而只是放弃连接
node_netstat_TcpExt_TCPAbortOnTimeout 1450

# HELP node_netstat_TcpExt_TCPAckCompressed Statistic TcpExtTCPAckCompressed.
# TYPE node_netstat_TcpExt_TCPAckCompressed untyped
node_netstat_TcpExt_TCPAckCompressed 526411
# HELP node_netstat_TcpExt_TCPAutoCorking Statistic TcpExtTCPAutoCorking.
# 发送数据包时,TCP层将尝试将较小的数据包合并为较大的数据包。在这种情况下,每合并一个数据包此计数器加1.
node_netstat_TcpExt_TCPAutoCorking 1.7048466e+07

# HELP node_netstat_TcpExt_TCPBacklogCoalesce Statistic TcpExtTCPBacklogCoalesce.
# TYPE node_netstat_TcpExt_TCPBacklogCoalesce untyped
node_netstat_TcpExt_TCPBacklogCoalesce 4.847559e+06

# HELP node_netstat_TcpExt_TCPBacklogDrop Statistic TcpExtTCPBacklogDrop.
# 对于一个established状态的TCP在接收端有三个队列,当一个数据包达到时如果应用程序的read是阻塞状态,一般这个数据包会被发往前置队列。
# 如果它不能被放置在前置队列,并且这个socket没有被锁定,它将被放置在接收队列中。
# 如果这个socket是锁定的,它将被放置在积压队列中以进行后续处理。
# 因积压队列满而丢弃的数据包
node_netstat_TcpExt_TCPBacklogDrop 0

# HELP node_netstat_TcpExt_TCPChallengeACK Statistic TcpExtTCPChallengeACK.
# 发送的质询ack数量
node_netstat_TcpExt_TCPChallengeACK 589

# HELP node_netstat_TcpExt_TCPDSACKIgnoredNoUndo Statistic TcpExtTCPDSACKIgnoredNoUndo.
# 当DSACK块无效时,将更新这两个计数器之一。
# 将更新哪个计数器取决于TCP套接字的undo_marker标志。如果未设置undo_marker,则TCP堆栈不可能重新传输任何数据包,并且我们仍然收到无效的DSACK块,原因可能是该数据包在网络中间重复。在这种情况下,TcpExtTCPDSACKIgnoredNoUndo将被更新
# 如果设置了undo_marker,则将更新TcpExtTCPDSACKIgnoredOld。顾名思义,它可能是旧数据包
node_netstat_TcpExt_TCPDSACKIgnoredNoUndo 87256
# HELP node_netstat_TcpExt_TCPDSACKIgnoredOld Statistic TcpExtTCPDSACKIgnoredOld.
# TYPE node_netstat_TcpExt_TCPDSACKIgnoredOld untyped
node_netstat_TcpExt_TCPDSACKIgnoredOld 87

# HELP node_netstat_TcpExt_TCPDSACKOfoRecv Statistic TcpExtTCPDSACKOfoRecv.
# TCP堆栈接收DSACK,该DSACK表示接收到乱序的重复数据包
node_netstat_TcpExt_TCPDSACKOfoRecv 30

# HELP node_netstat_TcpExt_TCPDSACKOfoSent Statistic TcpExtTCPDSACKOfoSent.
# TCP堆栈接收到乱序的重复数据包,因此它将一个DSACK发送到发送方
node_netstat_TcpExt_TCPDSACKOfoSent 256

# HELP node_netstat_TcpExt_TCPDSACKOldSent Statistic TcpExtTCPDSACKOldSent.
# TCP堆栈接收到已被确认的重复数据包,因此它将一个DSACK发送到发送方
node_netstat_TcpExt_TCPDSACKOldSent 250106

# HELP node_netstat_TcpExt_TCPDSACKRecv Statistic TcpExtTCPDSACKRecv.
# TCP堆栈接收到一个DSACK,该DSACK表示接收到已确认的重复数据包
node_netstat_TcpExt_TCPDSACKRecv 135292

# HELP node_netstat_TcpExt_TCPDSACKUndo Statistic TcpExtTCPDSACKUndo.
# tcp_ack() -> tcp_fastretrans_alert() -> tcp_try_undo_dsack()
# Disorder状态下,undo完成(undo_retrans == 0)的次数。
node_netstat_TcpExt_TCPDSACKUndo 8116

# HELP node_netstat_TcpExt_TCPDeferAcceptDrop Statistic TcpExtTCPDeferAcceptDrop.
# TCP_DEFER_ACCEPT: 允许listener只有在连接上有数据才创建新的socket,以抵御syn-flood***
# 如果启动TCP_DEFER_ACCEPT,这个计数器统计了被丢掉了"Pure ACK"个数
node_netstat_TcpExt_TCPDeferAcceptDrop 0

# HELP node_netstat_TcpExt_TCPDelivered Statistic TcpExtTCPDelivered.
# TYPE node_netstat_TcpExt_TCPDelivered untyped
node_netstat_TcpExt_TCPDelivered 7.75737261e+08
# HELP node_netstat_TcpExt_TCPDeliveredCE Statistic TcpExtTCPDeliveredCE.
# TYPE node_netstat_TcpExt_TCPDeliveredCE untyped
node_netstat_TcpExt_TCPDeliveredCE 0

# HELP node_netstat_TcpExt_TCPFastOpenActive Statistic TcpExtTCPFastOpenActive.
# TCP快速打开是一项允许在三次握手完成之前进行数据传输的计数。
# 当TCP堆栈处于SYN-SENT状态时,接收到一个ACK数据包,并且ACK数据包确认SYN数据包中的数据时,tcp堆栈了解到另一端接受了TFO cookie,然后更新此计数器。
node_netstat_TcpExt_TCPFastOpenActive 0

# HELP node_netstat_TcpExt_TCPFastOpenActiveFail Statistic TcpExtTCPFastOpenActiveFail.
# 此计数器表示TCP堆栈启动了TCP快速打开,但是失败了。
# 此计数器在以下三种情况下更新:
# 1.另一端没有确认SYN包中的数据
# 2.具有TFO cookie的SYN数据包至少超时一次
# 3.三次握手之后,发生了 net.ipv4.tcp_retries次超时重传,因为在握手后一切middle-boxes制造了快速打开黑洞
node_netstat_TcpExt_TCPFastOpenActiveFail 0
# HELP node_netstat_TcpExt_TCPFastOpenBlackhole Statistic TcpExtTCPFastOpenBlackhole.
# TYPE node_netstat_TcpExt_TCPFastOpenBlackhole untyped
node_netstat_TcpExt_TCPFastOpenBlackhole 0
# HELP node_netstat_TcpExt_TCPFastOpenCookieReqd Statistic TcpExtTCPFastOpenCookieReqd.
# 此计数器指示客户端要请求TFO cookie的次数。
node_netstat_TcpExt_TCPFastOpenCookieReqd 0
# HELP node_netstat_TcpExt_TCPFastOpenListenOverflow Statistic TcpExtTCPFastOpenListenOverflow.
# TYPE node_netstat_TcpExt_TCPFastOpenListenOverflow untyped
node_netstat_TcpExt_TCPFastOpenListenOverflow 0
# HELP node_netstat_TcpExt_TCPFastOpenPassive Statistic TcpExtTCPFastOpenPassive.
# 次计数器表示TCP堆栈接受快速打开请求的次数。
node_netstat_TcpExt_TCPFastOpenPassive 0
# HELP node_netstat_TcpExt_TCPFastOpenPassiveAltKey Statistic TcpExtTCPFastOpenPassiveAltKey.
# TYPE node_netstat_TcpExt_TCPFastOpenPassiveAltKey untyped
node_netstat_TcpExt_TCPFastOpenPassiveAltKey 0
# HELP node_netstat_TcpExt_TCPFastOpenPassiveFail Statistic TcpExtTCPFastOpenPassiveFail.
# 此计数器指示TCP堆栈拒绝快速打开请求的次数。这是由TFO Cookie无效或套接字创建过程中TCP堆栈发现错误引起的。
node_netstat_TcpExt_TCPFastOpenPassiveFail 0

# HELP node_netstat_TcpExt_TCPFastRetrans Statistic TcpExtTCPFastRetrans.
# TCP堆栈希望重传一个数据包,并且拥塞控制状态不是“Loss”
node_netstat_TcpExt_TCPFastRetrans 14468

# HELP node_netstat_TcpExt_TCPFromZeroWindowAdv Statistic TcpExtTCPFromZeroWindowAdv.
# TCP接收创建被设置为从零开始的非零值
node_netstat_TcpExt_TCPFromZeroWindowAdv 23

# HELP node_netstat_TcpExt_TCPFullUndo Statistic TcpExtTCPFullUndo.
# tcp_ack() -> tcp_fastretrans_alert() -> tcp_try_undo_recovery()
# Recovery状态时,接收到全部确认(snd_una >= high_seq)后且已经undo完成(undo_retrans == 0)的次数
node_netstat_TcpExt_TCPFullUndo 960

# HELP node_netstat_TcpExt_TCPHPAcks Statistic TcpExtTCPHPAcks.
# 如果数据包设置了ACK标志并且没有数据,则它是一个纯ACK数据包,如果内核在快速路径中处理它,则TcpExtTCPHPAcks将增加1
# 如果内核在慢速路径中对其进行处理,则TcpExtTCPPureAcks将增加1
node_netstat_TcpExt_TCPHPAcks 2.33003928e+08

# HELP node_netstat_TcpExt_TCPHPHits Statistic TcpExtTCPHPHits.
# 如果TCP数据包中有数据(这意味着它不是纯ACK数据包),并且在快速路径中处理了该数据包,则TcpExtTCPHPHits将增加1
node_netstat_TcpExt_TCPHPHits 4.2522719e+08

# HELP node_netstat_TcpExt_TCPHystartDelayCwnd Statistic TcpExtTCPHystartDelayCwnd.
# 数据包延迟监测到的CWND之和,用TcpExtTCPHystartDelayDetect除以该值就是通过数据包延迟检测到的平均CWND
node_netstat_TcpExt_TCPHystartDelayCwnd 1602

# HELP node_netstat_TcpExt_TCPHystartDelayDetect Statistic TcpExtTCPHystartDelayDetect.
# 检测到包延迟阈值的次数
node_netstat_TcpExt_TCPHystartDelayDetect 30

# HELP node_netstat_TcpExt_TCPHystartTrainCwnd Statistic TcpExtTCPHystartTrainCwnd.
# ACK列长度检测到的CWND之和。用TcpExtTCPHystartTrainDetect除以该值即为通过ACK列长度检测到的平均CWND。
node_netstat_TcpExt_TCPHystartTrainCwnd 1.06494e+06

# HELP node_netstat_TcpExt_TCPHystartTrainDetect Statistic TcpExtTCPHystartTrainDetect.
#检测到ACK列长度阈值的次数
node_netstat_TcpExt_TCPHystartTrainDetect 58945

# HELP node_netstat_TcpExt_TCPKeepAlive Statistic TcpExtTCPKeepAlive.
# 此计数器表示发送了多少keepalive数据包。默认情况下,不会启用keepalive,用户空间程序可以通过设置SO_KEEPALIVE套接字选项来启动它
node_netstat_TcpExt_TCPKeepAlive 308400

# HELP node_netstat_TcpExt_TCPLossFailures Statistic TcpExtTCPLossFailures.
# 第一次进入重传状态,并且处于Loss状态下,计数器加一
node_netstat_TcpExt_TCPLossFailures 25

# HELP node_netstat_TcpExt_TCPLossProbeRecovery Statistic TcpExtTCPLossProbeRecovery.
# TLP检测到一个包丢失并恢复
node_netstat_TcpExt_TCPLossProbeRecovery 18389

# HELP node_netstat_TcpExt_TCPLossProbes Statistic TcpExtTCPLossProbes.
# 发送TLP探测报文
node_netstat_TcpExt_TCPLossProbes 267483

# HELP node_netstat_TcpExt_TCPLossUndo Statistic TcpExtTCPLossUndo.
# Loss状态时,接收到到全部确认(snd_una >= high_seq)后且已经undo完成(undo_retrans == 0)的次数。
node_netstat_TcpExt_TCPLossUndo 14132

# HELP node_netstat_TcpExt_TCPLostRetransmit Statistic TcpExtTCPLostRetransmit.
# SACK指出重传数据包再次丢失
node_netstat_TcpExt_TCPLostRetransmit 15827

# HELP node_netstat_TcpExt_TCPMD5Failure Statistic TcpExtTCPMD5Failure.
# TYPE node_netstat_TcpExt_TCPMD5Failure untyped
node_netstat_TcpExt_TCPMD5Failure 0
# HELP node_netstat_TcpExt_TCPMD5NotFound Statistic TcpExtTCPMD5NotFound.
# TYPE node_netstat_TcpExt_TCPMD5NotFound untyped
node_netstat_TcpExt_TCPMD5NotFound 0
# HELP node_netstat_TcpExt_TCPMD5Unexpected Statistic TcpExtTCPMD5Unexpected.
# TYPE node_netstat_TcpExt_TCPMD5Unexpected untyped
node_netstat_TcpExt_TCPMD5Unexpected 0
# HELP node_netstat_TcpExt_TCPMTUPFail Statistic TcpExtTCPMTUPFail.
# TYPE node_netstat_TcpExt_TCPMTUPFail untyped
node_netstat_TcpExt_TCPMTUPFail 0
# HELP node_netstat_TcpExt_TCPMTUPSuccess Statistic TcpExtTCPMTUPSuccess.
# TYPE node_netstat_TcpExt_TCPMTUPSuccess untyped
node_netstat_TcpExt_TCPMTUPSuccess 0
# HELP node_netstat_TcpExt_TCPMemoryPressures Statistic TcpExtTCPMemoryPressures.
# TYPE node_netstat_TcpExt_TCPMemoryPressures untyped
node_netstat_TcpExt_TCPMemoryPressures 0
# HELP node_netstat_TcpExt_TCPMemoryPressuresChrono Statistic TcpExtTCPMemoryPressuresChrono.
# TYPE node_netstat_TcpExt_TCPMemoryPressuresChrono untyped
node_netstat_TcpExt_TCPMemoryPressuresChrono 0
# HELP node_netstat_TcpExt_TCPMinTTLDrop Statistic TcpExtTCPMinTTLDrop.
# TYPE node_netstat_TcpExt_TCPMinTTLDrop untyped
node_netstat_TcpExt_TCPMinTTLDrop 0

# HELP node_netstat_TcpExt_TCPOFODrop Statistic TcpExtTCPOFODrop.
# TCP层收到乱序的数据包,但没有足够的内存,因此将其丢弃,此类数据包不会计入TcpExtTCPOFOQueue
node_netstat_TcpExt_TCPOFODrop 0

# HELP node_netstat_TcpExt_TCPOFOMerge Statistic TcpExtTCPOFOMerge.
# 接收到的乱序数据包与先前的数据包有重叠。覆盖部分将被删除。所有TcpExtTCPOFOMerge数据包也将计入TcpExtTCPOFOQueue
node_netstat_TcpExt_TCPOFOMerge 570

# HELP node_netstat_TcpExt_TCPOFOQueue Statistic TcpExtTCPOFOQueue.
# TCP层接收到乱序的数据包,并有足够的内存对其进行排队
node_netstat_TcpExt_TCPOFOQueue 1.422783e+06

# HELP node_netstat_TcpExt_TCPOrigDataSent Statistic TcpExtTCPOrigDataSent.
# 包含原始数据的传出数据包的数量(不包含重传,但包括SYN数据)。这个计数器不同与TcpOutSegs,因为TcpOutSegs还跟踪纯ACK。TcpExtTCPOrigDataSent为跟踪重传率更有用
node_netstat_TcpExt_TCPOrigDataSent 7.7402899e+08

# HELP node_netstat_TcpExt_TCPPartialUndo Statistic TcpExtTCPPartialUndo.
# TYPE node_netstat_TcpExt_TCPPartialUndo untyped
node_netstat_TcpExt_TCPPartialUndo 642

# HELP node_netstat_TcpExt_TCPPureAcks Statistic TcpExtTCPPureAcks.
# 如果数据包设置了ACK标志并且没有数据,则它是一个纯ACK数据包,如果内核在快速路径中处理它,则TcpExtTCPHPAcks将增加1
# 如果内核在慢速路径中对其进行处理,则TcpExtTCPPureAcks将增加1
node_netstat_TcpExt_TCPPureAcks 5.6241421e+07

# HELP node_netstat_TcpExt_TCPRcvCoalesce Statistic TcpExtTCPRcvCoalesce.
# 当TCP层接收到数据包,而应用程序不读取它们时,TCP层尝试合并它们。该计数器指示在这种情况下合并了多少个数据包
# 如果启用了GRO,则GRO将合并很多数据包,这些数据包不会计入TcpExtTCPRcvCoalesce
node_netstat_TcpExt_TCPRcvCoalesce 1.10968555e+08

# HELP node_netstat_TcpExt_TCPRcvCollapsed Statistic TcpExtTCPRcvCollapsed.
# 此计数器指示“collapse”期间,释放了多少个skb
node_netstat_TcpExt_TCPRcvCollapsed 0

# HELP node_netstat_TcpExt_TCPRcvQDrop Statistic TcpExtTCPRcvQDrop.
# 本来要在接收队列排队的数据包,但是因为达到socket的接收缓存限制而被丢弃。
node_netstat_TcpExt_TCPRcvQDrop 0

# HELP node_netstat_TcpExt_TCPRenoFailures Statistic TcpExtTCPRenoFailures.
# tcp_retransmit_timer(): 在Reorder状态下,或者sacked_out不为0时,发生RTO,并且没有启用SACK,加1
node_netstat_TcpExt_TCPRenoFailures 0
# HELP node_netstat_TcpExt_TCPRenoRecovery Statistic TcpExtTCPRenoRecovery.
# tcp_fastretrans_alert(): 当拥塞控制进入“恢复”状态时,不使用SACK的TCP,TcpExtTCPRenoRecovery次数加1,使用SACK的TCP,TcpExtTCPSackRecovery次数加一
node_netstat_TcpExt_TCPRenoRecovery 0
# HELP node_netstat_TcpExt_TCPRenoRecoveryFail Statistic TcpExtTCPRenoRecoveryFail.
# tcp_retransmit_timer(): 在Reovery状态下发生RTO,并且没有启用SACK,加1
node_netstat_TcpExt_TCPRenoRecoveryFail 0

# HELP node_netstat_TcpExt_TCPRenoReorder Statistic TcpExtTCPRenoReorder.
# 通过快速恢复检测到重新排序数据包。仅当禁用SACK时才使用。快速恢复算法通过重复的ACK编号检测记录。
# 例如:如果促发了重传,并且原始重传的数据包没有丢失,那只是乱序,接收方会多次去人一次书重传的数据包,另一个是原始乱序数据包的到达。因此,发送端将发现比预期多的ACk。并且发送端知道发送了乱序
node_netstat_TcpExt_TCPRenoReorder 0

# HELP node_netstat_TcpExt_TCPReqQFullDoCookies Statistic TcpExtTCPReqQFullDoCookies.
# TYPE node_netstat_TcpExt_TCPReqQFullDoCookies untyped
node_netstat_TcpExt_TCPReqQFullDoCookies 0
# HELP node_netstat_TcpExt_TCPReqQFullDrop Statistic TcpExtTCPReqQFullDrop.
# TYPE node_netstat_TcpExt_TCPReqQFullDrop untyped
node_netstat_TcpExt_TCPReqQFullDrop 0
# HELP node_netstat_TcpExt_TCPRetransFail Statistic TcpExtTCPRetransFail.
# TCP尝试将重传数据包传递到较低层,但是较低层返回错误

node_netstat_TcpExt_TCPRetransFail 0
# HELP node_netstat_TcpExt_TCPSACKDiscard Statistic TcpExtTCPSACKDiscard.
# 此计数器指示多少个SACK块无效。如果无效的SACK块是由ACK记录引起的,则TCP堆栈只会忽略它,不会更新此计数器。

node_netstat_TcpExt_TCPSACKDiscard 0
# HELP node_netstat_TcpExt_TCPSACKReneging Statistic TcpExtTCPSACKReneging.
# SACK确认了一个数据包,但接收者已丢弃此数据包,因此发送方需要重新发送此数据包,这种情况下,发送方将TcpExtTCPSACKReneging计数器加1。
# 接收者可能会丢弃SACK确认的数据包,尽管这很罕见,但TCP协议允许它。
# 发送者并不真正知道接收端那边发送了什么。发送方只是等待,知道RTO对此数据包到期为止,然后发送方认为此数据包已被接收方丢弃。
node_netstat_TcpExt_TCPSACKReneging 0

# HELP node_netstat_TcpExt_TCPSACKReorder Statistic TcpExtTCPSACKReorder.
# SACK检测到的重排序数据包。
# SACK有两种检测重新排序的方法:
#   1.发送方接收到DSACK,这意味着发送方多次发送同一个数据包。唯一的原因是发送方认为一个乱序的数据包丢失了,因此它将再次发送该数据包
#   2.假设数据包1,2,3,4,5是由发送方发送的,并且发送方已收到针对数据包2和5的SACK,现在发送方已收到针对数据包2和5的SACK,现在发送收到针对数据包4的SACK那么发送方不会重传这个数据包。发送方将知道4号数据包发生了乱序。
#   针对上面两种情况,内核的TCP堆栈将增加TcpExtTCPSACKReorder
node_netstat_TcpExt_TCPSACKReorder 141271

# HELP node_netstat_TcpExt_TCPSYNChallenge Statistic TcpExtTCPSYNChallenge.
# 响应SYN数据包而发送的质询ack的数量,更新此计数器后,TCP堆栈可能会发送质询ACK并更新TcpExtTCPChallengACK计数器,也可能会跳过发送质询并更新TcpExtTCPACKSkippedChallenge
node_netstat_TcpExt_TCPSYNChallenge 89

# HELP node_netstat_TcpExt_TCPSackFailures Statistic TcpExtTCPSackFailures.
# TYPE node_netstat_TcpExt_TCPSackFailures untyped
node_netstat_TcpExt_TCPSackFailures 6
# HELP node_netstat_TcpExt_TCPSackMerged Statistic TcpExtTCPSackMerged.
# 一个skb被合并
node_netstat_TcpExt_TCPSackMerged 22732

# HELP node_netstat_TcpExt_TCPSackRecovery Statistic TcpExtTCPSackRecovery.
# 当拥塞控制进入恢复状态时,如果使用了麻袋,则TcpExtTCPSackRecovery增加1;如果不使用麻袋,则TcpExtTCPRenoRecovery增加1。这两个计数器表示TCP堆栈开始重新传输丢失的数据包。
node_netstat_TcpExt_TCPSackRecovery 4862
# HELP node_netstat_TcpExt_TCPSackRecoveryFail Statistic TcpExtTCPSackRecoveryFail.
# TYPE node_netstat_TcpExt_TCPSackRecoveryFail untyped
node_netstat_TcpExt_TCPSackRecoveryFail 174
# HELP node_netstat_TcpExt_TCPSackShiftFallback Statistic TcpExtTCPSackShiftFallback.
# 一个skb应该被合并或迁移,但是由于某些原因,TCP堆栈不这样做
node_netstat_TcpExt_TCPSackShiftFallback 124355

# HELP node_netstat_TcpExt_TCPSackShifted Statistic TcpExtTCPSackShifted.
# 一个skb被转移
node_netstat_TcpExt_TCPSackShifted 35334

# HELP node_netstat_TcpExt_TCPSlowStartRetrans Statistic TcpExtTCPSlowStartRetrans.
# TCP堆栈希望重新传输数据包,并且拥塞控制状态为“丢失”
node_netstat_TcpExt_TCPSlowStartRetrans 547

# HELP node_netstat_TcpExt_TCPSpuriousRTOs Statistic TcpExtTCPSpuriousRTOs.
# F-RTO算法检测到虚假重传超时
node_netstat_TcpExt_TCPSpuriousRTOs 7120

# HELP node_netstat_TcpExt_TCPSpuriousRtxHostQueues Statistic TcpExtTCPSpuriousRtxHostQueues.
# 当TCP堆栈想要重发数据包,并且发现该数据包在网络中并未丢失,但尚未发送该数据包时,TCP堆栈将放弃重发并更新此计数器。

node_netstat_TcpExt_TCPSpuriousRtxHostQueues 65801
# HELP node_netstat_TcpExt_TCPSynRetrans Statistic TcpExtTCPSynRetrans.
# TCP堆栈重新传输SYN数据包

node_netstat_TcpExt_TCPSynRetrans 54382
# HELP node_netstat_TcpExt_TCPTSReorder Statistic TcpExtTCPTSReorder.
# 当洞被填满时,监测到重新排序的数据包。
# 假设发送方数据包1,2,3,4,5.接收顺序为1,2,4,5,3
# 当发送方收到数据包3的ACK(将填充该漏洞)时,两个条件将使TcpExtTCPTSReorder增加。
#   1.如果3号数据包还没有被重传
#   2.如果重传了数据包3,但数据包3的ACK时间戳早于重传时间戳
node_netstat_TcpExt_TCPTSReorder 1175

# HELP node_netstat_TcpExt_TCPTimeWaitOverflow Statistic TcpExtTCPTimeWaitOverflow.
# TYPE node_netstat_TcpExt_TCPTimeWaitOverflow untyped
node_netstat_TcpExt_TCPTimeWaitOverflow 0
# HELP node_netstat_TcpExt_TCPTimeouts Statistic TcpExtTCPTimeouts.
# TYPE node_netstat_TcpExt_TCPTimeouts untyped
node_netstat_TcpExt_TCPTimeouts 102398
# HELP node_netstat_TcpExt_TCPToZeroWindowAdv Statistic TcpExtTCPToZeroWindowAdv.
# TCP接收窗口从非零设置为零。
node_netstat_TcpExt_TCPToZeroWindowAdv 24

# HELP node_netstat_TcpExt_TCPWantZeroWindowAdv Statistic TcpExtTCPWantZeroWindowAdv.
# 根据当前的内存使用情况,TCP堆栈尝试将接收窗口设为零。但是接收窗口可能仍然为非零值。
# 例如,如果先前的窗口大小为10,并且TCP堆栈接收到3个字节,则及时由内存使用情况计算出的窗口大小为零,当前窗口大小也将为7
node_netstat_TcpExt_TCPWantZeroWindowAdv 2584

# HELP node_netstat_TcpExt_TCPWinProbe Statistic TcpExtTCPWinProbe.
# TYPE node_netstat_TcpExt_TCPWinProbe untyped
node_netstat_TcpExt_TCPWinProbe 859
# HELP node_netstat_TcpExt_TCPWqueueTooBig Statistic TcpExtTCPWqueueTooBig.
# TYPE node_netstat_TcpExt_TCPWqueueTooBig untyped
node_netstat_TcpExt_TCPWqueueTooBig 0
# HELP node_netstat_TcpExt_TCPZeroWindowDrop Statistic TcpExtTCPZeroWindowDrop.
# TYPE node_netstat_TcpExt_TCPZeroWindowDrop untyped
node_netstat_TcpExt_TCPZeroWindowDrop 0
# HELP node_netstat_TcpExt_TW Statistic TcpExtTW.
# TYPE node_netstat_TcpExt_TW untyped
node_netstat_TcpExt_TW 1.662352e+06
# HELP node_netstat_TcpExt_TWKilled Statistic TcpExtTWKilled.
# TYPE node_netstat_TcpExt_TWKilled untyped
node_netstat_TcpExt_TWKilled 0
# HELP node_netstat_TcpExt_TWRecycled Statistic TcpExtTWRecycled.
# TYPE node_netstat_TcpExt_TWRecycled untyped
node_netstat_TcpExt_TWRecycled 0

Reference: https://www.kernel.org/doc/html/latest/networking/snmp_counter.html

Guess you like

Origin blog.51cto.com/xiaofengfeng/2554528