Nagios check_http gibt „HTTP/1.0 503 Service Unavailable“ für HAProxy-Site aus

Nagios check_http gibt „HTTP/1.0 503 Service Unavailable“ für HAProxy-Site aus

Ich habe dies auf Stackoverflow gefragt, aber ich denke, es passt besser hierher.

Ich komme nicht dahinter!

Betriebssystem: CentOS 6.6 (aktuell)

Ich erhalte den folgenden 503-Fehler, wenn ich meine Nagios- check_httpPrüfung (oder Curl) verwende, um eine SSL-Site abzufragen, die über HAProxy 1.5 bereitgestellt wird.

[root@nagios ~]# /usr/local/nagios/libexec/check_http -v -H example.com -S1
GET / HTTP/1.1
User-Agent: check_http/v2.0 (nagios-plugins 2.0)
Connection: close
Host: example.com


https://example.com:443/ is 212 characters
STATUS: HTTP/1.0 503 Service Unavailable
**** HEADER ****
Cache-Control: no-cache
Connection: close
Content-Type: text/html
**** CONTENT ****
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

HTTP CRITICAL: HTTP/1.0 503 Service Unavailable - 212 bytes in 1.076 second response time |time=1.075766s;;;0.000000 size=212B;;;0
[root@nagios ~]# curl -I https://example.com
HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html

Ich kann jedoch über jeden Browser problemlos auf die Site zugreifen (200 OK) und auch curl -I https://example.comvon einem anderen Server aus:

root@localhost:~# curl -I https://example.com
HTTP/1.1 200 OK
Date: Wed, 18 Feb 2015 14:36:51 GMT
Server: Apache/2.4.6
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Last-Modified: Wed, 18 Feb 2015 14:36:52 GMT
Content-Type: text/html; charset=UTF-8
Strict-Transport-Security: max-age=31536000;

Der HAProxy-Server läuft auf pfSense 2.2.

Ich sehe, dass HAProxy ein HTTP/1.0 für Nagios und HTTP/1.1 von woanders zurückgibt. Ist es also mein check_httpPlugin, das das verursacht, oder ist es das curl?

Sendet mein Server einfach nicht den HOST-Header? Wenn ja, wie kann ich das beheben?

Antwort1

check_http hat eine Option namens--sni

Sie müssen diese Option nutzen

Antwort2

Haben Sie versucht, die Option „-u“ für die URL zu verwenden? Ich habe auch die IP-Adresse und den Hostnamen verwendet. Ich habe auch einen HAProxy und dieselbe Meldung wie Sie am Anfang.

Ich habe den Befehl verwendet:

./check_http -H example.com -I 8.8.8.8 -p 80 -u http://example.com/

Und jetzt geht es an die Arbeit!

Antwort3

So beheben Sie das Problem!

Sie müssen die Datei /usr/local/nagios/etc/objects/commands.cfg bearbeiten und das https-Argument ändern.„-I“ bis „-H“

Dadurch wird es angewiesen, nach dem Hostnamen statt einer DIP-Adresse zu suchen, die in Ihrem http_check-Block in der Serverkonfiguration angegeben ist: /usr/local/nagios/etc/servers/yourserver.cfg

aus:

    # 'check_http' command definition
define command{
        command_name    check_http
        command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
        }

Zu:

    # 'check_http' command definition
define command{
        command_name    check_http
        command_line    $USER1$/check_http -H $HOSTADDRESS$ $ARG1$
        }

verwandte Informationen