Smokeping – утилита мониторинга состояния каналов. Удобна она тем, что отображает все состояния в виде графиков. А графики – это как все отлично понимают, самая наглядная вещь. Помимо мониторинга задержек, с помощью Smokeping можно контролировать скорость реакции сервисов на запросы. Это тоже довольно интересная тема. По возрастанию времени ответа, допустим, вебсервера, можно судить о скорости генерации страниц и о том, насколько он эффективно работает и коственным путем отмечать повышение нагрузки на него. То же самое можно делать и с почтовым сервером и с ДНС, в общем практически с любым сервисом.
Ставится Smokeping из портов:
cd /usr/ports/net-mgmt/smokeping/ make install clean
В начале будет диалог конфигурации:
---------------------------------------------------------------------¬ ¦ Options for smokeping 2.4.2_6 ¦ ¦ -----------------------------------------------------------------¬ ¦ ¦ ¦ [X] FPING Support for fping probes ¦ ¦ ¦ ¦ [X] ECHOPING Support for EchoPing probes ¦ ¦ ¦ ¦ [X] CURL Support for Curl probes ¦ ¦ ¦ ¦ [ ] LDAP Support for LDAP probes ¦ ¦ ¦ ¦ [ ] LDAPSSL Support for SSL-enabled LDAP probes ¦ ¦ ¦ ¦ [ ] RADIUS Support for Radius probes ¦ ¦ ¦ ¦ [X] TELNET Support for TelnetIOSPing probes ¦ ¦ ¦ ¦ [X] DNS Support for AnotherDNS probes ¦ ¦ +-L------------------------------------------------------------------+ ¦ [ OK ] Cancel ¦ L---------------------------------------------------------------------
После того, как мы собрали и поставили Smokeping можно приступать к настройке. Настройка состоит из 2-х частей. Сначала настроим саму пинговалку. Настройки хранятся в файле /usr/local/etc/smokeping/config А содержимое у него такое:
#Основная секция #То что выделено * и + - это составные части конфига #Звезды это я так понимаю разделы, а + -ми выделены секции. #Достаточно удобно сделано, можно создавать иерархию, свитчи к свитчам, #cервера к серверам, клиентов в отдельную секцию, сервисы в отдельную *** General *** #Общие параметры owner = NOC xxx #Контактный емейл contact = noc@xxx.org.ua #Почтовый сервер, через который отправлять уведомления mailhost = mail.xxx.org.ua #Основные пути. Ничего менять не пришлось, только сендмейл оказался по неправильному пути sendmail = /usr/sbin/sendmail imgcache = /usr/local/smokeping/htdocs/img imgurl = img datadir = /usr/local/var/smokeping piddir = /usr/local/var/smokeping #Урл сервера cgiurl = http://smokeping.xxx.org.ua/smokeping.cgi #Шаблон почтового сообщения smokemail = /usr/local/etc/smokeping/smokemail tmail = /usr/local/etc/smokeping/tmail #Syslog фасилити от которого выдаются сообщения syslogfacility = local0 #Секция уведомлений, настраиваются адрес отправителя и получателя. *** Alerts *** to = noc@xxx.org.ua from = noc@xxx.org.ua # Описание потерь +someloss type = loss # in percent pattern = >0%,*12*,>0%,*12*,>0% comment = loss 3 times in a row #Настройки базы *** Database *** step = 300 pings = 20 AVERAGE 0.5 1 1008 AVERAGE 0.5 12 4320 MIN 0.5 12 4320 MAX 0.5 12 4320 AVERAGE 0.5 144 720 MAX 0.5 144 720 MIN 0.5 144 720 *** Presentation *** #Шаблон отображения в браузере template = /usr/local/etc/smokeping/basepage.html # Секции отображения. charts - это секция наиболее интересных графиков + charts menu = Charts title = The most interesting destinations #Раздел интересных графиков, stddev - тут будет отображаться график с наибольшим разбросом значений. ++ stddev sorter = StdDev(entries=>4) title = Top Standard Deviation menu = Std Deviation format = Standard Deviation %f # max - с максимальной задержкой ++ max sorter = Max(entries=>5) title = Top Max Roundtrip Time menu = by Max format = Max Roundtrip Time %f seconds # с большими потерями ++ loss sorter = Loss(entries=>5) title = Top Packet Loss menu = Loss format = Packets Lost %f #среднее время ++ median sorter = Median(entries=>5) title = Top Median Roundtrip Time menu = by Median format = Median RTT %f seconds # Настройка отображения + overview width = 600 height = 50 range = 10h + detail width = 600 height = 200 unison_tolerance = 2 "Last 3 Hours" 3h "Last 30 Hours" 30h "Last 10 Days" 10d "Last 400 Days" 400d # Эта секция отвечает за настройку опросов *** Probes *** #Виды опросов, сюда нужно перечислить все виды, которые вы будете использовать #Fping - пинг с помощью fping + FPing binary = /usr/local/sbin/fping # Проверка с помощью утилиты curl, с ее помощью можно проверять FTP и HTTP сервера + Curl binary = /usr/local/bin/curl step = 60 # Проверка с помощью утилиты echoping smtp серверов + EchoPingSmtp # Проверка с помощью утилиты echoping веб серверов + EchoPingHttp # Проверка с помощью утилиты echoping днс серверов + EchoPingDNS # Теперь секция, что же мы будем опрашивать *** Targets *** #Fping устанавливаем как опрос по умолчанию probe = FPing # Тут мы начинаем настраивать мониторинг - это корневой раздел меню menu = Top title = Our Network Probes remark = Welcome to the our Net. #Поскольку мы мониторим только один сервер, делаем его корневым #А подразделами будут сервисы которые на нем живут. #В описании сервера не указываем type проверки, будет использоваться тип по умолчанию #а именно FPing #Если корневой раздел не пройдет проверки FPing, опрос сервисов #проводится не будет. + xxx menu = xxxServer title = xxxServer host = xxx.org.ua #Проверка работы вебсервера с помощью CURL ++ xxxWebCurl menu = xxxWebCurl title = Web Server xxx.org.ua / HTTP probe = Curl host = www.xxx.org.ua #Если вебсервер живет не на порту 80, а к примеру на 8080, #то нужно указать urlformat=urlformat = http://%host%:8089/ urlformat = http://%host%/ #Проверка FTP сервера ++ xxxFTP menu = xxxFTP title = FTP Server xxx.org.ua / FTP probe = Curl host = xxx.org.ua urlformat = ftp://%host%/ #Проверка работы вебсервера с помощью EchoPing ++ xxxWithEchoPing menu = xxxEchoPing title = Web Server xxx.org.ua / HTTP probe = EchoPingHttp host = www.xxx.org.ua #Проверка работы почтового с помощью EchoPing ++ xxxMail menu = xxxMail title = Mail Server xxx.org.ua probe = EchoPingSmtp host = xxx.org.ua #Проверка работы DNS сервера с помощью EchoPing ++ xxxDNS menu = xxxDNS title = DNS Server xxx.org.ua probe = EchoPingDNS host = xxx.org.ua dns_request = xxx.org.ua
На этом настройка Smokeping завершена, нужнщ ему разрешить запускаться.
echo 'smokeping_enable="YES"' >> /etc/rc.conf
А теперь запустить его:
/usr/local/etc/rc.d/smokeping start
Сам демон сбора статистики запущен. Теперь нужно настроить отображение. Для этого нам нужен установленый Apache, а в нем я настроил виртуальный хост smokeping.xxx.org.ua:
<VirtualHost *:80> ServerAdmin noc@xxx.org.ua DocumentRoot /usr/local/smokeping/htdocs ScriptAlias /smokeping.cgi /usr/local/smokeping/htdocs/smokeping.cgi ScriptAlias /tr.cgi /usr/local/smokeping/htdocs/tr.cgi ServerName smokeping.xxx.org.ua DirectoryIndex smokeping.cgi </VirtualHost>