我正在寻找一种方法来追踪每个实例或每个弹性IP基础上的公共带宽使用情况。 亚马逊似乎没有提供这些指标。 您可以通过报告机制获得全部进出带宽,但这包括专用networking带宽,并且是广泛的帐户。 您可以使用cloudwatch收集更多深入的指标,但也会将公共和私有带宽聚合在一起。 我们正在研究滚动我们自己的,但你的服务器是build立了一个接口,并且任何弹性IP都NAT到该接口。 由于一切都通过一个接口,它们都集中在一起。
有没有人有什么build议? 你有没有遇到类似的问题? 这是一个Linux服务器环境,有一个接口,您必须确定公共带宽的使用情况。
一个选项是设置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将匹配所有亚马逊本地ips和! – 10.0.0.0/8匹配一切,但亚马逊本地ips(互联网)。
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会自动保存。 您需要修改其init脚本以使用-c或禁用它,并用您自己的代替它。
如果您希望能够更轻松地读取数据,请设置一个cron作业来定期运行iptables-save命令,以便您可以parsing该文件。 您也可以将该file upload到S3或使用scp将其传输到中央统计信息框。 iptables-save和iptables-restore必须以root身份运行,而-c则需要保存各个规则的统计信息。