微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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频率与您的神经节报告频率匹配(或以其他方式处理可能的不匹配).

希望这有助于某人.

原文地址:https://www.jb51.cc/linux/393038.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐