有没有办法监控我的服务器传输了多少字节?

Is there a way of monitoring how many bytes has my server tranferred?

所以最近我看到了这个网站:https://0day.rocks/ 并且有一段文字说这个服务器是一个 Tor 节点。但在那之下是服务器自上次重置以来传输的字节数(太字节)。我已经在其他网站上看到过类似的东西,但我真的很想知道如何在 php 中执行此操作(如果可能的话)。只是说我不是要你为我编写代码,我只是希望有人告诉我要阅读什么或从哪里开始等等。提前致谢。

正如评论中所讨论的那样,您并不是在严格地寻找 php 解决方案,因此我建议在网络服务器级别记录传入和传出流量。

例如Apache就已经具备了这样的能力。只需启用 mod_status ( https://httpd.apache.org/docs/2.4/mod/mod_status.html ) 即可提供以下信息:

  • 每个工作人员的状态 [...] 以及工作人员服务的总字节数
  • 总访问次数和服务字节数
  • 给出每秒请求数、每秒处理的字节数和每个请求的平均字节数的平均值

似乎也可以获取从 apaches 访问日志发送的字节。看到这个:https://serverfault.com/questions/14613/how-can-i-see-how-much-bandwidth-each-apache-virtual-host-is-using

NGINX、Tomcat 等其他网络服务器应该具有类似的功能。

在 Linux 上,查询接口统计数据很容易,它将计算所有传输的字节数,而不仅仅是 Tor 或 Apache 的字节数。

从 0day 开始的统计数据是直接从 Tor 控制器收集的,它跟踪它自己的流量使用情况。

如果您的public接口是eth0,您可以从以下文件获取传输和接收的字节:

/sys/class/net/eth0/statistics/tx_bytes
/sys/class/net/eth0/statistics/rx_bytes

使用 systemd 可预测的网络接口命名,接口可能看起来更像 enp3s0f0

或者您可以从 /proc/net/dev 中解析信息,但前两个更容易。

在 PHP 中,任何用户都可以阅读那些使用 file_get_contents to display on a page. You can use an answer like this 的内容,如果需要,可以将字节转换为另一个单位。

有关网络统计的内核文档可以在这里找到:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net-statistics