Page 1 of 1

Error 502 Bad gateway not tracked

Posted: Tue May 12, 2015 10:02 am
by RockerMan
Hi

An interesting situation: a website is hosted at the provider. Configured on the two web services, Nginx and Apache. Apache is behind nginx. Ports 80 and 443 Nginx included on monitoring NagiosXI. But the Apache and its ports do not have the opportunity to take in monitoring Nagios, the provider does not give access to it. One of these days fell on a hosting service Apache, ports Nginx show that everything is OK, and the request to the web site gives an error "502 Bad gateway". So the question is - How can I take on monitoring Nagios Apache ports beyond the Nginx? Maybe it is possible to take in the monitoring of response "502 Bad gateway"?

Best Regards
Valery

Re: Error 502 Bad gateway not tracked

Posted: Tue May 12, 2015 10:15 am
by tmcdonald
Are you saying that the nginx and apache websites are somehow linked, and you want to use the 502 status on the nginx pages as an indication that apache is down?

If so, there is a switch you can add to check_http to check for a specific HTTP code:

Code: Select all

./check_http -H <hostaddress> -e 200
That will show Critical if any status other than 200 is given. Otherwise, you can search for "502 Bad gateway" in the body like so:

Code: Select all

./check_http -H <hostaddress> -r "502 Bad gateway" --invert-regex
This is saying "I expect this string to be present (OK) to alert if it is not (Critical)". This allows you to get around the possibility that the page might display a 502 error but return a 200 HTTP code, in cases where the front-end nginx is pulling from the back-end apache.

Re: Error 502 Bad gateway not tracked

Posted: Wed May 13, 2015 2:10 am
by RockerMan
"Are you saying that the nginx and apache websites are somehow linked, and you want to use the 502 status on the nginx pages as an indication that apache is down?"
Yes exactly. Nginx used as a balancer requests.
-
On request

Code: Select all

./check_http -H <hostaddress> -e 200
gives the answer

Code: Select all

COMMAND: /usr/local/nagios/libexec/check_http -H <hostaddress> -e 200
OUTPUT: HTTP CRITICAL - Invalid HTTP response received from host: HTTP/1.1 301 Moved Permanently
despite the fact that the site is working normally.

On request

Code: Select all

./check_http -H <hostaddress> -r "502 Bad gateway" --invert-regex
gives the answer

Code: Select all

COMMAND: /usr/local/nagios/libexec/check_http -H <hostaddress> -r "502 Bad gateway" --invert-regex
OUTPUT: HTTP OK: HTTP/1.1 301 Moved Permanently - 509 bytes in 0.010 second response time |time=0.010403s;;;0.000000 size=509B;;;0
although the site is working and not an error "502 Bad gateway"
-

It turns out that the first method does not work, and the second way - the answer is and must be at the same time having received an request?

Re: Error 502 Bad gateway not tracked

Posted: Wed May 13, 2015 9:13 am
by jdalrymple
Take a look at this thread. This individual had a similar problem to yours, 502 didn't exhibit for him the expected results when using check_http - but when we do it internally it works fine.

Code: Select all

[jdalrymple@localhost libexec]$ curl http://www.somewebsite.org | head -10
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" lang="en-US">
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" lang="en-US">
<![endif]-->
<!--[if !(IE 7) & !(IE 8)]><!-->
<html lang="en-US">
<!--<![endif]-->
100  7854    0  7854    0     0  14997      0 --:--:-- --:--:-- --:--:-- 17261
curl: (23) Failed writing body (338 != 1455)
[jdalrymple@localhost libexec]$ ./check_http -H www.somewebsite.org
HTTP OK: HTTP/1.1 200 OK - 11795 bytes in 0.363 second response time |time=0.363233s;;;0.000000 size=11795B;;;0
I killed the apache webserver behind the nginx reverse proxy here

Code: Select all

[jdalrymple@localhost libexec]$ curl http://www.somewebsite.org | head -10
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
172   172  172   172    0     0   1774      0 --:--:-- --:--:-- --:--:--  7478
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
[jdalrymple@localhost libexec]$ ./check_http -H www.somewebsite.org
HTTP CRITICAL: HTTP/1.1 502 Bad Gateway - 323 bytes in 0.076 second response time |time=0.075966s;;;0.000000 size=323B;;;0
Note - no fancy code, no arguments necessary.

Re: Error 502 Bad gateway not tracked

Posted: Thu May 14, 2015 9:06 am
by RockerMan
Ok
I read the debate on your link necessarily.
Regarding my case - it seems that the second way of working! Tonight received an SMS message about the status of the Apache "Critical".

Code: Select all

HTTP_Apache	CRITICAL	05-14-2015 03:10:24	sms_valery	notify-service-by-sms 	HTTP CRITICAL: HTTP/1.1 502 Bad Gateway - 323 bytes in 0.011 second response time
Then he received a SMS message that everything is OK.

Code: Select all

HTTP_Apache	OK	05-14-2015 03:19:19	sms_valery	notify-service-by-sms	  HTTP OK: HTTP/1.1 301 Moved Permanently - 509 bytes in 0.104 second response time
Thank you for the help
Topic can be closed

Best Regards
Valery