12.04
ОБЩЕЕ
Зачем это надо ?
1. Все настройки в одном конфиге, согласно меткам slaves= каждый слейв получит свой конфиг
2. Все отображение в одном месте, на быстром сервере.
3. Лично мне понадобилось – надо пинговать девайсы с нереальными ип, строить роутинг от веб-сервера, где стоит смок, к ним не хочется.
Поскольку уже есть сервер с коннективити к девайсам, решил на нем поднять слейв смока. На нем _не_ ставится апач и ррдтул.
4. На сайте смокпинга пишут что таким образом можно оценивать задержку к одному и тому же хосту с разных точек (слейвов). Т.е. пинговать хост будет мастер и все слейвы. Примеры таких графиков можно посмотреть на сайте разработчика [3].
Идеология работы
Один мастер, много слейвов.
Слейвы описываются в соответсвующем разделе конфига мастера. Каждому слейву назначается пароль. Далее для таргетов выставляется с каких слейвов они будут пинговаться. Привязка слейвов к хостам наследуется по дереву хостов, т.е. слейв можно указать один раз при описании хостов и они все будут опрашиваться этим слейвом. Пустое поле слейва отменяет наследование.
Протокол
Слейв общается с мастером по HTTP. Запросы инициирует только слейв.
При запуске слейв передает свое имя и пароль мастеру. При каждом запросе передается и время последней модификации конфига. Мастер отдаст слейву новый конфиг если он обновился.
В первом запросе время = 0 и слейв получает стартовый конфиг от мастера. В конфиге описаны переменные, пробы и дерево хостов этого слейва.
Слейв запускает пробы с указанным интервалом и отправляет данные обратно на сервер. В ответе может получить новый конфиг.
Вот пример отправки результатов со слейва на мастер
POST /smokeping.cgi HTTP/1.1 TE: deflate,gzip;q=0.3 Connection: TE, close Host: smokeping.local User-Agent: smokeping-slave/1.0 Content-Length: 1057 Content-Type: multipart/form-data; boundary=xYzZY --xYzZY Content-Disposition: form-data; name="slave" border --xYzZY Content-Disposition: form-data; name="key" 1111111111111111111111111111111111 --xYzZY Content-Disposition: form-data; name="protocol" 2 --xYzZY Content-Disposition: form-data; name="data" /Private_net/10_5_47_x/10_5_47_7 1259932521 U:3:6.8282000000e-01:U:6.0810000000e-01:6.5105000000e-01:6.6579000000e-01 :6.6731000000e-01:6.6934000000e-01:6.7052000000e-01:6.7159000000e-01 :6.8247000000e-01:6.8282000000e-01:6.8563000000e-01:6.8909000000e-01 :6.9390000000e-01:7.3333000000e-01:7.3340000000e-01:7.6951000000e-01 :8.8933000000e-01:9.6087000000e-01:U:U --xYzZY Content-Disposition: form-data; name="config_time" 1259931976
НАСТРОЙКА
Исходные данные
Есть веб сервер с установленым апачем и смокпингом. Что-то с него уже пингуется. Необходимо пинговать хосты в некой приватной сети. Связывать веб сервер с приватной сетью нежелательно. Есть сервер на границе приватной сети. Связь от него до веб сервера есть.
Сервера на FreeBSD, у вас могут отличаться пути.
Задача
Установить на пограничном сервере смокпинг и поключить
в режиме слейва к смокпингу на веб сервере.
Мастер
Прописываем слейв с именем border
*** Slaves *** secrets=/usr/local/etc/smokeping/secrets +border display_name=keeper color=0000ff
Описание группы хостов, которые будут пинговаться со слейва.
Чтобы их не пинговал мастер указано «nomasterpoll= yes»
++ Private_net menu= Private net title= Private net probe= FPing nomasterpoll= yes slaves= border +++ 10_5_47_x menu= 10.5.47.x title= 10.5.47.x ++++ 10_5_47_7 menu= 10.5.47.7 title= 10.5.47.7 host= 10.5.47.7
В файле /usr/local/etc/smokeping/secrets для каждого слейва пишем строку логин:пароль
border:pass123
Слейв
Ставим smokeping.
cd /usr/ports/net-mgmt/smokeping/
make install clean
В файл /etc/rc.conf добавляем
smokeping_enable=»YES»
Правим /usr/local/etc/rc.d/smokeping
Вместо
command_args=»–logfile=${smokeping_logfile}»
пишем
command_args=»–logfile=${smokeping_logfile} –slave-name=border –master-url=http://smokeping.local/smokeping.cgi –cache-dir=/usr/local/var/smokeping/ –shared-secret=/usr/local/etc/smokeping/secrets»
–slave-name=border – имя слейва, по дефолту `hostname`, указано явно для удобства,
короче чем полное и нету привязки
http://smokeping.local/smokeping.cgi – адрес рабочего смокпинга
/usr/local/var/smokeping/ – временная папка
Взлетаем – /usr/local/etc/rc.d/smokeping start
Чтобы изменить конфиг (и на слейвах тоже) правим его только! на мастере.
Потом /usr/local/etc/rc.d/smokeping reload
Теперь слейв получит новый конфиг когда будет сливать
на мастер результаты своих пингов, обычно раз в 5 минут.
ПРОБЛЕМЫ
установка
При установке из портов также ставятся порты smnp и rrdtool, которые при работе в режиме слейва не нужны. Как этого избежать пока не понял. Скачал smokeping в виде package, развернул и скопировал куда надо. Убрал ссылки на snmp и rrd. Потом из портов доставил p5-Digest-HMAC и p5-libwww-5.805.
права доступа
rrd файлы создаются процессом smokeping,
данные от слейвов вносятся smokeping.cgi из-под апача.
Для внесения данных нужны права для записи в файл и
директорию, где файл находится (для локов)
Директория с базами ррд /usr/local/var/smokeping/
RemoteFPing
У меня на мастере настроен RemoteFPing.
Ходит через ssh (авторизация по ключам) на другой сервер
и оттуда пингует хосты.
На слейве ключей нету, но он получает в конфиге описание пробы RemoteFPing и пытается ломиться по ssh
Пока отключил правкой в файле /usr/local/smokeping/lib/Smokeping/probes/RemoteFPing.pm :
sub binary { my $self = shift; return $self->{properties}{rbinary}; }
Позже на том сервере подниму еще один слейв и уберу RemoteFPing,
чем и решу проблему.
No Comment.
Add Your Comment