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

Есть ли возможность отслеживать https сайты в nagios через прокси?

У меня есть небольшой вопрос об инструменте nagios:

Есть ли возможность отслеживать https сайты в nagios через прокси? Что означает, что я хочу отслеживать, может ли мой прокси-сервер обращаться к некоторым https-ресурсам в Интернете? Думаю, с этой командой проблем не возникнет:

/usr/lib/nagios/plugins/check_http -j CONNECT -u "https://banking.postbank.de" -S

Но у нашего сервера nagios нет прямого доступа в Интернет, и эта команда не работает .. (установлен openssl) Я думаю, что опция "-S" не работает с прокси ..:

  /usr/lib/nagios/plugins/check_http -I 10.46.4.200 -p 8080 -j CONNECT -u "https://banking.postbank.de" -S

Возникает вопрос: что делать? Это какой-то check_https? или что-то вроде того? Кто-нибудь делал такую ​​проверку?

Большое спасибо за помощь, Fake4d

сценарий это! напишите свой собственный плагин, используя wget или завиток

например:

#!/bin/bash
wget -t 5 --timeout 30 -O /dev/null -o /dev/null -e http_proxy=your.proxy:port https://www.google.com
if [ $? -eq 0 ] ; then
  echo all ok
  exit 0
else
  echo not ok
  exit 2
fi

вы, очевидно, можете расширить его, например, чтобы проверить содержимое возвращаемой страницы.

Небольшое улучшение ответа pQd:

#!/bin/bash
URL=$1
RESPONSE_CODE=${2:-200}
TIMEOUT=${3:-10}

case $RESPONSE_CODE in
401)
  EXPECTED_RETURN_CODE=6
  ;;
200)
  EXPECTED_RETURN_CODE=0
  ;;
*)
  EXPECTED_RETURN_CODE=0
  ;;
esac


start=`date +%s`
wget -t 1 --timeout ${TIMEOUT} -O /dev/null -o /dev/null  -e http_proxy=PUTYOURPROXYHERE:8080 ${URL}
WGET_RETURN_CODE=$?
end=`date +%s`

PERFDATA="time=$(expr ${end} - ${start})s"

if [ ${WGET_RETURN_CODE} -eq ${EXPECTED_RETURN_CODE} ] ; then
  echo "HTTP OK: HTTP/1.1 ${RESPONSE_CODE} OK for ${URL}|${PERFDATA}"
  exit 0
else
  echo "HTTP CRITICAL: Did not receive HTTP/1.1 ${RESPONSE_CODE} for ${URL}|${PERFDATA}"
  exit 2
fi

Измените прокси-сервер и назовите его так:

$ bash check_http_proxy.sh https://stackoverflow.com/ 200 3
HTTP OK: HTTP/1.1 200 OK for https://stackoverflow.com/|time=1s
or
$ bash check_http_proxy.sh http://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx 401 10
HTTP OK: HTTP/1.1 401 OK for http://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx|time=0s

check_http, безусловно, работает для веб-сайтов https, и '-j CONNECT' имеет важное значение, поскольку у вас уже есть, но вам также понадобится -H .. И ваш прокси-сервер настроен на сквозной https

пример:

check_http -I PROXYHOST -p PROXYPORT -H FQDN -u RELATIVE-URI -S -j CONNECT -s STRING-TO-MATCH

  • У меня были лучшие результаты с использованием относительного uri, а не полного URL ... например: '/ vendors' вместо 'http://example.com/vendors'
  • Конечно, -s есть только в том случае, если вы пытаетесь сопоставить определенную строку в возвращаемом содержимом
  • Наконец, есть среды, в которых лучше всего обернуть wget или curl в скрипт.

У меня недавно была такая же проблема, поэтому я обернул подход wget в плагин Nagios https://github.com/SimpleFinance/nagios-check-http-proxy