Во первых это тренировка баш скриптинга, во вторых простота конфигурирования. когда нужно просто сканить пару портов на паре серваков не стоит ставить какие либо громоздкие сервисы с сложной системой конфигурации (я о nagios).
ну на самом деле nagios не умеет ничего мониторить :) nagios — это система оповещений, реагирующая на результаты работы плагинов. вот в этом топике вы как раз и написали такой плагин ;)
если проверок много, то целесообразно объединить их через нагиос, а если мало, то и кронтаб сойдет :)
Насколько я понял, monit еще отличается тем, что способен предпринимать меры к исправлению (фиксации). Nagios, мне казалось, такого не умеет. Или можно доставить?
Про выгоду не скажу. А вот причин для создания «своего» решения много. Начиная от ЧСВ и удовольствия от процесса, заканчивая изучением Advanced Bash scripting Howto и повышением уровня профессиональных знаний. Если автор статьи считает, что для его целей nagios & co избыточны — его выбор.
Как минимум, надо вспомнить фразу — «There's more than one way to do it»
пчелайн иногда имеет огромные задержки до нескольких часов(если отправляется несколько смсок), поэтому от такого решения я отказался и подключил к серверу сотовый телефон.
может вам просто не везло, когда пользовался билайном — ни разу не было задержек.
раньше все оповещения были заточепны на билайн. теперь на другом опсосе =) жаль, что на нем нет такой услуги =(
Ммм… По мне делая проект нада всегда делать с запасом.
Лучше чтобы
1) на каждом сервере висел monit который поднимет сервис в случае его падения
2) была отдельная машина с cacti/nagios/zabbix которая будет мониторить статус машин. И желательно ещё чтобы умела оповещать по SMS/ICQ/Jabber о падении
ПС. Это сейчас у вас 2,3 сервера с 2-3 сервисами… а когда их станет больше, лучше уж заранее?
ППС. А ещё неплохо было бы проверять код ответа. Мускул у ваc может слушать порт но выдавать Too Many Сonnections, nginx может выдавать вместо 200 ОК — Bad Gateway
А зачем это?
if (!( [ -z $(cat /var/test/serverlist) ]))
Если есть это
if [ -s /var/test/serverlist ]
Ну и на тему mail2sms было сказано уже много. Меня мегафоновский сервис потихоньку стал напрягать и я поднял таки jabberd. На телефоне бомбус, а уведомления шлются перловым скриптом sendxmpp примерно так
Ну в сервере менять заломало, это я понимаю.
Но раз уж для народа стараетесь, сделайте код чуть-чуть читабельнее, а то 4 вложенных скобки на ровном месте взрывают мозг ))
Посмотрите на это — ftp://ftp.kernel.org/pub/software/admin/mon
Проста в конфигурации, можно дописывать свои мониторы (у меня, в частности, дописан монитор проверки доступности Oracle DB's и syslog-сервера), имеет web-интерфейс, умеет отправлять почту, можно указать кол-во отсылок, после которых прекратить отправку…
А некоторые сервисы невозможно проверить простой доступностью портов. Например, у Oracle порт 1521 слушает листнер, который может жить и при упавшей базе. В данном случае доступность порта скажет лишь о том, что листнер жив.
у меня по серверам живут три мониторилки:
— monit следит за тем, чтобы нужный демон не упал
— munin мониторит количественные показатели различных подсистем
— smokeping присматривает за проблемами на канале и доступностью нужных хостов.
это конечно хорошо, но когда серверов/админов больше 2-х, то система из самописных скриптов не канает, лечится использованием zabbix/nagios (мне лично нравится zabbix), там и графики и история и оповещения sms/jabber/почта и т.д. и т.п.
начнем с того что порт помеченный nmap'om как закрытый не всегда таким является.
так же есть понятие filtered — этот порт может быть тоже как закрытым так и открытым.
так что данная схема не вполне жизнеспособна.
мониторить нужно клиентом мониторинга на самих серверах и снаружи — средствами мониторинга портов.
только в этой связке достигается нормальная функциональность.
nmap-то с каких пор стал простым и легким решением? тонна кода непонять к чему. вам правильно сказали про monitd. он мал, умел, тривиален и крайне функционален. а вы уши помоями залили и не желаете ничего слышать. проснитесь блин. я конечно любитель shell-скриптинга с binutils'ами, но это уж слишком.
Мне надо проверить — работает ли почтовый сервак и н ребутят ли местные админы сервис Exchange, nmap для этого подходит на 100%, а monit местами избыточен, а местами вообще не в тему =))
telnet $host 25 с соответствующим развитием подходит как проверка работы сервиса почты, впрочем как и http сервера с некоторыми поправками. собственно это и делает monitd или nagios.
пс: «бесполезно спорить со школотой: она все равно умней», — это про вас.
если вы не видите разница, то какое вам до этого дело? в соседнем топике другой долбодемон рассказывает про питон в системном администрировании, тут вы про нмап для мониторинга, — по такому маразму очень легко отсеивать долбоебов на собеседовании и расспазновать их среди рабочих сотрудников, и гнать ссаными тряпками из профессии. я вот подумал, что таке не стоит менять сложившийся порядок вещей. профессионалов должно быть как можно меньше, чтобы мы получали как можно больше. а вы продолжайте дальше делиться своими «гениальными» изобретениями между такими же как вы гениальными долбодемонами. счастья вам.
за использовании телнета для проверки портов — вот уж точно нужно гнать срамным веником из профессии. если хочется получать ответ то стоит использовать nc, я это знаю но мне НЕ НУЖЕН ОТВЕТ. мне нужен факт открытия порта, мне проще nmap'ом
Мои поздравления, вами только что сделан первый шаг на пути к забиксам и нагиосам!
Естественный этап эволюции выведет вас на путь использования этих систем, или же к написанию своей системы, переосмыслению написанного, и переходу к забиксам и нагиосам :)
да стоит у меня нагиос этот :)
Просто этот скрипт проверяет заодно УРБД 1ски у меня, хитросплетенным методом — и получаю я инфу одновременно и о 1с и о портах :)
спасибо. очень полезная информация — никогда бы не подумал мониторить с помощью nmap'а.
единственная проблема оставшаяся — как мониторить с удалённой, скорее всего linux/freebsd системы работает ли сервис или программа на винде, которая не открывает порт?
Например у меня 1ска пишет лог об синхронизации баз данных, и кидает его на сервак. Простенький парсер проверяет его на наличие этих самых ошибок и толкает ошибку в отдельный файл, который впоследствии хавает этот скрипт и если видит ошибки 1ски — присылает их вместе с закрытыми портами.
Мониторинг портов с уведомлением сисадмина