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

Мгновенное считывание использования полосы пропускания сетевого адаптера

Я хочу создать сценарий, который работает на сервере Linux, этот сценарий должен считывать использование полосы пропускания сетевых адаптеров, установленных на других серверах, а затем сохранять их в memcached.

Поэтому мне нужна команда, которая считывает использование полосы пропускания других серверов в той же локальной сети, и команда должна быть как можно быстрее.

Спасибо,

Не существует волшебной команды, которая могла бы просто читать параметры других серверов. Если вы не настроили и не использовали SNMP. Обратите внимание, что вы не можете прочитать скорость, вы можете прочитать только общий переданный / полученный трафик.

mrtg может быть просто маршрутом, по которому вы хотите добраться туда. Он выполнит расчеты пропускной способности и сохранит их в RRD. Затем вы можете «мгновенно» запросить RRD.

Я бы создал сценарий оболочки, который использует SSH для запуска ifconfig удаленно и проанализируйте вывод, чтобы получить RX bytes: и TX bytes: значения (стандартный grep / sed / awk). Я бы передал эти значения в сценарий PHP / Python / Perl / Ruby (независимо от вашего предпочтения), который сохраняет их в memcached. В качестве альтернативы вы можете написать весь сценарий на этом языке. Я бы настроил SSH для использования открытых / закрытых ключей, чтобы не использовать пароли в ваших скриптах.

Другой вариант, как упомянул MikeyB, - это установка более полного приложения для мониторинга на ваших серверах, которое будет напрямую записывать использование полосы пропускания сети.

Установка munin-node на ваших серверах и настраивая munin Сервер предоставит вам графический вывод по интерфейсу для каждой машины. Разрешение данных фиксируется с интервалом в пять минут. Как уже отмечалось, данные для текущего разрешения полосы пропускания недоступны как таковые. Он должен быть получен счетчиками выборки с течением времени. Использование рассчитывается как (фактическая дельта) / (ставка * период).

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

РЕДАКТИРОВАТЬ: если вам нужны последние значения, вы можете написать сценарий, который извлечет последний образец из файла (ов) rrd. Это будет последний 5-минутный образец.

К сожалению, использование полосы пропускания напрямую не отслеживается. Если вам нужны относительно мгновенные показания, вам нужно будет запросить счетчики, подождать некоторое время и снова запросить счетчики. Затем вы можете рассчитать использование полосы пропускания. Вы могли бы использовать munin-node для запроса счетчиков. Команда для получения счетчиков: fetch ip_eth0. Данные конфигурации содержат базовые данные для полного использования. Чем короче период ожидания, тем выше будет ошибка в вашем образце.

Я использую две программы в сценариях bash длиной всего несколько строк, чтобы получить средние значения пропускной способности за 30 секунд в дополнение к 5-минутным средним значениям MRTG (что отлично подходит для исторического использования пропускной способности, а не для «живого» использования).

bwm-ng и ifstat оба легко написать скрипт. Первый позволяет вам выводить в HTML и CSV.

Около 12 лет назад я работал над проектом для интернет-провайдера и написал сценарий на Perl + SMNP, который каждую минуту считывал количество байтов, переданных / полученных с десятков серверов доступа, сохранял их в базе данных, а затем выполнял всевозможные статистические данные. расчеты по этим данным. В настоящее время для этого существует пакет RRDtool (его предшественник - MRTG). Но общая идея остается - вы можете прочитать количество полученных / переданных байтов практически с любого устройства через SNMP. Если вы читаете это через сетевую карту, могут быть доступны другие варианты, но в принципе, я думаю, тот же.