服务器上的 TCP 监控:比较 netstat 和 lsof?

服务器上的 TCP 监控:比较 netstat 和 lsof?

我正在监控服务器上的 TCP 堆栈,希望能够从总体上推断出服务器上应用程序的问题。

我的第一个想法是测量所有报告状态(LISTEN、ESTABLISHED、FIN_WAIT2、TIME_WAIT 等)的套接字数量并检测一些异常。

一位队友建议使用“lsof”这个更好的工具来查看 TCP 堆栈的状态。

serverfault 人群有什么偏好或经验提示吗?

答案1

我更喜欢 lsof,因为它的输出在所有运行的平台上都是一致的。不过,你可以从这两个程序中获得几乎相同的信息。我认为这取决于个人喜好。

答案2

我的第一个暗示是使用netstat -ptan它将为您提供您正在寻找的所有信息。可能是管道到sort和uniq。以下内容应该为您提供大量套接字状态。

netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c

答案3

查看统计信息并运行:

% sudo dstat --tcp

更好的是,如果您想分析输出,您可以使用--output将其写入CSV。

答案4

我认为这实际上更多的是一种个人偏好,因为通过一些调整(和正确的命令选项),您可以从中获得几乎相同的信息。

但是,如果您想要监控各种状态下的连接数,我不会使用单一的命令行工具。我会使用可以进行趋势分析的工具,以便您可以随时间查看。munin 之类的工具非常有用,因为它可以随时间绘制图表(同时向您显示其他可能有用的系统统计数据)。

如果您对盒子本身及其运行情况(出现问题时和没有问题时)有充分的了解,那么对应用程序进行故障排除总是更容易。

相关内容