我正在研究一种虚拟服务器资费,该资费限制一个月的传出流量,如果超出流量则计费。
我想以某种方式自动跟踪传出流量,以便在接近限制时我可以自动停止服务。
在 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
把它放进去root
,crontab
你就会笑了。
答案2
格拉法纳+普罗米修斯。
在任何系统/服务器上设置这些并在客户端系统上安装 prometheus-node-exporter。然后,在 Grafana 中,您可以在达到某个阈值时编写自定义警报,例如流出的数据量。