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

我正在寻找一种方法来跟踪每个实例或每个弹性IP的公共带宽使用情况.亚马逊似乎没有提供这些指标.您可以通过其报告机制获得总输入/输出带宽,但这包括专用网络带宽,并且是帐户范围的.您可以使用cloudwatch收集更多深度指标,但它们也会将公共和私有带宽混为一谈.我们正在研究自己的应用程序,但是您的服务器是使用一个接口构建的,并且任何弹性IP都是对该接口进行NAT的.由于所有内容都通过一个界面,所以它们都被整合在一起.

有没有人有什么建议?你遇到过类似的问题吗?这是一个具有一个接口的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

注意:当您使用这些值时,您将获得私有和TOTAL:因此要公开,在将Total用于任何内容之前从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频率与您的神经节报告频率匹配(或以其他方式处理可能的不匹配).

希望这有助于某人.

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...