Smokeping - утилита для накопления информации о задержках в передаче и потере пакетов. Результаты отображаются в виде графика (прорисовка при помощи RRDtool). Уже несколько раз устанавливал на клиентские маршрутизаторы, и вот собрался наваять статью по этому поводу.
Установку выполним как всегда, из портов:
# cd /usr/ports/net-mgmt/smokeping && make install clean && rehash |
Опции установки отмечены следующим образом:
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 |
После установки, что порадовало, отобразились инструкции по установке:
SmokePing has now been installed in /usr/local/smokeping/. NOTE: A set of sample configuration files have been installed: /usr/local/etc/smokeping/config /usr/local/etc/smokeping/smokemail /usr/local/etc/smokeping/basepage.html /usr/local/etc/smokeping/tmail You *MUST* edit these to suit your requirements. Please read the manpages 'smokeping_install' and 'smokeping_config' for further details on installation and configuration. If you are upgrading from a previous version of Smokeping, the manpage 'smokeping_upgrade' may be of help. Once configured, you can start SmokePing by adding: smokeping_enable="YES" to /etc/rc.conf, and then running, as root: /usr/local/etc/rc.d/smokeping start To enable Apache web access, add something like the following to your /usr/local/etc/apache/httpd.conf: DocumentRoot /usr/local/smokeping/htdocs ScriptAlias /smokeping.cgi /usr/local/smokeping/htdocs/smokeping.cgi ScriptAlias /tr.cgi /usr/local/smokeping/htdocs/tr.cgi Enjoy! |
Что ж... Приступим к рихтованию конфигурационного файла - /usr/local/etc/smokeping/config. Следует обратить внимание на тот факт, что символы * и + являются служебными, тоесть частью конфигурации. Звездочками выделены разделы, а плюсами - подразделы.
Конфигурационный файл вышел на славу - примеров достаточно. Мониторятся два сервера в Украине и два - в Таиланде (а почему бы и нет? Есть там два офиса...). Отдельно - сервера по всему миру, разбиты на подгрупы по частям света. Отдельно - Украина и Россия.
Собственно, в результате получаем такой /usr/local/etc/smokeping/config:
*** General ***
# Указываем владельца
owner = Companyname Co. ltd. # Контактный e-mail contact = support [at] domain [dot] com # Адрес почтового сервера для отправки уведомлений mailhost = relay.domain.com # Пути к файлам # Путь изменяем только к Sendmail (так понимаю, # програма мигрировала на FreeBSD из Linux sendmail = /usr/sbin/sendmail imgcache = /usr/local/smokeping/htdocs/img imgurl = img datadir = /usr/local/var/smokeping piddir = /usr/local/var/smokeping # Указываем URL cgiurl = http://192.168.100.26/smokeping/smokeping.cgi # Шаблон почтового сообщения smokemail = /usr/local/etc/smokeping/smokemail tmail = /usr/local/etc/smokeping/tmail # Номер facility Sysloga, куда будут отправляться сообщения syslogfacility = local0 *** Alerts ***
# Кому и от чьего имени отправлять уведомления to = support [at] domain [dot] com from = support [at] domain [dot] com # Описание потерь
+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
menu = Charts title = The most interesting destinations # График с наибольшим разбросом значений ++ stddev sorter = StdDev(entries=>4) title = Top Standard Deviation menu = Std Deviation format = Standard Deviation %f # График с наибольшей задержкой ++ 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 binary = /usr/local/sbin/fping # FTP и HTTP сервера проверяем с помощью curl
+ Curl binary = /usr/local/bin/curl step = 60 # SMTP - echoping smtp
+ EchoPingSmtp # HTTP - echoping http + EchoPingHttp # DNS - echoping dns + EchoPingDNS *** Targets ***
# Секция, в которой описываем опрашиваемые ресурсы # Указываем FPing как опрос по умолчанию
probe = FPing # Настройка мониторинга. Корневой раздел.
menu = Top title = Network Resource remark = Companyname Co. ltd. # Для начала секция локальных ресурсов.
+ Companyname menu = Companyname network title = Companyname network ++ UA
menu = Ukrainian network title = Ukrainian network +++ Relay
menu = Mail Server title = Mail Server host = relay.domain.com # Проверка HTTP (Curl)
++++ HTTPCurl menu = HTTP title = Web Server / HTTP probe = Curl host = relay.domain.com urlformat = http://%host%/ # Проверка HTTP (EchoPing)
++++ HTTPEchoPing menu = HTTP title = Web Server / HTTP probe = EchoPingHttp host = relay.domain.com # Проверка FTP (Curl)
++++ FTPCurl menu = FTP title = FTP Server / FTP probe = Curl host = relay.domain.com urlformat = ftp://%host%/ # Проверка SMTP (EchoPing)
++++ SMTP menu = SMTP title = SMTP Server probe = EchoPingSmtp host = relay.domain.com # Проверка DNS (EchoPing)
++++ DNS menu = DNS title = DNS Server probe = EchoPingDNS host = relay.domain.com dns_request = relay.domain.com +++ KievOffice
menu = Kiev Office title = Kiev Office host = 192.168.213.130 # Проверка HTTP (EchoPing)
++++ HTTPEchoPing menu = HTTP title = Web Server / HTTP probe = EchoPingHttp host = 192.168.213.130 ++ TH
menu = Thailand network title = Thailand network +++ PattayaOffice
menu = Pattaya Office title = Pattaya Office host = 192.168.100.18 # Проверка FTP (Curl)
++++ FTPCurl menu = FTP title = FTP Server / FTP probe = Curl host = 192.168.100.18 urlformat = ftp://%host%/ # Проверка HTTP (EchoPing)
++++ HTTPEchoPing menu = HTTP title = Web Server / HTTP probe = EchoPingHttp host = 192.168.100.18 +++ PhuketOffice
menu = Phuket Office title = Phuket Office host = 192.168.124.177 # Проверка HTTP (Curl)
++++ HTTPCurl menu = HTTP title = Web Server / HTTP probe = Curl host = 192.168.124.177 # Здесь веб-сервер слушает на 88 порту urlformat = http://%host%:88/ + Ukraine
menu = Ukraine title = UA-IX ++ UarNet_AS3255
title = UarNet_AS3255 host = www.uar.net ++ DonbassNetwork_AS5598 title = DonbassNetwork_AS5598 host = nic.dn.ua ++ UkrNet_AS8856 title = UkrNet_AS8856 host = ukr.net ++ Navigator_AS13121 title = Navigator_AS13121 host = nav.kiev.ua ++ Cyfra_AS25386 title = Cyfra_AS25386 host = www.cyfra.ua + Russia
menu = Russian title = Russian resources ++ TeliaRussia_AS1299
title = TeliaRussia_AS1299 host = lg.telia.ru ++ RUSNet_AS3277 title = RUSNet_AS3277 host = www.rusnet.ru ++ Relcom_AS2118 title = Relcom_AS2118 host = www.relcom.ru ++ Zenon_AS6903 title = Zenon_AS6903 host = zenon.net ++ MAcomnet_AS8470 title = MAcomnet_AS8470 host = www.macomnet.net + Europa
menu = Europa title = European resources ++ BelNet-Belgium_AS2611
title = BelNet-Belgium_AS2611 host = www.belnet.be ++ CoreTecIT-Austria_AS3248 title = CoreTecIT-Austria_AS3248 host = www.coretec.at ++ SonnIT-Denmark_AS8807 title = SonnIT-Denmark_AS8807 host = www.area51.dk ++ SpaceNet-Germany_AS5539 title = SpaceNet-Germany_AS5539 host = www.space.net ++ ZonePro-France_AS29351 title = ZonePro-France_AS29351 host = www.zonepro.net + Asia
menu = Asia title = Asian resources ++ InstituteHighEnergy-China_AS7497
title = InstituteHighEnergy-China_AS7497 host = v-www.ihep.ac.cn ++ SingNet-Singapore_AS3758 title = SingNet-Singapore_AS3758 host = networktools.singnet.com.sg ++ Linkwan_Taiwan_AS4808 title = Linkwan_Taiwan_AS4808 host = www.linkwan.com ++ BoraNet-Korea-AS3786 title = BoraNet-Korea-AS3786 host = www.bora.net ++ Nexlinx-Pakistan_AS17563 title = Nexlinx-Pakistan_AS17563 host = lg.nexlinx.net.pk + America
menu = Amerika title = American resources ++ University_Washington-USA-AS73
title = University_Washington-USA-AS73 host = www.washington.edu ++ Neoclan-Mexico_AS11172 title = Neoclan-Mexico_AS11172 host = www.neoclan.net.mx ++ Telmex-Chile_AS6429 title = Telmex-Chile_AS6429 host = lg.telmexchile.cl ++ InternetDirect-Canada_AS7271 title = InternetDirect-Canada_AS7271 host = www.direct.ca ++ RedeRioDeComputadores-Brasil_AS2715 title = RedeRioDeComputadores-Brasil_AS2715 host = guanabara.rederio.br |
С конфигурационным файлом разобрались. Добавим загрузку smokeping при запуске системы:
# echo '# Smokeping' >> /etc/rc.conf |
Собственно, сам запуск:
# sh /usr/local/etc/rc.d/smokeping start Starting smokeping. |
Теперь дело за малым - добавить в Apache поддержку Smokeping. Добавим в /usr/local/etc/apache22/httpd.conf такой блок:
Alias /smokeping/ /usr/local/smokeping/htdocs/ <Directory /usr/local/smokeping/htdocs> Options Includes ExecCGI DirectoryIndex smokeping.cgi AddHandler cgi-script .cgi AllowOverride All Order allow,deny Allow from All </Directory> |
Перезапускаем Apache, чтобы изменения вступили в силу:
# apachectl graceful |
В браузере набираем URL http://IP-SERVERA/smokeping/ и попадаем на главную страницу Smokeping:
Необходимо время, чтобы собрать статистику. В результате будем иметь следующие графики (пример с другого сервера, где мониторятся только доступность серверов):
Последние комментарии
11 недель 3 дня назад
35 недель 4 дня назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 11 недель назад