Назад | Перейти на главную страницу

Nagios check_http дает сообщение «HTTP / 1.0 503 Service Unavailable» для сайта HAProxy'd

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

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

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

Я получаю следующую ошибку 503 при использовании моих nagios check_http check (или 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? Если да, то как я могу это решить?

check_http имеет параметр, называемый --sni

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

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

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

Это укажет ему на поиск имени хоста вместо 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$
        }

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

Использую команду:

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

И теперь дело в работе!