- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF133:DrBrown3
Материал из Linuxformat.
Содержание |
Дым и зеркала
- Выводите графики производительности сети и сервисов и получайте предупреждения SmokePing об аномальном поведении.
SmokePing – утилита построения графиков сетевой активности, немного похожая на Mumin. Как и у Mumin, архитектура у нее модульная, что позволяет расширить ее набор измерений до огромного. Как и Mumin, она предоставляет результаты в виде web-контента, и чтобы доставить его в браузер, нужен web-сервер. И, как и Mumin, для генерации графиков она использует RRDTool, утилиту Тоби Этикера [Tobi Oetiker]. Но если Mumin измеряет загрузку и производительность компьютера, то SmokePing – сетевую активность.
SmokePing состоит из демона, выполняющего измерения, и CGI-скрипта, который выдает графики. В отличие от Mumin, на компьютеры не нужно устанавливать никаких дополнительных программ-агентов.
В моем Ubuntu SmokePing заработала сразу, хотя по умолчанию она измеряет только задержки пинга к localhost, а это не увлекательнее, чем наблюдение за подъемом опары теста. Настройка SmokePing заключается в определении Тестов [Probes] – утилит, измеряющих задержки, Целей [Targets] – проверяемых компьютеров, и Предупреждений [Alerts] – условий, при которых вы будете предупреждены об аномальном поведении. По ходу, мы увидим, что структура файла config определяет меню, появляющееся на сайте SmokePing.
Рассмотрим пример. Файл настройки верхнего уровня – /etc/smokeping/config. В Ubuntu он содержит лишь несколько директив @include, подключающих файлы из /etc/smokeping/config.d – тогда определения тестов, целей и предупреждений остаются независимыми друг от друга. В Fedora все соединяется вместе в одном файле верхнего уровня. Найдите файл /etc/smokeping/config.d/Probes, где заданы тесты. Он есть в каталоге /Magazine/SysAdmin_Code нашего DVD.
Тестируем
Здесь мы определим три теста. Первый – простой пинг, а два других измерят время прохода туда и обратно для запросов DNS и HTTP. Строки, начинающиеся со знака +, задают имена тестов – мы увидим их снова, когда будем определять цели. Взгляните на определение теста DNS. Параметр pings задает число измерений, выполняемых каждый раз, а steps – время между измерениями (в секундах). Так, в этом примере тест будет выполнять по пять измерений каждые три минуты. Эти настройки перегружают установленные по умолчанию:
step=300 pings=20
Они определены в /etc/smokeping/config.d/Database. Кстати, http://www.bbc.net.uk – это не DNS-сервер, который мы тестируем, а DNS-запись, которая будет извлечена из тестируемого сервера.
Другой файл, который нужно подправить – /etc/smokeping/config.d/Targets. В нем определяются целевые компьютеры. Я решил проверить два компьютера: один в локальной сети и http://www.tuxradar.com. Мой файл Targets есть в каталоге /magazine/sysadmin нашего DVD.
Эти записи формируют иерархическое меню, которое появится на странице SmokePing. Глянув на строки, начинающиеся со знака +, вы увидите (например) пункт меню верхнего уровня services; в его подпункте HTTP — два компьютера: m1530‑904 и linuxformat. Как вы заметите, на нижних уровнях этой структуры (последние четыре строки) определяются компьютеры, которые будут тестироваться. Ни один из этих компьютеров не будет проверяться тестом DNS, который мы определили ранее.
Завершив настройку, перезапустите SmokePing и ступайте почитать Linux Format несколько часов, пока копится необходимый объем данных:
$ sudo service smokeping restart
Затем я перешел на сайт http://servera/cgi-bin/smokeping.cgi (servera – компьютер, на котором запущен SmokePing) и был вознагражден графиками, которые есть на нашем DVD. Задержка HTTP- запроса к http://tuxradar.com обычно составляет около 200 мс, хотя, как показано на нижнем графике, с 7 до 10 часов вечера она возрастает до 260 мс. Так как я проводил измерения только с одного компьютера, то не могу сказать, был ли вызван этот рост увеличением нагрузки на сервер или увеличением нагрузки на моего провайдера.
Архитектура модулей расширения SmokePing позволяет писать тесты как объектно-ориентированные модули Perl и загружать по требованию. Они хранятся в каталоге /usr/share/smokeping/lib/Smokeping/probes. Некоторые тесты основаны на echoping, разносторонней утилитке для измерения времени прохождения запроса туда и обратно для различных протоколов.
Узнать мнение других
Можно запустить несколько экземпляров SmokePing в режиме «ведущий–ведомый» – в частности, для измерения задержек web-сервера с различных узлов сети. Например, измерение задержек web-сервера TuxRadar с другого компьютера могло бы сказать нам, вызвано ли замедление передачи состоянием сервера или локальной сети. «Ведомые» – обычные экземпляры SmokePing, но они получают свои параметры от «ведущего», а не из локального файла настройки. «Ведомые» общаются с «ведущим» через обычный web-интерфейс SmokePing, но подписывают сообщения, предоставляя код аутентификации сообщения на основе MD5, формируемый по сообщению и известному им секретному ключу.
«Ведомые» передают «ведущему» свои результаты после каждого теста. Для настройки такой конфигурации установите SmokePing на «ведомые» компьютеры с добавочными аргументами командной строки, задающими URL «ведущего» и расположение секретного ключа. Своего файла настройки у «ведомых» нет.
Если подходящего теста, который делает то, что вам нужно, нет, можно написать собственный. Как это делается, описано на странице man smokeping_extend; там есть базовый класс Smokeping::probes::basefork, который можно принять за основу, и структурный файл (skel.pm), с которого можно начать.
SmokePing умеет отправлять предупреждения (по почте или через другую программу на ваш выбор), чтобы известить вас о возможных проблемах. Для настройки предупреждений создаются «детекторы шаблона» – они следят за изменениями времени прохождения пакета или запроса туда и обратно или за потерей пакетов для заданного теста. Детекторы шаблона не просто срабатывают при первом же нарушении – они позволяют вам рассмотреть несколько случаев и квалифицированно решить, какие предупреждения отправить и стоит ли вообще это делать. Вот определение предупреждений из Ubuntu. Номера строк указаны только для ссылок, в файле их нет.
1 *** Alerts *** 2 to = chris@example.com 3 from = smokealert@example.com 4 5 +bigloss 6 type = loss 7 # in percent 8 pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0% 9 comment = suddenly there is packet loss 10 11 +someloss 12 type = loss 13 # in percent 14 pattern = >0%,*12*,>0%,*12*,>0% 15 comment = loss 3 times in a row 16 17 +startloss 18 type = loss 19 # in percent 20 pattern = ==S,>0%,>0%,>0% 21 comment = loss at startup 22 23 +rttdetect 24 type = rtt 25 # in milli seconds 26 pattern = <10, <10, <10, <10, <10,<100,>100, >100, >100 27 comment = routing messed up again?
Строка 2 определяет, как доставлять предупреждения. Здесь можно указать адрес электронной почты или имя программы, запускаемой при возникновении предупреждения. Строки 5–8 задают шаблон предупреждения под именем bigloss. Шаблон в строке 8 указывает долю потери пакетов в процентах, которая должна иметь место (в данном случае) при семи последовательных измерениях. (Установка параметра step в 300 с означает, конечно, что предупреждение не появится, пока пакеты не будут выглядеть потерянными 15 минут и более.)
Когда предупреждать
Строки 11–15 определяют предупреждение someloss. В строке 14 обозначение *12* в детекторе шаблона означает «игнорировать до 12 значений и все еще признавать соответствие шаблону». Таким образом (опять же, предполагая, что step установлен в 300 с), предупреждение возникнет, если потеря пакетов наблюдается три раза, но между ними может быть до двух интервалов длительностью до часа (12 × 300 c), в течение которых потери не происходит. В худшем случае на срабатывание этого детектора уйдет 2 часа 15 минут.
Так как детекторы обычно реагируют на изменения состояний, они не смогут обнаружить их, если уже существовали на момент запуска SmokePing. Чтобы избежать таких ошибок, используется ==S (см. строку 20), что означает «с момента запуска»; здесь предупреждение запустится, если потеря пакетов наблюдалась три раза подряд сразу после запуска SmokePing.
Для активации предупреждения на него нужно сослаться из раздела настройки Targets. Вернитесь к примеру определения целей и обратите внимание на строку alerts. Она велит SmokePing выдать предупреждение, если потеря пакетов происходит трижды подряд во время теста задержек HTTP.
Нам осталось упомянуть о последнем элементе настройки SmokePing: в разделе ***Presentation*** можно выбрать отображаемые графики и их внешний вид.
Что умеет SmokePing
Тест | Что он делает |
---|---|
Curl | Получает HTTP- или HTTPS-адрес с помощью curl |
DNS | Тест сервиса доменных имен на основе dig |
EchoPingChargen | Измеряет время прохождения запроса TCP chargen (порт 19) |
EchoPingDiscard | Измеряет время прохождения запроса TCP или UDP discard (порт 9) |
EchoPingDNS | Тест DNS на основе echoping |
EchoPingHttp | Тест HTTP на основе echoping |
EchoPingHttps | Тест HTTPS на основе echoping |
EchoPingIcp | Измеряет время прохождения запроса для протокола ICP (Internet Cache Protocol) |
EchoPingLDAP | Измеряет время прохождения запроса для LDAP-серверов |
EchoPingSmtp | Измеряет время прохождения запроса для SMTP-серверов |
EchoPingWhois | Измеряет время прохождения запроса whois |
FPing | Измеряет время прохождения классического запроса IMCP Echo Request |
FTPTransfer | Измеряет доступную полосу пропускания для FTP-серверов |
IOSPing | Тест системы ввода-вывода Cisco |
LDAP | Еще один тест LDAP |
Radius | Тест сервера аутентификации Radius |
RemoteFPing | Инициирует измерения ping удаленно через SSH |
SSH | Тест сервиса SSH с помощью ssh-keyscan |
TacacsPlus | Tacacs+ – проприетарный протокол управления доступом Cisco |
TelnetOSPing | Тест системы ввода-вывода Cisco |