监控每个IP地址的服务器网络输出带宽

监控每个IP地址的服务器网络输出带宽

我有一个静态文件服务服务器网络。我使用 nginx 来提供文件,并使用 munin 来监控网络流量。我想知道下载文件时发送到每个 IP 地址的服务器的输出带宽,以评估我所在国家/地区每个互联网服务提供商从我的服务器下载的带宽。服务器的平均输出带宽约为 700MB/s(9 台服务器,其中大多数绑定了 4 个 1Gbits/s 端口)。我该怎么做?

答案1

首先想到的方法是让您的 Web 服务器只记录它们处理的请求,并使用日志解析器生成使用情况统计信息。组合日志格式是日志解析 Web 分析软件普遍支持的标准。

access_log /path/to/log combined; 

如果您的 Web 服务器作为集群运行,而不是让每台服务器维护自己的日志文件(您需要合并这些文件才能获得聚合结果),则可以使用 syslog 协议让所有节点将其日志条目传输到中央日志记录主机并在那里生成使用情况统计信息。

access_log syslog:server=address combined;

相关设置记录在nginx 手册

这个老问题提到了一些网络分析软件,维基百科

答案2

大多数存储库中都有一个名为的工具iftop。它将显示有关每台服务器带宽的图表和数据。你可以这样使用它:

# iftop -nNPi eno1 -f "port 443"
  • -n将禁用 IP 的名称解析
  • -N将禁用端口转换为服务
  • -P将显示流量使用的端口
  • -i将选择一个接口来监听
  • -f将定义一个bpf表达式来过滤流量,我将其定义为端口 443,这是基本建议

您没有指定您想要/可以监听的确切位置,或者哪些流量流向哪里,也没有指定您想要的确切流量,因此此答案不会尝试涵盖它。另外请记住,如果您使用零拷贝或其他“奇特”配置,它可能无法工作。

相关内容