демон, следящий за демонами
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- мл. сержант
- Сообщения: 83
- Зарегистрирован: 2008-12-11 15:52:22
демон, следящий за демонами
Здравствуйте!
Есть сервер. На нем критятся: microDC, pureftpd, fprobe, icecast, ices, mysqld, httpd ну и другие (не суть). Сегодня бац, упал microDC по неизвестным причинам. Вчера бух - упал icecast (в логах чисто). Ну, собственно, с любым может случиться. Я тут подумал, что было-бы неплхо напиать скрипт, который с определнной периодичностью проверяет наличие в процессах определенных демонов (из конфига) и при их отсутствии дергает их. Потом я подумал еще и придумал - я ведь не один такой умный!? Все велосипеды давным-давно изобретены!
Вопрос - как контроллировать нестабильные процессы?
Есть сервер. На нем критятся: microDC, pureftpd, fprobe, icecast, ices, mysqld, httpd ну и другие (не суть). Сегодня бац, упал microDC по неизвестным причинам. Вчера бух - упал icecast (в логах чисто). Ну, собственно, с любым может случиться. Я тут подумал, что было-бы неплхо напиать скрипт, который с определнной периодичностью проверяет наличие в процессах определенных демонов (из конфига) и при их отсутствии дергает их. Потом я подумал еще и придумал - я ведь не один такой умный!? Все велосипеды давным-давно изобретены!
Вопрос - как контроллировать нестабильные процессы?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- zar0ku1
- сержант
- Сообщения: 238
- Зарегистрирован: 2008-02-29 4:38:05
- Откуда: Южно-Сахалинск
- Контактная информация:
Re: демон, следящий за демонами
недавно читал про такое, сейчас вспомню как называетсяGHopper писал(а):Здравствуйте!
Есть сервер. На нем критятся: microDC, pureftpd, fprobe, icecast, ices, mysqld, httpd ну и другие (не суть). Сегодня бац, упал microDC по неизвестным причинам. Вчера бух - упал icecast (в логах чисто). Ну, собственно, с любым может случиться. Я тут подумал, что было-бы неплхо напиать скрипт, который с определнной периодичностью проверяет наличие в процессах определенных демонов (из конфига) и при их отсутствии дергает их. Потом я подумал еще и придумал - я ведь не один такой умный!? Все велосипеды давным-давно изобретены!
Вопрос - как контроллировать нестабильные процессы?
вспомнил, читай http://www.lissyara.su/?id=1266
Последний раз редактировалось zar0ku1 2008-12-26 17:53:27, всего редактировалось 1 раз.
На фоне дураков четче хорошие люди прорисовываются.
(с) Граффити
(с) Граффити
- gloom
- лейтенант
- Сообщения: 738
- Зарегистрирован: 2008-03-13 16:29:12
- Откуда: UA
-
- мл. сержант
- Сообщения: 83
- Зарегистрирован: 2008-12-11 15:52:22
Re: демон, следящий за демонами
выбрал monit. Функционал вроде пошире (не ошибся?).
У меня вопрос:
Все бы хорошо, да microDC не создает pid-файл (как я его настраивал: http://forum.lissyara.su/viewtopic.php?f=4&t=13629). Кто-нибудь в курсе, как monit отреагирует на такой демон? Что в конфиге писать? Или может кто-нибудь знает как сказать microDC создавать pid?
У меня вопрос:
Код: Выделить всё
## Check that a process is running, in this case Apache, and that it respond
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
## and number of children. If the process is not running, monit will restart
## it by default. In case the service was restarted very often and the
## problem remains, it is possible to disable monitoring using the TIMEOUT
## statement. This service depends on another service (apache_bin) which
## is defined above.
#
# check process apache with pidfile /usr/local/apache/logs/httpd.pid
# start program = "/etc/init.d/httpd start"
# stop program = "/etc/init.d/httpd stop"
# if cpu > 60% for 2 cycles then alert
# if cpu > 80% for 5 cycles then restart
# if totalmem > 200.0 MB for 5 cycles then restart
# if children > 250 then restart
# if loadavg(5min) greater than 10 for 8 cycles then stop
# if failed host www.tildeslash.com port 80 protocol http
# and request "/monit/doc/next.php"
# then restart
# if failed port 443 type tcpssl protocol http
# with timeout 15 seconds
# then restart
# if 3 restarts within 5 cycles then timeout
# depends on apache_bin
# group server
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: демон, следящий за демонами
GHopper писал(а):Или может кто-нибудь знает как сказать microDC создавать pid?
Код: Выделить всё
pgrep microdc > /var/run/microdc.pid
-
- мл. сержант
- Сообщения: 83
- Зарегистрирован: 2008-12-11 15:52:22
Re: демон, следящий за демонами
Код: Выделить всё
[root]# ps -a | grep microdc2
55963 p4 Ss+ 0:38,38 /usr/local/bin/microdc2 -c /etc/microdc2.conf
55964 p4 IN+ 0:30,35 /usr/local/bin/microdc2 -c /etc/microdc2.conf
55965 p4 I+ 0:00,00 /usr/local/bin/microdc2 -c /etc/microdc2.conf
55966 p4 IN+ 0:49,54 /usr/local/bin/microdc2 -c /etc/microdc2.conf
55967 p4 I+ 0:00,00 /usr/local/bin/microdc2 -c /etc/microdc2.conf
61013 p1 S+ 0:00,00 grep microdc2
[root]# pgrep microdc2
55967
55966
55965
55964
55963
[root]#
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: демон, следящий за демонами
Код: Выделить всё
zg# ps -ax | grep microdc
55301 p0 S+ 0:00,01 microdc2
55302 p0 IN+ 0:00,00 microdc2
55303 p0 I+ 0:00,00 microdc2
55304 p0 I+ 0:00,00 microdc2
55305 p0 IN+ 0:00,00 microdc2
zg# pgrep microdc | sort -n | head -n 1
55301
zg#
- Bormental
- сержант
- Сообщения: 267
- Зарегистрирован: 2008-09-26 21:26:35
- Откуда: подмордорье
- Контактная информация:
Re: демон, следящий за демонами
Если какойто процесс пида не создает ты можешь запускать его из своей программулины и сохранять пид свой программы например на перле напиши программу которая берет свой пид сохраняет в файл и затем запускает твою программу.. если она вылетит то управление вернется в твою программу которая отработает и завершиться т.е. по пиду проверяешь раз в минуту например через крон и если какогото процесса нет запускай опять, у меня на squid и подсчет трафика стоит подобный скрипт
не самый оптимальный кнечно скрипт, как гвоориться на скорую руку но работает ))) и время выполнения не критично, поэтому как есть так и остался, уже пол года пашет
Код: Выделить всё
#!/usr/bin/perl
#контроль процессов
push @pr,['/var/proxy.pid','/usr/local/squid/sbin/proxy.perl &'];
push @pr,['/usr/local/squid/logs/squid.pid','/usr/local/squid/sbin/squid -D'];
for(my $i=0;$i<=$#pr;$i++){
print "$pr[$i][0] $pr[$i][1]\n";
open(C,"<$pr[$i][0]");
my $rc;
chomp($rc=<C>);
my $info=`ps $rc`;
my @p=split(/\n/,$info);
print "$rc\n";
if($p[1]){}else{
open(F,">>/var/control.log");
chomp($fk=`date +%d%m%y_%H%M%S`);
$fk=$fk." demon $pr[$i][1] down\n";
print F $fk;
system("$pr[$i][1] >> /var/control.log");
};
};

- Bormental
- сержант
- Сообщения: 267
- Зарегистрирован: 2008-09-26 21:26:35
- Откуда: подмордорье
- Контактная информация:
Re: демон, следящий за демонами
Можно и не через скрипт а например в скрипте поставить sleep(пауза) и чтоб он висел сам как демон, но тогда есть вероятность что демон контроля слетит а его контролировать некем...
