Q: Arbitrary program status for process check?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Q: Arbitrary program status for process check?

Steven Christensen
Hello,

Long time monit user, and I really love it.

I have the following (equivalent) process monitor entry:

=====================================
check process xyzzy matching "xyzzy"
      start program "/root/start_xyzzy.sh"
      stop program /usr/bin/pkill -f "xyzzy"
=====================================

But sometimes the process can exist but it isn't doing what it needs to do. I have another script which checks if xyzzy is actually working, and returns a status depending on the results of the check.

So I'd like something that looks like this (note last line):
=====================================
check process xyzzy matching "xyzzy"
      start program "/root/start_xyzzy.sh"
      stop program /usr/bin/pkill -f "xyzzy"
      if program "/root/check_xyzzy.sh" status != 0 then restart
=====================================

It's the last line I don't know how to achieve. Are there any suggestions?

Thanks - Steven


--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Szépe Viktor
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Steven Christensen
Hi Viktor,

Thank you for your examples. You have a very complex monit configuration, and I can learn a lot.

However, I tried the "depends" implementation, but it did not work when trying to start the service.

If my "xyzzy" service depends on "check_xyzzy" then it will not be able to start, because before xyzzy is able to start. monit wants check_xyzzy to work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a "chicken and egg" problem.

-- Steven



On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general

--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Szépe Viktor
Yes, I have that chicken&egg problem also.
Does anyone have a suggestion?


Idézem/Quoting Steven Christensen <[hidden email]>:

> Hi Viktor,
>
> Thank you for your examples. You have a very complex monit configuration,
> and I can learn a lot.
>
> However, I tried the "depends" implementation, but it did not work when
> trying to start the service.
>
> If my "xyzzy" service depends on "check_xyzzy" then it will not be able to
> start, because before xyzzy is able to start. monit wants check_xyzzy to
> work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a
> "chicken and egg" problem.
>
> -- Steven
>
>
>
> On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
>
>> Idézem/Quoting Steven Christensen <[hidden email]>:
>>
>> > Hello,
>> >
>> > Long time monit user, and I really love it.
>> >
>> > I have the following (equivalent) process monitor entry:
>> >
>> > =====================================
>> > check process xyzzy matching "xyzzy"
>> >       start program "/root/start_xyzzy.sh"
>> >       stop program /usr/bin/pkill -f "xyzzy"
>> > =====================================
>> >
>> > But sometimes the process can exist but it isn't doing what it needs to
>> do.
>> > I have another script which checks if xyzzy is actually working, and
>> > returns a status depending on the results of the check.
>> >
>> > So I'd like something that looks like this (note last line):
>> > =====================================
>> > check process xyzzy matching "xyzzy"
>> >       start program "/root/start_xyzzy.sh"
>> >       stop program /usr/bin/pkill -f "xyzzy"
>> >       if program "/root/check_xyzzy.sh" status != 0 then restart
>> > =====================================
>> >
>> > It's the last line I don't know how to achieve. Are there any
>> suggestions?
>> >
>> > Thanks - Steven
>>
>> Hello Steven!
>>
>> I use tiny script with "depends on"
>>
>> https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
>> to check on services
>>
>> https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11
>>
>>
>> SZÉPE Viktor, honlap üzemeltetés / Running your application
>> https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
>> --
>> ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
>> Budapest, III. kerület
>>
>>
>>
>>
>>
>>
>> --
>> To unsubscribe:
>> https://lists.nongnu.org/mailman/listinfo/monit-general



SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Noel Jones
In reply to this post by Steven Christensen
You have it backwards.  check_xyzzy depends on xyzzy.

First run the process, then run the script to see if the process is working.


  -- Noel Jones

On 10/8/2018 6:08 PM, Steven Christensen wrote:
Hi Viktor,

Thank you for your examples. You have a very complex monit configuration, and I can learn a lot.

However, I tried the "depends" implementation, but it did not work when trying to start the service.

If my "xyzzy" service depends on "check_xyzzy" then it will not be able to start, because before xyzzy is able to start. monit wants check_xyzzy to work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a "chicken and egg" problem.

-- Steven



On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general



--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Steven Christensen
Noel,

I see what you mean.

But if check_xyzzy fails, how can I cause xyzzy to be restarted? I don't know of any way to have one check cause another check to be restarted.

I was thinking more, and this may not be solvable with separate check statements.
I may have to combine both the checking of the process and checking of the actual functioning of the feature in a single unified script, like this:

=====================================
check program xyzzy with path "/root/check_xyzzy.sh"
      start program "/root/start_xyzzy.sh"
      stop program /usr/bin/pkill -f "xyzzy"
      if status != 0 then restart
=====================================

where check_xyzzy.sh checks 2 things:
1) ps -ef | fgrep "xyzzy"     -- to make sure the process exists
2) check the function that xyzzy provides, to make sure the function is working

It would return a bad status if either of these fails.

-- Steven


On Tue, Oct 9, 2018 at 11:22 AM Noel <[hidden email]> wrote:
You have it backwards.  check_xyzzy depends on xyzzy.

First run the process, then run the script to see if the process is working.


  -- Noel Jones

On 10/8/2018 6:08 PM, Steven Christensen wrote:
Hi Viktor,

Thank you for your examples. You have a very complex monit configuration, and I can learn a lot.

However, I tried the "depends" implementation, but it did not work when trying to start the service.

If my "xyzzy" service depends on "check_xyzzy" then it will not be able to start, because before xyzzy is able to start. monit wants check_xyzzy to work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a "chicken and egg" problem.

-- Steven



On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general

--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Noel Jones
If the check script fails, have it kill the program.  Then the program check will notice it's not running and restart it.

Or you can write everything into one script...


  -- Noel Jones


On 10/9/2018 1:05 PM, Steven Christensen wrote:
Noel,

I see what you mean.

But if check_xyzzy fails, how can I cause xyzzy to be restarted? I don't know of any way to have one check cause another check to be restarted.

I was thinking more, and this may not be solvable with separate check statements.
I may have to combine both the checking of the process and checking of the actual functioning of the feature in a single unified script, like this:

=====================================
check program xyzzy with path "/root/check_xyzzy.sh"
      start program "/root/start_xyzzy.sh"
      stop program /usr/bin/pkill -f "xyzzy"
      if status != 0 then restart
=====================================

where check_xyzzy.sh checks 2 things:
1) ps -ef | fgrep "xyzzy"     -- to make sure the process exists
2) check the function that xyzzy provides, to make sure the function is working

It would return a bad status if either of these fails.

-- Steven


On Tue, Oct 9, 2018 at 11:22 AM Noel <[hidden email]> wrote:
You have it backwards.  check_xyzzy depends on xyzzy.

First run the process, then run the script to see if the process is working.


  -- Noel Jones

On 10/8/2018 6:08 PM, Steven Christensen wrote:
Hi Viktor,

Thank you for your examples. You have a very complex monit configuration, and I can learn a lot.

However, I tried the "depends" implementation, but it did not work when trying to start the service.

If my "xyzzy" service depends on "check_xyzzy" then it will not be able to start, because before xyzzy is able to start. monit wants check_xyzzy to work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a "chicken and egg" problem.

-- Steven



On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general



--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general
Reply | Threaded
Open this post in threaded view
|

Re: Q: Arbitrary program status for process check?

Steven Christensen
Noel,

>> If the check script fails, have it kill the program.  Then the program check will notice it's not running and restart it.

I like that idea! I should probably use an "EVERY" qualifier on the check script statement to stay away from a race condition and give xyzzy some time to get up and get established.

Thanks,

    Steven



On Tue, Oct 9, 2018 at 5:11 PM Noel <[hidden email]> wrote:
If the check script fails, have it kill the program.  Then the program check will notice it's not running and restart it.

Or you can write everything into one script...


  -- Noel Jones


On 10/9/2018 1:05 PM, Steven Christensen wrote:
Noel,

I see what you mean.

But if check_xyzzy fails, how can I cause xyzzy to be restarted? I don't know of any way to have one check cause another check to be restarted.

I was thinking more, and this may not be solvable with separate check statements.
I may have to combine both the checking of the process and checking of the actual functioning of the feature in a single unified script, like this:

=====================================
check program xyzzy with path "/root/check_xyzzy.sh"
      start program "/root/start_xyzzy.sh"
      stop program /usr/bin/pkill -f "xyzzy"
      if status != 0 then restart
=====================================

where check_xyzzy.sh checks 2 things:
1) ps -ef | fgrep "xyzzy"     -- to make sure the process exists
2) check the function that xyzzy provides, to make sure the function is working

It would return a bad status if either of these fails.

-- Steven


On Tue, Oct 9, 2018 at 11:22 AM Noel <[hidden email]> wrote:
You have it backwards.  check_xyzzy depends on xyzzy.

First run the process, then run the script to see if the process is working.


  -- Noel Jones

On 10/8/2018 6:08 PM, Steven Christensen wrote:
Hi Viktor,

Thank you for your examples. You have a very complex monit configuration, and I can learn a lot.

However, I tried the "depends" implementation, but it did not work when trying to start the service.

If my "xyzzy" service depends on "check_xyzzy" then it will not be able to start, because before xyzzy is able to start. monit wants check_xyzzy to work, but check_xyzzy doesn't succeed, because xyzzy isn't running. It is a "chicken and egg" problem.

-- Steven



On Sat, Oct 6, 2018 at 2:03 AM SZÉPE Viktor <[hidden email]> wrote:
Idézem/Quoting Steven Christensen <[hidden email]>:

> Hello,
>
> Long time monit user, and I really love it.
>
> I have the following (equivalent) process monitor entry:
>
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
> =====================================
>
> But sometimes the process can exist but it isn't doing what it needs to do.
> I have another script which checks if xyzzy is actually working, and
> returns a status depending on the results of the check.
>
> So I'd like something that looks like this (note last line):
> =====================================
> check process xyzzy matching "xyzzy"
>       start program "/root/start_xyzzy.sh"
>       stop program /usr/bin/pkill -f "xyzzy"
>       if program "/root/check_xyzzy.sh" status != 0 then restart
> =====================================
>
> It's the last line I don't know how to achieve. Are there any suggestions?
>
> Thanks - Steven

Hello Steven!

I use tiny script with "depends on"
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban_script
to check on services
https://github.com/szepeviktor/debian-server-tools/blob/master/monitoring/monit/services/fail2ban#L11


SZÉPE Viktor, honlap üzemeltetés / Running your application
https://github.com/szepeviktor/debian-server-tools/blob/master/CV.md
--
ügyelet/hotline: +36-20-4242498  [hidden email]  skype: szepe.viktor
Budapest, III. kerület






--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general

--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general