DevBug blog

О Linux, Java, разработке ПО и не только

MTR: диагностируем сеть в Linux

2013-12-12 Linux

Для проверки сетевого или интернет соединения многие часто пользуемся такими утилитами как ping либо traceroute. Но результаты выполнения данных утилит не всегда наглядны и удобны для оценки результатов. 

Для более наглядных и детальных отчетов пользователи ОС Windows могут воспользоваться программой pingPlotter, ну а пользователи ОС Linux аналогом - MTR (о которой вкратце ниже).

В Linux данная утилита существует в двух вариантах: консольном (mtr-tiny) и с графическим интерфейсом (mtr). Забегая вперед скажу, что вариант с графическим интерфейсом мне вообще не понравился и показался каким-то урезанным: отчет выводится на экран, но его никак нельзя сохранить или экспортировать в файл. Поэтому далее пару слов о консольном варианте утилиты.

Итак, если данная утилита еще не установлена, то открываем консоль (терминал) и вводим команду от обычного пользователя:

sudo aptitude install mtr-tiny

Для тестирования маршрутов до google.com в терминале вводим команду:

mtr google.com

В результате в консоли отобразяться подробная информация по всем узлам до сервера Google: процент потерянных пакетов, количество отправленных пакетов, последний пинг, средний пинг, лучший пинг, худший пинг. Выглядеть это все будет таким образом:

mtr-results

Если у Вас дома стоит какой-нибудь маршрутизатор, то иногда в результате выполнения данной команды может получиться так, что процент потерь пакетов будет составлять 50%.  Дело в том, что некоторые маршрутизаторы не успевают обрабатывать запросы, идущие на них каждую секунду. В таком случае утилите mtr можно указать интервал с которым она будет отправлять данные указанном серверу. Для этого используется ключ -i с указанием интервала в секундах. Для интервала в 2 секунды команда будет выглядеть так:

mtr -i 2 google.com

Максимальное количество отправляемых пакетов устанавливается через ключ --report-cycles. Например, для тестирования маршрута до сервера google.com с максимальным количеством отправленных пакетов равном 50, будет выглядеть следующим образом:

mtr --report-cycles 50 google.com

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

mtr --report google.com

По умолчанию для составления отчета отправляется 10 пакетов. Если для составления отчета необходимо отправить больше 10 пакетов (например 60 пакетов) с интервалом в две секунды, то необходимо воспользоваться приведенными выше ключами --report-cycles и -i. В таком случае в консоли необходимо будет ввести команду вида:

mtr -i 2 --report --report-cycles 60 google.com

А для вывода отчета в текстовый файл в конце строки необходимо добавить два знака больше >> и указать имя файла или полный путь к файлу, в который этот самый отчет будет сохраняться. Выглядеть такая команда будет так:

mtr -i 2 --report --report-cycles 50 google.com >> results.txt

В данном случае текстовый файл с отчетом необходимо искать в той папке, из которой был запущен терминал (обычно - это папка /home/user_name)
Еще одно важное замечание: после нескольких запусков подряд любой описанной выше команды оператор >> будет дописывать отчеты в конец текстового файла, а оператор > (одиночный знак больше) будет каждый раз перезаписывать текстовый файл.

comments powered by Disqus