Nagios check_http выдает «HTTP/1.0 503 Service Unavailable» для сайта HAProxy

Nagios check_http выдает «HTTP/1.0 503 Service Unavailable» для сайта HAProxy

Я задал этот вопрос на stackoverflow, но думаю, что он больше подойдет для этого места.

Не могу понять!

ОС: CentOS 6.6 (обновленная версия)

Я получаю следующую ошибку 503 при использовании check_httpпроверки Nagios (или Curl) для запроса SSL-сайта, обслуживаемого через HAProxy 1.5.

[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

Однако я могу зайти на сайт через любой браузер (200 OK), а также curl -I https://example.comс другого сервера:

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;

Сервер HAProxy работает на pfSense 2.2.

Я вижу, что HAProxy возвращает HTTP/1.0 для nagios и HTTP/1.1 из других мест. Так это мой check_httpплагин вызывает это или это curl?

Мой сервер просто не отправляет заголовок HOST? Если да, то как это решить?

решение1

check_http имеет опцию, которая называется--sni

Вам нужно использовать эту опцию.

решение2

Вы пробовали поставить опцию "-u" для URL? Я также использовал IP-адрес и имя хоста. У меня также есть HAProxy, и то же самое сообщение, что и у вас в начале.

Я использовал команду:

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

А теперь работа!

решение3

Вот как это исправить!

Вам необходимо отредактировать /usr/local/nagios/etc/objects/commands.cfg и изменить параметр https.«-И» до «-Н»

Это заставит его искать имя хоста вместо dip-адреса, указанного в вашем блоке http_check в конфигурации сервера: /usr/local/nagios/etc/servers/yourserver.cfg

от:

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

К:

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

Связанный контент