我正在寻找一种方法来追踪每个实例或每个弹性IP基础上的公共带宽使用情况。 亚马逊似乎没有提供这些指标。 您可以通过其报告机制获得全部进出带宽,但这包括专用networking带宽,并且是广泛的帐户。 您可以使用cloudwatch收集更多深入的指标,但也会将公共和私有带宽聚合在一起。 我们正在研究滚动我们自己的,但你的服务器是build立了一个接口,并且任何弹性IP都NAT到该接口。 由于一切都通过一个接口,它们都集中在一起。
有没有人有什么build议? 你有没有遇到类似的问题? 这是一个Linux服务器环境,有一个接口,您必须确定公共带宽的使用情况。
回答一个老问题是为了Google员工的利益。
我们遇到了一个类似的问题,并使用iptables计数器“解决”了这个问题,这使得我们所有出站的私有流量都是10.0.0.0/8的IP地址,剩下的就是公共流量。 您还可以跟踪其他用途的输入; 当然,只有外出的公共交通收费。
所以,创建一些计数器:
iptables -A INPUT -s 0.0.0.0/0 --> Total incoming traffic iptables -A INPUT -s 10.0.0.0/8 --> private incoming traffic iptables -A OUTPUT -d 0.0.0.0/0 --> Total outgoing traffic iptables -A OUTPUT -d 10.0.0.0/8 --> private outgoing traffic
检查柜台:
iptables -nv -L INPUT --> counters about incoming traffic iptables -nv -L OUTPUT --> counters about outgoing traffic
注意:当你使用的值,你得到私人和总:所以公开,从总减去私人之前使用它的任何东西。
如果您不想报告累计带宽,也可以将计数器清零:
iptables --zero INPUT --> clear counter iptables --zero OUTPUT --> clear counter
下面是一个丑陋的bash脚本,它会将这些信息推送给Ganglia,假设您已经创建了计数器:
#!/bin/bash OUTPUT_PUBLIC=`sudo iptables -nvx -L OUTPUT | head -3 | tail -1 | tr -s [:blank:] |cut -d' ' -f3` OUTPUT_PRIVATE=`sudo iptables -nvx -L OUTPUT | tail -1 | tr -s [:blank:] |cut -d' ' -f3` let OUTPUT_PUBLIC=$OUTPUT_PUBLIC-$OUTPUT_PRIVATE sudo iptables --zero INPUT sudo iptables --zero OUTPUT gmetric -n "public_outbound_traffic" -v $OUTPUT_PUBLIC -t uint32 -u "bytes" gmetric -n "private_outbound_traffic" -v $OUTPUT_PRIVATE -t uint32 -u "bytes"
在cronjob中运行它,只要确保cronjob频率与你的神经节报告频率相匹配(或者处理可能的不匹配)。
希望这有助于某人。
我不认为有没有简单的方法来做到这一点,除非亚马逊提供它,但每次我们下载或上传的东西都可以在每台机器上登录,