Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 52
Текст из файла (страница 52)
Значения, превышающие MaxBytes, будут игнорироваться.Параметр Title определяет заголовок страницы, которая будет содержатьинформацию о цели, а параметр PageTop — текст, который будет помещен вверхней части этой страницы.Числа 1 и 2 перед именем сообщества — это номера интерфейсов вовнутренней таблице SNMP-устройства. После имени (или IP-адреса)272Конфигурирование сервераSNMP-устройства можно указать порт SNMP.
По умолчанию используетсястандартный порт 161:communitygrouter:161В качестве цели может быть использована программа, которая выводитна стандартный вывод четыре строки:1. Количество принятых байтов.2. Количество отправленных байтов.3. Время работы объекта после включения.4. Имя объекта.Программу нужно записать в обратных кавычках, например:Target[гЗ]: Vusr/bin/program'Очень полезными параметрами являются Refresh и Interval. Первыйопределяет частоту обновления страниц с отчетами в браузере, а второй предполагаемый интервал запуска программы MRTG. По умолчанию значения обоих параметров равно 300 секундам.Опции perminute и perhour позволяют измерять трафик в единицах заминуту и час соответственно. Опция noinfo подавляет вывод информации обустройстве и времени его работы.
Пример:O p t i o n s [ _ ] : bits, perminute, noinfoЯ думаю, что теории вполне достаточно, тем более, что вместе с MRTGпоставляется отличная документация, которая доступна по адресу http://localhost/mrtg/. Теперь перейдем к практической настройке. Скорее всего, увас не будет SNMP-маршрутизатора, поскольку в небольших сетях маршрутизатором является сама Linux-машина, а выделение средств на приобретение аппаратного маршрутизатора в ближайшие несколько лет не предвидится. Да и намного интереснее считать трафик своего компьютера, а некакого-то маршрутизатора, которого вы даже и не видели и который установлен где-то на третьем этаже.Для работы MRTG необходимо установить и настроить сервер snmpd.Однако в большинстве случаев этого делать не нужно: корректная настройкаданного сервера — это довольно нетривиальная задача, а лишняя «дыра» всистеме безопасности нам не нужна.
К тому же настройка сервера snmpdоправдывает себя, если вы хотите считать трафик этого компьютера нелокальной программой mrtg, а удаленной, которая запущена на другомкомпьютере и получает данные от нашего сервера по протоколу SNMP.Я предлагаю довольно простое решение, настройка которого не займет увас много времени.
Основывается оно вот на чем: как я уже отмечал, вместоцели можно указать программу, которая бы выводила информацию на стандартный вывод в таком формате:Строка 1Строка 2Строка 3Строка 4» Строка 1 — это входящие байты (принятые).» Строка 2 — исходящие байты (отправленные).213Конфигурирование сервера» Строка 3 — время, на протяжении которого работает устройство.» Строка 4 — имя цели.Где же взять эту програму? Написать самому! Сейчас я подробно опишу,как это сделать. Настоятельно не рекомендую вам сразу взять и использоватьготовый листинг: вы не поймете самого главного — как именно происходитподсчет трафика.
В результате ваша система подсчета трафика будет работать втаком режиме: программа будет считать трафик, a MRTG — строить графики.Определим, откуда будем брать информацию о трафике. Операционнаясистема Linux сама выполняет подсчет трафика. Вся информация, котораявам необходима, содержится в файле /proc/net/dev. Выполните команду:cat /proc/net/devРезультат выполнения этой команды вы уже видели в этой главе (рис. 8.7).Более новые ядра предоставляют больше информации о работе сетевых устройств, поэтому выполните данную команду для того, чтобы увидеть, какуюинформацию о сетевых,устройствах предоставляет ваша система.
Обычнопервое информационное поле файла /proc/net/dev — это количество принятых байтов, а девятое — количество отправленных байтов.Разрабатываемая программа должна найти нужный интерфейс и возвратить количество принятых и переданных байтов. Затем программа возвращает время, на протяжении которого работает устройство. Это время достаточно легко вычисляется с помощью программы uptime.l:51pm up 2:10, 4 users, load average: 0 . 0 2 , 0 . 0 4 , 0 . 0 0Программа uptime, кроме всякой другой информации, возвращает время,на протяжении которого система работает, то есть с момента загрузкиоперационной системы.
В вышеприведенном примере видно, что машинанепрерывно работала 2 часа и 10 минут. 2 часа и 10 минут — это значение,которое разрабатываемая программа должна вывести в третьей строке. Выможете смело использовать это время, потому что в основном интерфейсысервера «подымаются» при загрузке системы и разница между uptime системы и uptime интерфейса составит всего несколько секунд.Четвертая строка — это имя цели, то есть имя интерфейса, трафиккоторого нам нужно подсчитать. Надеюсь, что алгоритм программы ясен,осталось реализовать все это программно.Создайте файл count (см.
листинг 8.10) и поместите его в каталог/ u s r / b i n (не забудьте сделать его исполнимым!).Листинг 8.10. Программа countI!/bin/bash/bin/grep "$1" /proc/net/dev | /bin/awk -F ":" '{ print $2 }' |/bin/awk M print $1 "\n" $9 }'ЛUPTIME=Vusr/bin/uptime | /bin/awk -F " " '{ print $3 }'echo $UPTIMEecho $1Использовать программу нужно так:count интерфейсНапример, count ethO.214Конфигурирование сервераЗапустив программу, вы должны увидеть примерно следующие строки:273841012359602:57,ethOВо второй строке программы происходит следующее: находится нужная намзапись с именем интерфейса, который мы указали в первом параметре привызове программы ($1).
Затем интерпретатор awk выводит значения первого идевятого полей, содержащие количество принятых и переданных байтов.В третьей строке программы вычисляется время uptime.Последние две строки выводят время uptime и название интерфейса.Предположим, что у вас имеется два интерфейса: локальный ethO ивыделенная линия (рррО), идущая к провайдеру. При этом конфигурациясети несколько упростилась (см. рис. 8.10).Теперь узел MRTG сам является маршрутизатором и самостоятельно считает свой трафик.Файл конфигурации mrtg будетвыглядеть так, как это показановРис. 8.10.
Конфигурация сети (2)листинге 8.11.Листинг8.11.Файл /var/WHW/html/mrtg/mrtg.cfgWorkDir: /var/www/html/mrtg/ipcOptions[_]: bits,growrightTarget[ethO]: Vusr/bin/count ethO'T i t l e [ e t h O ] : Local EthernetMaxBytes[ethO]: 99999999PageToptethO]: Status of /dev/ethOT a r g e t [ p p p O ] : V u s r / b i n / c o u n t рррО хT i t l e [ p p p O ] : Leased lineMaxBytes[pppO]: 99999999PageTop[pppO]: Status of /dev/pppOИз листинга 8.11 видно, что у вас имеются две цели, для каждой из нихзаданы свои параметры.
Нужно учитывать, что имя интерфейса, которое выпередаете программе count, должно совпадать с названием цели (ethO и рррО).В качестве рабочего каталога я использовал /var/www/html/mrtg/ipc.От использования каталога / v a r / w w w / h t m l / m r t g / я отказался, поскольку внем находится документация по mrtg.Параметры MaxBytes, Title и PageTop являются обязательными.
При ихотсутствии mrtg попросит вас исправить ошибки в конфигурационном файле.Теперь можете запустить программу mrtg командой:mrtg / v a r / w w w / h t m l / m r t g / m r t g . c f g215Конфигурирование сервераВ каталоге / v a r / w w w / h t m l / m r t g / i p c должны появиться первые файлыотчеты.
Имя файла-отчета будет совпадать с именем цели. Первые двазапуска mrtg будет «ругаться» на отсутствие предыдущих данных, но потомвсе будет работать как надо.Если третий запуск прошел гладко, то есть без сообщений об ошибках,можно добавить mrtg в расписание демона crond. Для этого добавьте в файл/etc/crontab одну из следующих строк (какая кому нравится):5 , 1 0 , 1 5 , 2 0 , 2 5 , 3 0 , 3 5 , 4 0 , 4 5 , 5 0 , 5 5 , 5 9 * * * * root / u s r / b i n / m r t g /var/www/html/mrtg/mrtg.cfgили0 - 5 9 / 5 * * * * root / u s r / b i n / m r t g / v a r / w w w / h t m l / m r t g / m r t g . c f gПосле этого желательно перезапустить демон crond:/ e t c / i n i t . d / c r o n d restartПрограмму mrtg можно запускать в режиме демона (не через crond).
Дляэтого установите значение параметра RunAsDaemon равное yes. За болееподробной информацией обратитесь к документации по mrtg.Теперь самое время проверить, как работает mrtg. Запустите браузер ивведите адрес http://localhost/mrtg/ipc/eth0.html. В результате вы должныувидеть информацию о загрузке канала. Первые графики вы увидите примерно через час послепервого запуска£траннца: Пвавка..Церейти j Закладки Инструменты Цастройки Дкно Помощьmrtg, в зависимостиот настроек периода] htlp:«localhosl.localdomaWmrtg/ipcft1 .hlmlзапуска mrtg.::Statistics for pppOThe statistics were last updated Thursday, 4 July 2002 at 15:35,at which time 'pppO' had been up for 3:53,.'Daily' Graph (5 Minute Average)-...S зо.о kгоkfc -°»10.0 kЩЩ8 Щ10 1214Щ16 ^18 ^20 22 02468 10 12 14Max h 39.3 kWs (0.0%) Average b 5752.0 b/s (0.0%) Current !:i 15.1 kbft (0.0%)Max Oui:39.3kWs(0.0%) Average Ou!:5976.0b/s(0.0%) Current OutilS.l kWs(0.0%)'Weekly' Graph (30 Minute Average)' IIU24.0 k18.0 k12.0 k •6.0 k •0.0 kЗагрузк.<з завершена216Рис.
8.11. Статистикадля устройства pppOКонфигурирование сервера8.6. Сетевая файловая система (NFS)Сетевая файловая система позволяет монтировать файловые системы наудаленных компьютерах. При этом создается ощущение, что эти файловыесистемы являются локальными, если не считать, конечно, скорости соединения.После монтирования вы сможете непосредственно обращаться к файламэтой файловой системы.
Сетевая файловая система чем-то напоминает службу «Доступ к файлам и принтерам» сети Microsoft. Для того, чтобы компьютер мог предоставлять свои ресурсы для сетевой файловой системы NFS, нанем должен быть установлен и настроен NFS-сервер. Для того, чтобыкомпьютер имел доступ к ресурсам сетевой файловой системы, на немдолжен быть установлен и настроен NFS-клиент. И тот и другой можноустановить на одном компьютере, если этот компьютер и предоставляетсвои ресурсы системе NFS, и использует ресурсы NFS.Для использования NFS нужно убедиться, что у вас запущены сервисыnetfs и nfslock, а в некоторых системах nfsd и mountd.