linux snmp计数器汇总

网络问题分为两类,一类是链路中的问题,路由器,交换机之类的。另一类就是内核网络问题。内核可能因为各种原因丢掉数据包。如果没有一个直观的方式判断丢包的原因。实在是头皮发麻。幸好linux 内核提供了不少计数器。根据不同场景,不同的操作对网络数据包进行计数。为了方便以后使用变汇总在一起。方便查看。以下信息来自node-exporter采集器。

# 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

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

猜你喜欢

转载自blog.51cto.com/xiaofengfeng/2554528