Я хочу создать проверку nagios, которая проверяет, доступен ли определенный файл на общедоступном веб-сайте и содержит ли этот файл определенную строку текста.
Из командной строки я выполнял:
./check_http -H 192.168.1.2 -u http://192.168.1.2/index.html -t 5 -s "Company Name"
Что проходит нормально и терпит неудачу, если я удалю файл или изменю текст, который он ищет.
Теперь я хочу включить это в мои файлы конфигурации nagios.
Я создаю хост с адресом указанного выше IP-адреса и создаю сервис следующим образом.
check_command check_http!-u /index.html -t 5 -s "Company Name"
Но если я изменю имя файла, которое он проверяет, или текст, который он проверяет, он все равно проходит, даже если я знаю, что они не существуют на веб-сайте.
Что я делаю не так? Я думаю, что должен тестировать другой файл или что-то еще, чтобы он всегда проходил.
Сначала вам нужно определить команду:
define command {
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$ \
-u $ARG1$ -t $ARG2$ -s $ARG3$
}
Затем для записи вашего хоста определите check_command следующим образом:
check_command check_http!/index.html!5!"Company Name"
Вы можете установить следующее в конфигурации Nagios, чтобы увидеть, какая команда на самом деле будет выполняться (см. Расширение полной команды):
debug_level=-1
debug_verbosity=2
debug_file=/usr/local/nagios/var/nagios.debug
Когда вы выполняете команду вручную, вы вызываете / usr / lib / nagios / плагины / check_http верный?
Когда ты звонишь check_http из конфигурации nagios он смотрит на /etc/nagios-plugins/config/http.cfg определить check_http аргументы команды.
Что вам нужно сделать, так это создать настраиваемую проверку, например:
define command {
command_name check_web_content
command_line $USER1$/check_http -H $HOSTADDRESS$ -t 60 -w 15 -c 45 -u $ARG1$ -s $ARG2$
}
Тогда в конфигурации вашей службы ваша команда check_command должна выглядеть примерно так:
check_command check_web_content!http://www.domain.com/index.html!"Text on site"