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

前端之家收集整理的这篇文章主要介绍了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频率与您的神经节报告频率匹配(或以其他方式处理可能的不匹配).

希望这有助于某人.

猜你在找的Linux相关文章