демон, следящий за демонами

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

демон, следящий за демонами

Непрочитанное сообщение GHopper » 2008-12-26 17:42:00

Здравствуйте!

Есть сервер. На нем критятся: microDC, pureftpd, fprobe, icecast, ices, mysqld, httpd ну и другие (не суть). Сегодня бац, упал microDC по неизвестным причинам. Вчера бух - упал icecast (в логах чисто). Ну, собственно, с любым может случиться. Я тут подумал, что было-бы неплхо напиать скрипт, который с определнной периодичностью проверяет наличие в процессах определенных демонов (из конфига) и при их отсутствии дергает их. Потом я подумал еще и придумал - я ведь не один такой умный!? Все велосипеды давным-давно изобретены!
Вопрос - как контроллировать нестабильные процессы?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
zar0ku1
сержант
Сообщения: 238
Зарегистрирован: 2008-02-29 4:38:05
Откуда: Южно-Сахалинск
Контактная информация:

Re: демон, следящий за демонами

Непрочитанное сообщение zar0ku1 » 2008-12-26 17:45:31

GHopper писал(а):Здравствуйте!

Есть сервер. На нем критятся: microDC, pureftpd, fprobe, icecast, ices, mysqld, httpd ну и другие (не суть). Сегодня бац, упал microDC по неизвестным причинам. Вчера бух - упал icecast (в логах чисто). Ну, собственно, с любым может случиться. Я тут подумал, что было-бы неплхо напиать скрипт, который с определнной периодичностью проверяет наличие в процессах определенных демонов (из конфига) и при их отсутствии дергает их. Потом я подумал еще и придумал - я ведь не один такой умный!? Все велосипеды давным-давно изобретены!
Вопрос - как контроллировать нестабильные процессы?
недавно читал про такое, сейчас вспомню как называется

вспомнил, читай http://www.lissyara.su/?id=1266
Последний раз редактировалось zar0ku1 2008-12-26 17:53:27, всего редактировалось 1 раз.
На фоне дураков четче хорошие люди прорисовываются.
(с) Граффити


GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: демон, следящий за демонами

Непрочитанное сообщение GHopper » 2008-12-26 19:22:34

выбрал monit. Функционал вроде пошире (не ошибся?).
У меня вопрос:

Код: Выделить всё

## 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
Все бы хорошо, да microDC не создает pid-файл (как я его настраивал: http://forum.lissyara.su/viewtopic.php?f=4&t=13629). Кто-нибудь в курсе, как monit отреагирует на такой демон? Что в конфиге писать? Или может кто-нибудь знает как сказать microDC создавать pid?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: демон, следящий за демонами

Непрочитанное сообщение zg » 2008-12-26 21:48:28

GHopper писал(а):Или может кто-нибудь знает как сказать microDC создавать pid?

Код: Выделить всё

pgrep microdc > /var/run/microdc.pid

GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: демон, следящий за демонами

Непрочитанное сообщение GHopper » 2008-12-27 7:22:20

Код: Выделить всё

[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]#

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: демон, следящий за демонами

Непрочитанное сообщение zg » 2008-12-27 7:40:40

Код: Выделить всё

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: демон, следящий за демонами

Непрочитанное сообщение Bormental » 2009-01-02 10:16:28

Если какойто процесс пида не создает ты можешь запускать его из своей программулины и сохранять пид свой программы например на перле напиши программу которая берет свой пид сохраняет в файл и затем запускает твою программу.. если она вылетит то управление вернется в твою программу которая отработает и завершиться т.е. по пиду проверяешь раз в минуту например через крон и если какогото процесса нет запускай опять, у меня на 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");
    };
};

не самый оптимальный кнечно скрипт, как гвоориться на скорую руку но работает ))) и время выполнения не критично, поэтому как есть так и остался, уже пол года пашет
:evil:

Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Re: демон, следящий за демонами

Непрочитанное сообщение Bormental » 2009-01-02 10:20:30

Можно и не через скрипт а например в скрипте поставить sleep(пауза) и чтоб он висел сам как демон, но тогда есть вероятность что демон контроля слетит а его контролировать некем...
:evil: