限制每月传出流量

限制每月传出流量

我正在研究一种虚拟服务器资费,该资费限制一个月的传出流量,如果超出流量则计费。

我想以某种方式自动跟踪传出流量,以便在接近限制时我可以自动停止服务。

在 Linux 中我可以使用什么工具来实现此目的?

谢谢!

答案1

好吧,不知道限制是什么,也不知道您编写脚本的能力如何,这里有一个建议。

安装vnstat- 在 Ubuntu 上,将自动启动附带的恶魔进程,该进程将立即开始监视网络(仅用于流量统计,而不是内容窥探)。

您可以交互式地查看它,如下所示:

vnstat
Database updated: 2023-09-30 09:40:00

   enp0s31f6 since 2023-09-30

          rx:  7.85 GiB      tx:  93.23 MiB      total:  7.94 GiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       2023-09      7.85 GiB |   93.23 MiB |    7.94 GiB |   26.88 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated      8.02 GiB |   93.93 MiB |    8.11 GiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today      7.85 GiB |   93.23 MiB |    7.94 GiB |    1.96 Mbit/s
     ------------------------+-------------+-------------+---------------
     estimated     19.48 GiB |  231.46 MiB |   19.71 GiB |

您还可以使用命令行开关仅提取传输的数据,例如awk。在下面的示例中,我们查看传输的 111 MB 数据。

vnstat --oneline b |awk -F';' '{print $10/1024/1024}'
111.726

您可以将其粘贴到从 cron 运行的 shell 脚本中,例如每 5 分钟运行一次,并将传输量与阈值进行比较,然后让脚本停止服务。假设您一个月内允许传出 5 G 的流量。

#!/bin/bash
[  $(/usr/bin/vnstat --oneline b |/usr/bin/awk -F';' '{printf "%d", $10/1024/1024}') -gt 5000 ] && /usr/bin/systemctl stop service

把它放进去rootcrontab你就会笑了。

答案2

格拉法纳+普罗米修斯。

在任何系统/服务器上设置这些并在客户端系统上安装 prometheus-node-exporter。然后,在 Grafana 中,您可以在达到某个阈值时编写自定义警报,例如流出的数据量。

相关内容