Linux 如何跟踪EC2实例或弹性IP’;s

Linux 如何跟踪EC2实例或弹性IP’;s,linux,amazon-ec2,amazon-web-services,amazon,Linux,Amazon Ec2,Amazon Web Services,Amazon,我正在寻找一种方法来跟踪每个实例或每个弹性IP的公共带宽使用情况。亚马逊似乎没有提供这些指标。您可以通过他们的报告机制获得总的输入/输出带宽,但这包括专用网络带宽,并且是全帐户的。您可以使用cloudwatch收集更深入的指标,但它们也可以将公共和私人带宽合并在一起。我们正在考虑推出我们自己的,但您的服务器是用一个接口构建的,并且任何弹性IP都不会使用该接口。因为所有的东西都通过一个接口,所以都集中在一起 有人有什么建议吗?你有没有遇到过类似的问题?这是一个linux服务器环境,只有一个界面,您

我正在寻找一种方法来跟踪每个实例或每个弹性IP的公共带宽使用情况。亚马逊似乎没有提供这些指标。您可以通过他们的报告机制获得总的输入/输出带宽,但这包括专用网络带宽,并且是全帐户的。您可以使用cloudwatch收集更深入的指标,但它们也可以将公共和私人带宽合并在一起。我们正在考虑推出我们自己的,但您的服务器是用一个接口构建的,并且任何弹性IP都不会使用该接口。因为所有的东西都通过一个接口,所以都集中在一起


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

我认为没有任何简单的方法可以做到这一点,除非亚马逊提供它,但每次我们下载或上传东西时,可以在每台机器上都有一个日志,

为了谷歌的利益回答一个老问题

我们遇到了一个类似的问题,并使用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 -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
注意:当您使用这些值时,您将得到private和TOTAL:因此,要获得public,请先从TOTAL中减去private,然后再将其用于任何用途

如果不想报告累计带宽,也可以将计数器归零:

   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频率与您的ganglia报告频率匹配(或者处理可能的不匹配)

希望这对别人有帮助