Я хотел бы также отслеживать второстепенные службы с помощью nagios, например, нашего GitLab-сервера или экземпляра phpMyAdmin. Есть ли способ просто создавать предупреждения вместо критических ошибок для некоторых служб?
На данный момент я использую следующее:
define service {
host_name localhost
use generic-service
service_description HTTP GitLab
check_command check_www!git.example.com!'/users/sign_in'
}
define command {
command_name check_www
command_line /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -e 'HTTP/1.1 200 OK' -u '$ARG2$'
}
В плагин отрицания существует именно по этой причине.
Используя параметр -c, вы можете изменить CRITICAL на WARNING. Например, вы можете сделать это:
define command {
command_name check_www_no_crit
command_line /usr/lib/nagios/plugins/negate -s -c WARNING /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -e 'HTTP/1.1 200 OK' -u '$ARG2$'
}
Проблема в том, что вы используете check_http
с -e
флаг, чтобы проверить код возврата. Этот плагин, похоже, не предлагает вариант возврата ПРЕДУПРЕЖДЕНИЯ (а не КРИТИЧЕСКОЙ) ошибки, если -e
проверка не удалась.
Вам нужно будет написать небольшую оболочку сценария оболочки вокруг check_http
который передал вывод без изменений, но проверил код возврата плагина, выполнил exit 1
если код возврата плагина был 2, и передал код возврата без изменений в противном случае.