2016-05-14 3 views
0

У меня есть monit, настроенный для проверки того, что мой IRCd и их службы запущены. Недавно экземпляр, который запускает все это, перезагрузился, и он не выполнил свою работу.Monit говорит, что метод начала не определен, несмотря на то, что он так

Он был настроен на запуск при загрузке.

[[email protected] ec2-user]# chkconfig --list monit 
monit   0:off 1:off 2:on 3:on 4:on 5:on 6:off 

Файл управления

[[email protected] ec2-user]# cat /etc/monit.conf 
set httpd port 2812 
    allow 127.0.0.1 
set daemon 60 
    include /etc/monit.d/* 

check process ircd with pidfile /home/ec2-user/inspircd/run/pid 
    start program = "/usr/bin/perl /home/ec2-user/inspircd/run/inspircd start" 
    as uid "ec2-user" and gid "ec2-user" 
    with timeout 30 seconds 

check process services with pidfile /home/ec2-user/anope/run/data/services.pid 
    depends on ircd 
    start program = "/bin/sh /home/ec2-user/anope/run/bin/anoperc start" 
    as uid "ec2-user" and gid "ec2-user" 
    with timeout 30 seconds 

Синтаксис это выглядит хорошо в соответствии с документацией ...

<START | STOP | RESTART> [PROGRAM] = "program" 
    [[AS] UID <number | string>] 
    [[AS] GID <number | string>] 
    [[WITH] TIMEOUT <number> SECOND(S)] 

И делает чек на нем говорит тот же

[[email protected] ~]$ sudo monit -t 
Control file syntax OK 

Журналы показывают, что t методы старта не определены для этих контролируемых процессов, хотя!

[UTC May 14 04:39:51] error : 'ircd' process is not running 
[UTC May 14 04:39:51] error : monit: Start or stop method not defined -- process ircd 
[UTC May 14 04:39:51] error : 'services' process is not running 
[UTC May 14 04:39:51] error : monit: Start or stop method not defined -- process services 

Запуск процессов вручную через Monit работает по какой-то причине

[[email protected] ec2-user]# monit start ircd 
[[email protected] ec2-user]# monit status 
The Monit daemon 5.2.5 uptime: 7h 14m 

Process 'ircd' 
    status       running 
    monitoring status     monitored 
    pid        26483 
    parent pid      1 
    uptime       3m 
... 
    data collected     Sat May 14 02:49:57 2016 

Process 'services' 
    status       running 
    monitoring status     monitored 
    pid        26488 
    parent pid      1 
    uptime       3m 
... 
    data collected     Sat May 14 02:49:57 2016 

что довольно странно. Когда я останавливаю эти проверенные процессы и перезапускает monit с включенным протоколом отладки, я вижу, что он сообщает о стартовых программах.

Process Name   = ircd 
Pid file    = /home/ec2-user/inspircd/run/pid 
Monitoring mode  = active 
Start program  = '/home/ec2-user/inspircd/run/inspircd start' as uid 500 as gid 500 timeout 30 second(s) 
Existence   = if does not exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert 
Pid     = if changed 1 times within 1 cycle(s) then alert 
Ppid     = if changed 1 times within 1 cycle(s) then alert 

Process Name   = services 
Pid file    = /home/ec2-user/anope/run/data/services.pid 
Monitoring mode  = active 
Start program  = '/home/ec2-user/anope/run/bin/anoperc start' as uid 500 as gid 500 timeout 30 second(s) 
Existence   = if does not exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert 
Depends on Service = ircd 
Pid     = if changed 1 times within 1 cycle(s) then alert 
Ppid     = if changed 1 times within 1 cycle(s) then alert 

Любая идея, что здесь происходит в имени Глоба?

ответ

0

Согласно документированному поведению Monit, метод остановки также должен быть определен для не запущенных процессов, чтобы быть запущенно надлежащим образом

В активном режиме (по умолчанию), монит будут проактивно отслеживать услуги и в случае возникновения проблем повышать оповещения и/или перезапустить службу.

- Monit docs; service methods

Действие, которое выполняется Monit, когда процесс не запущен всегда был «перезагрузка», но так как не было автономной «программа перезагрузки» (до Monit 5.7), не остановить + была использована начальная последовательность.

- Monit issues; restart instead of start when a process is not running

Таким образом, решение и было добавить stop program строку проверяемых процессов в файле управления. Очевидно, что если вы используете версию> = 5.7, вы также можете использовать restart program

Смежные вопросы