如何跟踪 EC2 实例或弹性 IP 上的公共带宽使用情况?

如何跟踪 EC2 实例或弹性 IP 上的公共带宽使用情况?

我正在寻找一种方法来跟踪每个实例或每个弹性 IP 的公共带宽使用情况。亚马逊似乎不提供这些指标。您可以通过他们的报告机制获得总输入/输出带宽,但这包括私有网络带宽,并且是整个账户的带宽。您可以使用 cloudwatch 来收集更深入的指标,但它们也将公共和私有带宽归为一类。我们正在考虑自己开发,但您的服务器是使用一个接口构建的,并且任何弹性 IP 都通过 NAT 连接到该接口。由于所有内容都通过一个接口,因此所有内容都归为一类。

有人有什么建议吗?你遇到过类似的问题吗?那是一个 Linux 服务器环境,有一个界面,你必须从中确定公共带宽的使用情况。

答案1

一个选择是设置 iptables 来跟踪信息。

iptables -I INPUT -s 10.0.0.0/8
iptables -I INPUT ! -s 10.0.0.0/8
iptables -I OUTPUT -d 10.0.0.0/8
iptables -I OUTPUT ! -d 10.0.0.0/8

这将允许您查看互联网/本地详细信息。-s 10.0.0.0/8 将匹配所有亚马逊本地 IP 和!-s 10.0.0.0/8 匹配除亚马逊本地 IP(互联网)之外的所有内容。

iptables --list --verbose
Chain INPUT (policy ACCEPT 93 packets, 7602 bytes)
 pkts bytes target     prot opt in     out     source               destination
   85  6930            all  --  any    any    !ip-10-0-0-0.ec2.internal/8  anywhere
    8   672            all  --  any    any     ip-10-0-0-0.ec2.internal/8  anywhere

Chain OUTPUT (policy ACCEPT 78 packets, 9307 bytes)
 pkts bytes target     prot opt in     out     source               destination
   70  8635            all  --  any    any     anywhere            !ip-10-0-0-0.ec2.internal/8
    8   672            all  --  any    any     anywhere             ip-10-0-0-0.ec2.internal/8

如果希望在重启后仍保留 iptables 计数器,则需要设置一些设置来保存它们。您需要的命令是:

iptables-save -c > filename
iptables-restore -c < filename

某些 AMI 会自动保存。您需要修改其初始化脚本以使用 -c 或禁用它并将其替换为您自己的脚本。

如果您希望能够更轻松地读取数据,请设置一个 cron 作业来定期运行 iptables-save 命令,这样您就可以解析该文件。您还可以将该文件上传到 S3 或使用 scp 将其传输到中央统计框。iptables-save 和 iptables-restore 必须以 root 身份运行,并且需要 -c 来保存各个规则的统计信息。

相关内容