Назад | Перейти на главную страницу

Контролировать пропускную способность с течением времени, исключая определенные сети?

Я хотел бы отслеживать использование полосы пропускания моих серверов Linux, но есть одна загвоздка: трафик между моими двумя серверами не засчитывается против меня, только трафик в Интернет в целом. Однако мои серверы имеют только один сетевой интерфейс, и почти все, что я пробовал, измеряется отдельно для каждого интерфейса. Кто-нибудь знает об инструменте, который может генерировать графики пропускной способности, не считая при этом трафик в / из определенных диапазонов IP?

Бонусные баллы, если он генерирует файлы RRD (я уже могу легко их построить) и двойные бонусные баллы, если он работает с collectd (либо конфигурация стандартного collectd, либо плагин к нему).

Предполагая, что у вас нет доступа к восходящему маршрутизатору или коммутатору, который предоставляет такое же представление этих данных, которое видит ваш интернет-провайдер, вы можете использовать учет iptables для каждого хоста для подсчета байтов / пакетов, предназначенных для чего-либо, кроме вашего другого IP-адреса (или IP-адреса). range), а затем вставьте это в RRD самостоятельно.

РЕДАКТИРОВАТЬ

Например, вы можете использовать некоторые правила, подобные этим, в iptables для создания учета:

iptables -N ACCOUNT_IN
iptables -N ACCOUNT_OUT
iptables -I INPUT -j ACCOUNT_IN
iptables -I OUTPUT -j ACCOUNT_OUT

iptables -I ACCOUNT_IN -s ! 10.66.1.0/24
iptables -I ACCOUNT_OUT -d ! 10.66.1.0/24

Это создает две новые цепочки: ACCOUNT_IN и ACCOUNT_OUT. Затем я вставляю переходы к ним в верхней части цепочек INPUT и OUTPUT. Внутри каждой цепочки я добавляю правило без цели перехода для сопоставления на удаленных адресах - для ввода все, что не имеет адреса на моем локальном / 24 в качестве источника; для вывода все, что не имеет адреса на моем локальном / 24 в качестве пункта назначения. Затем пакеты возвращаются из этой цепочки обратно в ваши обычные цепочки INPUT / OUTPUT, так как нет правила перехода.

Чтобы проверить данные бухгалтерского учета:

# iptables -L ACCOUNT_IN -n -v
Chain ACCOUNT_IN (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    5  2138            all  --  *      *      !10.66.1.0/24         0.0.0.0/0 

# iptables -L ACCOUNT_OUT -n -v 
Chain ACCOUNT_OUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   15  2846            all  --  *      *       0.0.0.0/0           !10.66.1.0/24    

Оттуда вы можете вытащить эти счетчики пакетов / байтов и перейти к rrdupdate (я предполагаю, что вы в порядке с передачей данных в rrd, как вы сказали, что вы в порядке с извлечением данных из rrd. Если нет, этот вопрос, вероятно, уже задавался здесь).

Если вы хотите обнулять счетчики каждый раз, когда вы их читаете, передайте команду -Z (нулевой счетчик), чтобы обнулить счетчики байтов.

Если какой-либо из ваших хостов является маршрутизатором, вам также нужно будет вести учет в цепочке FORWARD - вы, вероятно, можете просто вставить переход к ACCOUNT_IN и ACCOUNT_OUT с вершины цепочки FORWARD, и все будет правильно, но я не думал об этом достаточно, чтобы быть на 100% уверенным, что это сработает

Ты можешь использовать пропускная способность. Он позволяет пропускать фильтр pcap, поэтому вы можете исключить трафик между вашими серверами.

Вы должны иметь возможность сделать это через IPTables. Однако я действительно сомневаюсь, что вы найдете какое-либо заранее написанное программное обеспечение, которое может это сделать. http://wiki.openvz.org/Traffic_accounting_with_iptables было бы хорошим началом для этого через IPTables.

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

Похоже, ты хочешь чего-то вроде ntop. Есть много других инструментов, но это, вероятно, самый быстрый способ получить то, что вы хотите. Он может собирать данные по сети и сообщать об этом или использовать другие входные данные, такие как Netflow и sFlow.

Я бы сделал это с помощью переключателя, поддерживающего Netflow. Инструменты Netflow не всегда бесплатны, но они должны делать то, что вы ищете.