![](https://habrastorage.org/getpro/geektimes/post_images/537/da3/0fe/537da30fe345b4326574d835c5e8ed79.png)
Знакома ли вам ситуация «инет никакой»?
Обычно попытка исправления подразумевает:
— обход членов семьи (ну да, я качаю новый сезон «Доктор Хаус». А кому это может мешать?)
— перезагрузить роутер (ну завис я, завис — сутками всякую дрянь качаете..)
— не качаются ли обновления (приятная новость — новый Acrobat Reader...)
— нет ли у нас блошек (нашему ботнету сегодня дали большое домашнее задание)
— звонок провайдеру (наш канал работает как часы с самого основания компании)
— эм. может еще раз роутер?
…
Все получится, если ваш роутер поддерживает протокол SNMP — специальный протокол для телеметрии сетевых устройств и приложений. Разбираемся по инструкции к роутеру или веб-интерфейсу, есть ли у вас поддержка SNMP. В некоторых случаях появляется при установке неофициальных прошивок. Ищем его в веб интерфейсе, включаем. Запоминаем, как называется community name — это пароль, по которому показания SNMP вашего роутера доступны в сети (по умолчанию обычно public).
![](https://habrastorage.org/getpro/geektimes/post_images/c4c/300/610/c4c3006100b7ccc251db6e5bafb8dda6.png)
Рис. 1. Здесь все просто. Или поддержка SNMP есть, или ее нет.
Чтобы не потерять много времени впустую, давайте сделаем экспресс-проверку. Скачиваем библиотеку NET-SNMP. Из директории bin выполняем команду:
snmpstatus -c public -v 1 192.168.1.1
public — пароль для доступа к SNMP (community name)
192.168.1.1 — ip адрес роутера
Если роутер отозвался сводкой информации о себе (OS, uptime, ...), идем дальше.
Open Source решения для мониторинга:
Я буду разбирать использование MRTG. Не лучшее юзабилити, зато самая простая установка. Нам ведь пока не надо мониторить тысячи устройств. MRTG — это набор скриптов, который сгенерирует html станицы и png картинки со статистикой по параметрам, которые вы мониторите.
Устанавливаем MRTG. На сайте подробное руководство по установке для UNIX и Windows. Для работы под Windows требуется PERL. Наиболее распространенный бесплатный дистрибутив PERL для Windows — это ActivePerl. Отдельной инструкции для Mac не сайте видел, однако поскольку MRTG — это не более чем программа на PERL, тоже должно работать.
Короткий путь начать мониторить траффик на сетевых интерфейсах роутера — это создать конфигурационный файл MRTG командой cfgmaker. Например, мой роутер ASUS WL-500g premium имеет 8 сетевых интерфейсов, и это позволяет видеть траффик со стороны провайдера, со стороны WiFi устройств (телефон и ноутбук), со стороны рабочей станции через Ethernet
![](https://habrastorage.org/getpro/geektimes/post_images/316/4e6/c42/3164e6c42a777caa34d93348e4659526.png)
Рис. 2. Из сопоставления графиков на разных интерфейсах видно, откуда идет траффик.
Чуть сложнее мониторить нагрузку и использование памяти. Нужно иметь MIB спецификацию устройста. Если SNMP поддерживается официально, то она, скорее всего, есть на сайте производителя. Если это неофициальная прошивка, то, возможно, уже есть наработки у сообщества, которое сделало прошивку. Например, спецификация для ASUS WL-500g здесь. В моем случае OID для средней за 5 минут нагрузки на CPU .1.3.6.1.4.1.2021.10.1.5.2, используемая RAM .1.3.6.1.4.1.2021.4.6.0. При описании показаний нагрузки CPU и использования памяти в конфиге MRTG нужно с помощью опции gauge указать, что это текущие показания, а не интегральная величина, как для траффика, когда SNMP передает количество байт прошедшее через интерфейс с момента включения устройства (ну или обнуления счетчика, если долго работаем)
![](https://habrastorage.org/getpro/geektimes/post_images/ab9/178/244/ab9178244ee8a5fa7aeb0e1dfdd297a7.png)
Рис. 3. Обычно нагрузка процессора на нуле. Она растет, когда качают несколько процессов на большой скорости. Используемая память меняется слабо.
Разумеется запускать mrtg вручную каждые 5 минут не нужно, а нужно создать задачу cron (Unix) пример:
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
Если ставите mrtg из пакета, задача добавится сама.
или Sheduled Tasks (Windows) Пример:
Run: wperl mrtg --logging=eventlog mrtg.cfg
Start in: c:\httpd\htdocs\mrtg\bin
Возможно, возможности вашего роутера значительно шире, и вы можете получать значительно больше информации — МАС адреса клиентов, траффик по MAC адресам, и так далее. Да поможет вам Google!
P.S. Данная заметка, разумеется, не ориентирована на специалистов по сетевой инфраструктуре. Просто я совершенно случайно открыл для себя букавы SNMP и уверен, что не одинок в этом. Возможно, кому-то это поможет при выборе нового роутера.
В комментариях открыл для себя суперпрошивку DD-WRT. Теперь вот думаю…