Я только что установил nagios на серверную машину, но тут возникла критическая ошибка службы HTTP.
ошибка
HTTP CRITICAL - Socket timeout after 10 seconds
я искал для этой ошибки и получил предложение запустить check_http
с более длительным таймаутом. поэтому я добавил -t 20
в файле commands.cfg
, рядом с командой "check_http". перезапустил nagios, но я все еще получаю сообщение об ошибке (для нового тайм-аута).
Затем искал Больше. Ошибка кажется распространенной, поэтому я начинаю думать, что у меня может быть другая проблема.
Я попробовал запустить check_http самостоятельно:
root@srv$ /usr/libexec/nagios/check_http -H localhost -N -p 80 -t 1
HTTP OK: HTTP/1.1 200 OK - 846 bytes in 0.003 second response time |time=0.003080s;;;0.000000 size=846B;;;0
Ответ вроде нормальный, но я мало знаю о http.
Какие-нибудь подсказки?
EDIT: определение команды для check_http
, взято из /etc/nagios/objects/commands.cfg,
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
Я не уверен, как проверить, каковы значения переменных $ HOSTADDRESS $ и, что более важно, $ ARG1 $.
тогда определение услуги
define service{
use local-service ; Name of service template to use
host_name localhost
service_description HTTP
check_command check_http
notifications_enabled 1
}
дистрибутив - slackware 14.0 64bit.
Ваша команда проверки не соответствует вашему ручному тесту.
Если вы хотите, чтобы Nagios выполнял проверку так же, как вы тестируете его вручную, определение вашего сервиса должно быть таким, из-за того, как определена ваша команда проверки:
define service{
use local-service
host_name localhost
service_description HTTP
check_command check_http!-N -p 80 -t 1
notifications_enabled 1
}
... и вы также должны иметь "localhost" в качестве адреса этого хоста.
(Но тайм-аут в 1 секунду - это немного.)
Переменные, которые вы запрашиваете $ HOSTADDRESS $ $ HOSTNAME $ и т. Д., Похожи на запрос поля ADDRESS определения HOST, то же самое для $ SERVICEXXXX $. $ ARG1 $ - это то, что ожидается после! в определении вашей команды, как уже было сказано.
В данном конкретном случае:
check_command check_http!-N -p 80 -t 1
$ ARG1 $ = -N -p 80 -t 1 // - p 80 не требуется, так как 80 по умолчанию для http.
Надеюсь, это поможет вам понять макросы Nagios.
Плагин check_http просто выполняет эквивалент попытки загрузить веб-страницу с внешнего IP-адреса. Убедитесь, что вы можете загрузить веб-страницу в свой браузер и что плагин работает в командной строке с тем же определением хоста, которое вы указали в файлах конфигурации (FQDN или IP-номер).
Если вы действительно проверяете localhost, попробуйте 127.0.0.1, а также попробуйте использовать что-то вроде wget, чтобы проверить, действительно ли localhost разрешено загружать веб-страницы от самого себя (wget http://127.0.0.1
). Это также будет работать для других сайтов (wget http://www.yourdomain.com
).