如何在node.js中获取Rx/Tx字节(/packets)等网络静态信息

How to get network statics like Rx/Tx bytes(/packets) in node.js

本文关键字:packets 网络 信息 静态 字节 Tx js node 获取 Rx      更新时间:2023-09-26

我正在node.js中开发一个视频流应用程序。由于它可能会消耗大量的网络带宽,我想知道如何在node.js中跟踪应用程序以及整个系统本身的带宽使用情况?

所需输出示例:

此应用程序:100 kb Rx 18 mb Tx

总计:200 kb Rx 20 mb Tx

拥抱自己,因为这并不容易。

我发现的唯一一个nodejs模块应该是跟踪网络流量的,它是网络调试器。不过,我不相信你会在那个项目中找到你的问题的答案。

网络监控通常是高度特定于操作系统的:

  • Windows:唯一的选项是WinPCap
  • MacOS:净值。很少有linux网络实用程序端口也可以工作
  • Linux:你是个幸运的人。最近,nethogs已经成为最受欢迎的网络顶级实用程序,大多数分销商都可以通过其软件包管理器获得它。请看一下这篇比较文章,了解更多关于linux网络工具的信息

是的,你是对的,它不是nodejs库,但正如你所猜测的那样,没有。部分原因可能是系统管理员总是喜欢基于控制台的一件事工具来监控他们的服务器,因此在节点中实现网络监控库的需求非常小。


实现所需:

  1. 选择一个可用的网络工具
  2. 玩一玩,看看它是否是你想要的(它们不同,所以一定要少试)
  3. 如果您喜欢它提供的信息,请学习如何将其输出为管道友好格式
  4. 现在,您需要node.js服务器以管道模式启动该工具并捕获输出
  5. 完成

有一篇有趣的文章非常详细地介绍了如何使用现有的基于控制台的工具在node.js中编写系统监视器,这可能会有很大的帮助。您可能必须选择其中一个基于控制台的工具,学习如何以管道友好模式启动它(这样输出就可以通过管道传输到文件或流中,直接进入node.js服务器)


或者,你可以重新发明轮子,在node.js中制作自己的网络监控工具,但我担心它最终会变成一半JavaScript,一半特定于操作系统的C或Objective-C代码。

还要注意,您需要管理员权限(windows上的sudo或管理员用户)来监控网络。这意味着您可能必须使用提升的权限运行node.js。这是一个需要牢记的额外风险。