统计 conntrack -S 中遗漏的新计数器

统计 conntrack -S 中遗漏的新计数器

从这个问题Linux 服务器上缺少统计信息 /proc/net/stat/nf_conntrack我意识到还有/proc/net/stat/nf_conntrack另一种选择conntrack -S
/proc/net/stat/nf_conntrack 中有NEW一个计数器,可以根据该计数器计算 CPS(每秒连接数)指标。但conntrack -S我没有看到这样的计数器。

如何NEW在没有 的情况下获取 conntrack 计数器/proc/net/stat/nf_conntrack?有没有办法从 中获取它conntrack -S

答案1

在文件系统方法中显示此类统计数据的内核部分/proc那里

  if (v == SEQ_START_TOKEN) {
      seq_puts(seq, "entries  searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error  expect_new expect_create expect_delete search_restart\n");
      return 0;
  }

  seq_printf(seq, "%08x  %08x %08x %08x %08x %08x %08x %08x "
          "%08x %08x %08x %08x %08x  %08x %08x %08x %08x\n",
         nr_conntracks,
         0,
         st->found,
         0,
         st->invalid,
         st->ignore,
         0,
         0,
         st->insert,
         st->insert_failed,
         st->drop,
         st->early_drop,
         st->error,

         st->expect_new,
         st->expect_create,
         st->expect_delete,
         st->search_restart
      );

可以看出,字段searched被其他字段替换在更高版本的内核中),,,new始终delete显示delete_list0:没有任何东西可以为这些字段提供信息。

正如我在之前的回答中所怀疑的那样(“或者可能已经过时”),无论是使用旧方法还是新方法,都没有关于此问题的统计数据。

这里是2016 年提交的删除了它们(可能适用于内核 4.9):

netfilter:conntrack:删除数据包热路径统计信息

这些计数器位于热路径中,并显示在 perf 中,对于“找到”和“搜索”尤其如此,它们会随着处理的每个数据包而增加。

类似信息

搜索=212030105
新=623431
找到=333613
删除=623327

现在似乎没有什么帮助:

  • 在繁忙的系统上,发现和搜索到的数据每隔几个小时就会溢出一次(这些是 32 位整数),在其他更繁忙的系统上,每隔几天就会溢出一次。

  • 对于调试,有更好的方法,例如 iptables 的 trace target,conntrack log sysctls。现在我们还有 perf 工具。

这将删除数据包路径统计计数器,除了在正常系统上预计为 0(或接近于 0)的计数器,例如“insert_failed”(发生竞争)或“invalid”(原始跟踪器拒绝)。

为 ctnetlink 情况保留插入状态。为 tuple-is-taken 检查保留找到状态,此时 NAT 必须确定是否需要选择不同的源地址。

签约人:Florian Westphal[电子邮件保护]
签字人:Pablo Neira Ayuso[电子邮件保护]

选择

您可以使用连接跟踪工具(在 Ubuntu 上打包那里) 可配置为记录事件以仅提供日志和统计信息(而不是其主要用途,用于高可用性集群中多个防火墙之间的透明故障转移)。Ubuntu 可能默认提供统计信息配置(或在文档中)。以下是conntrackd运行该服务的系统上的示例:

# conntrackd -s ct; sleep 5; conntrackd -s ct
[Fri Oct 15 08:34:08 2021] (pid=3443753) [warning] deprecated unix backlog configuration, ignoring.
cache stats:
current active connections:           65
connections created:              121807    failed:            0
connections updated:              116158    failed:            0
connections destroyed:            121742    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

[Fri Oct 15 08:34:13 2021] (pid=3443756) [warning] deprecated unix backlog configuration, ignoring.
cache stats:
current active connections:           68
connections created:              121811    failed:            0
connections updated:              116163    failed:            0
connections destroyed:            121743    failed:            0

traffic processed:
                   0 Bytes                         0 Pckts

该工具显示connections created:从 121807 到了 121811。我相信这相当于new从内核中删除的字段。

注意:traffic processed:当然是用于两个防火墙之间的防火墙到防火墙通信连接跟踪守护进程(因此这里始终为 0)。

相关内容