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

Как заставить check_http -r искать ровно n экземпляров строки

У меня есть URL-адрес, который я могу запросить, чтобы убедиться, что мое приложение работает правильно. Результаты примерно такие, как показано ниже. Проверка того, что в строке есть "ok", не говорит мне, что все в порядке, мне нужно знать, что это происходит 3 раза.

{"host": "host-name", "http": {"status": "ok"}, "mysql": {"status": "ok"}, "mongo": {"status": "ok "}}

Я пытаюсь выполнить следующую команду, но, полагаю, я неправильно выполняю регулярное выражение, может кто-нибудь предложить?

/ usr / lib / nagios / plugins / check_http имя-хоста -4 -w 3 -c 5 -u '/ app / system / status' -r 'ok {3}' -p 8080

дает мне

HTTP CRITICAL: HTTP / 1.1 200 OK - шаблон не найден - 245 байт за время отклика 0,011 секунды | время = 0,010820 с; 3,000000; 5,000000; 0,000000 size = 245B ;;; 0

Регулярное выражение «ok {3}» будет соответствовать букве «o», за которой следует ровно 3 «k». Я не помню, насколько nagios совместим с pcre, поэтому они могут работать:

ok.*ok.*ok

или

(ok.*?){3}

Какой смысл проверять все услуги одним чеком? Скажем, httpd прощается, и ваше приложение не будет доступно без него.

Вы можете проверить весь ответ на странице:

-s, --string = СТРОКА

String to expect in the content
/usr/lib/nagios/plugins/check_http host-name -4 -w 3 -c 5 -u '/app/system/status' -s "{"host":"host-name","http":{"status":"ok"},"mysql":{"status":"ok"},"mongo":{"status":"ok"}}"