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" <[email protected]> wrote:

> Hi,
> 
> thanks, Martin.. but i need  get the output from bash script.
> 
> Thanks
> 
> 2012/11/8 Martin Pala <[email protected]>
> 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" <[email protected]> 
> 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:
>> user@ps90700:~$ ./webserver_response.sh
>> 502
>> --
>> user@ps90700:~$ ./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 <[email protected]>
>> 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 <[email protected]> 
>> 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 <[email protected]>
>>> 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 <[email protected]> 
>>> 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 <[email protected]>
>>>> 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" <[email protected]> 
>>>> wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> thanks for your hint.
>>>>> 
>>>>> i don't need put: depends on nginx ?
>>>>> 
>>>>> Thanks
>>>>> 
>>>>> 
>>>>> 
>>>>> 2012/11/2 Martin Pala <[email protected]>
>>>>> 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" <[email protected]> 
>>>>> 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 <[email protected]>
>>>>>> Thanks, Martin
>>>>>> 
>>>>>> 
>>>>>> 2012/11/1 Martin Pala <[email protected]>
>>>>>> 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" <[email protected]> 
>>>>>> 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 <[email protected]>
>>>>>>> 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 <[email protected]> 
>>>>>>> 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

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

Reply via email to