FreeBSD

Smokeping

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>

Оставить комментарий