春有百花秋有月 - vnstat
type: channel
link: https://313390.xyz/index.php/tag/vnstat/
items: 使用vnstat监控vps的流量并用python脚本定期发送邮件提醒

使用vnstat监控vps的流量并用python脚本定期发送邮件提醒
type: item
date: 2024-09-09T17:41:00+08:00
description: 在使用 wgcf 创建的 WireGuard VPN 接口的情况下，你可能想要监控的是 VPS 流量而不仅仅是默认的物理网络接口（如 ens5）。WireGuard 通常会创建一个名为 wg0 或类似的虚拟网络接口。如果你想要监控通过这个 VPS 接口的流量，你需要确保 vnStat 也监控这个接口。 以下是在 Debian 系统上安装 vnStat 并监控 WireGuard 接口的步骤： 安装 vnStat： sudo apt-get up date sudo apt-get install vnstat 确认 WireGuard 接口名称： 安装 WireGuard 后，通过以下命令确认创建的 VPN 接口名称： wg 或者 ifconfig -a 通常，WireGuard 接口会被命名为 wg0、wg1 等。 初始化 vnStat 数据库： 使用 WireGuard 接口名称（例如 wg0）初始化 vnStat 数据库： sudo vnstat -u -i wg0 如果你还想要监控物理接口（例如 ens5），可以一次性监控多个接口： sudo vnstat -u -i ens5,wg0 设置 vnStat 开机启动： 使 vnStat 服务在系统启动时自动运行： sudo systemctl enable vnstat sudo systemctl start vnstat 查看流量统计： 使用以下命令查看流量统计信息： 实时流量：vnstat -l -i wg0 月流量统计：vnstat -m -i wg0 日流量统计：vnstat -d -i wg0 小时流量统计：vnstat -h -i wg0 通过这些步骤，你可以监控通过 WireGuard VPN 接口的流量以及物理网络接口的流量。确保你根据实际情况调整接口名称和命令。 crontab -l crontab -e 每月1号凌晨1点执行脚本： 0 1 1 * * /usr/local/bin/send_vnstat_report.sh 每1分钟执行一次脚本: * * * * * /usr/local/bin/send_vnstat_report.sh 每天晚上23点执行: 0 23 * * * /usr/local/bin/send_vnstat_report.sh 使用read_txt_to_mail.py执行定时任务，每月最后一天零点将本月使用的流量情况发送邮件： 在server上创建该任务的虚拟环镜vnstat_mail.env： cd /opt/services/pythonPrj/ python3 -m venv vnstat_mail.env source /opt/services/pythonPrj/vnstat_mail.env/bin/activate nohup python3.11 /opt/services/pythonPrj/read_txt_to_mail.py &[...]