Я хочу создать сценарий, который работает на сервере 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. Если вы читаете это через сетевую карту, могут быть доступны другие варианты, но в принципе, я думаю, тот же.