monit-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Monit http error status


From: Martin Pala
Subject: Re: Monit http error status
Date: Thu, 8 Nov 2012 22:19:57 +0100

You can print (mirror) in the status script's output whatever you want (even the response code) - the output will be attached to the event. The exit status however need to match the test - your script returned 0, but the test was checking for 502 => it didn't match


On Nov 8, 2012, at 7:22 PM, "Houssan A. Hijazi" <address@hidden> wrote:

Hi,

thanks, Martin.. but i need  get the output from bash script.

Thanks

2012/11/8 Martin Pala <address@hidden>
Your script prints the http response code to standard output - but monit checks only the exist status, not the output.

You need to modify the script to return the http code like this:

--8<--
#!/bin/bash
exit `curl -sL -w "%{http_code}\\n" "http://www.mysite.com" -o /dev/null`
--8<--


On Nov 8, 2012, at 12:57 PM, "Houssan A. Hijazi" <address@hidden> wrote:

Hi,


my monit configuration:

check program webserverresponse with path /home/myhome/webserver_response.sh
    if status  == 502 then exec "/etc/init.d/nginx restart"
    if status  == 502 then alert
    depends on nginx

webserver_response.sh content:

#!/bin/bash
curl -sL -w "%{http_code}\\n" "http://www.mysite.com" -o /dev/null
exit $?

output:
address@hidden:~$ ./webserver_response.sh
502
--
address@hidden:~$ ./webserver_response.sh echo $?
502

and in log file: 

[PST Nov  8 03:53:29] debug    : 'webserverresponse' status check succeeded

thanks, Martin






2012/11/8 Martin Pala <address@hidden>
It seems that the test script doesn't return the 502 then.

Can you provide output of this?:
--8<--
/home/myhome/webserver_response.sh
echo $?
--8<--



On Nov 6, 2012, at 12:55 PM, Houssan A. Hijazi <address@hidden> wrote:

Hi,

in a logs i have always:

[PST Nov  6 03:53:13] debug    : 'nginx' zombie check succeeded [status_flag=0000]
[PST Nov  6 03:53:13] debug    : 'nginx' succeeded connecting to INET[www.mysite.org:80] via TCP
[PST Nov  6 03:53:13] debug    : 'nginx' succeeded testing protocol [HTTP] at INET[www.mysite.org:80] via TCP
[PST Nov  6 03:53:13] debug    : 'webserverresponse' status check succeeded

is always succeded the status of webserverresponse. My configuration are ok?


Thanks
2012/11/6 Martin Pala <address@hidden>
Hi,

can you run monit in debug mode ("-v" option) and check the logs?

Regards,
Martin


On Nov 5, 2012, at 6:09 PM, Houssan A. Hijazi <address@hidden> wrote:

Hi,

my config file:

check process nginx
  with pidfile /dh/nginx/servers/httpd-ps93737/var/logs/nginx.pid #Pid file for nginx in my case it located in /opt/nginx/logs/
  start program = "/etc/init.d/nginx start"
   stop program = "/etc/init.d/nginx stop"
   if failed host www.mysite.com port 80 protocol HTTP then restart #set your server IP that runs nginx
   if 5 restarts with 5 cycles then alert
check program webserverresponse with path /home/myhome/webserver_response.sh
#   if status  == 502 then restart
    if status  == 502 then exec "/usr/local/bin/monit restart nginx"
    depends on nginx

My /home/myhome/webserver_response.sh return 502, but not work, not restart nginx.

I did something wrong?

thanks

2012/11/2 Martin Pala <address@hidden>
You can keep the "depends on nginx" as well (if the parent nginx service will be restarted, it will suppress the child service test during the restart).


On Nov 2, 2012, at 10:16 PM, "Houssan A. Hijazi" <address@hidden> wrote:

Hi,

thanks for your hint.

i don't need put: depends on nginx ?

Thanks



2012/11/2 Martin Pala <address@hidden>
I'm sorry i provided wrong hint - the child service restart action doesn't trigger the parent's service restart (the action cascades from parents to children but bot vice versa).

The correct way to restart the nginx and prevent th race condition between the two checks is:

check program webserverresponse with path /home/myhome/webserver_response.sh
    if status  == 502 then exec "/usr/bin/monit restart nginx"

Regards,
Martin



On Nov 1, 2012, at 6:19 PM, "Houssan A. Hijazi" <address@hidden> wrote:

Hi,

this rule is not work:

check program webserverresponse with path /home/myhome/webserver_response.sh
    if status  == 502 then restart
    depends on nginx

if i run /home/myhome/webserver_response.sh in terminal it print 502 but the monit not restart.

Can you help me?

thanks

2012/11/1 Houssan A. Hijazi <address@hidden>
Thanks, Martin


2012/11/1 Martin Pala <address@hidden>
Hi,

the "check program" was added in Monit 5.3 ... you need to upgrade monit.

Regards,
Martin


On Nov 1, 2012, at 2:59 PM, "Houssan A. Hijazi" <address@hidden> wrote:

Hi,

i created the file like this:

#!/bin/bash
curl -o /dev/null --silent --head --write-out '%{http_code}\n' http://www.mysite.org

it return the http response code.

in monit configuration i do:

check process nginx
  with pidfile /dh/nginx/servers/httpd-myserver/var/logs/nginx.pid 
  start program = "/etc/init.d/nginx start"
   stop program = "/etc/init.d/nginx stop"
   if failed host www.mysite.org port 80 protocol HTTP then restart #set your server IP that runs nginx
   if 5 restarts with 5 cycles then alert
check program webserverresponse with path /home/myhome/webserver_response.sh
    if content == "502" then restart
    depends on nginx

When i try  start monit:

$ sudo /etc/init.d/monit start
Starting daemon monitor: Syntax error:
/etc/monit/conf.d/nginx.conf:7: Error: syntax error 'webserverresponse'

Monit version: 1:5.1.1-1

thanks


2012/10/31 Martin Pala <address@hidden>
Hi,

the default HTTP protocol test returns just failure if the HTTP code is error.

You can use the "check program" test with custom script and use curl/wget to get the http response code, for example (not tested):
/usr/local/bin/myhttptest.sh:
--8<--
#!/bin/bash
exit `curl -sL -w "%{http_code}\\n" "http://mymachine" -o /dev/null`
--8<--

and then connect it to Monit like this:
--8<--
check process apache with pidfile /var/run/apache.pid
    start program = ...
    stop program = ...

check program myhttptest with path /usr/local/bin/myhttptest.sh
    if status == 502 then restart
    depends on apache
--8<--



Another option is to use the generic send/expect test to write simple HTTP check and test the 502 response - generic example from the monit manual:
--8<--
 if failed host cave.persia.ir port 4040
    send "Open, Sesame!\r\n"
    expect "Please enter the cave\r\n"
    send "Shut, Sesame!\r\n"
    expect "See you later [A-Za-z ]+\r\n"
 then restart
--8<--


Regards,
Martin


On Oct 30, 2012, at 1:57 PM, Houssan A. Hijazi <address@hidden> wrote:

> Hi,
>
> i am on dreamhost using nginx with fastcgi, i need use monit to monitoring the nginx error, if error is 502 so restart.
>
> in my monit.log i have:
>
> HTTP error: Server returned status 502
>
> How i can see if host returned 502 error ?
>
> Thanks
>
> --
> To unsubscribe:
> https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


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



--
--
Houssan A. Hijazi 
Analista de Sistemas
www.lojasnoparaguai.com.br / www.libanovivo.org
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general


reply via email to

[Prev in Thread] Current Thread [Next in Thread]