Как отслеживать использование общедоступной полосы пропускания для экземпляров EC2 или Elastic IP? - PullRequest
6 голосов
/ 19 июля 2011

Я ищу способ отследить использование полосы пропускания общего пользования для каждого экземпляра или для каждого эластичного IP.Amazon, похоже, не предлагает эти показатели.Вы можете получить полную пропускную способность входа / выхода через их механизмы отчетности, но это включает пропускную способность частной сети и всю учетную запись.Вы можете использовать cloudwatch для сбора более глубоких метрик, но они также объединяют общую и частную пропускную способность.Мы стремимся развернуть свои собственные, но ваши серверы построены с одним интерфейсом, и любые эластичные IP-адреса привязаны к этому интерфейсу.Поскольку все проходит через один интерфейс, все это объединено.

У кого-нибудь есть предложения?Вы когда-нибудь сталкивались с подобной проблемой?Это серверная среда linux с одним интерфейсом, из которого вам приходилось определять использование публичной полосы пропускания.

Ответы [ 2 ]

10 голосов
/ 15 сентября 2012

Отвечая на старый вопрос в пользу Googlers.

Мы столкнулись с подобной проблемой и «решили» ее с помощью счетчиков 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 совпадает с вашей частотой сообщения ганглиев (или иным образом обрабатывает возможные несоответствия).

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 20 июля 2011

Я не думаю, что есть какой-либо простой способ сделать это, если Amazon не предоставит его, но может иметь журнал на каждой машине каждый раз, когда мы загружаем или загружаем что-то,

...