是否可以通过代理在 nagios 中监控 https 站点?

是否可以通过代理在 nagios 中监控 https 站点?

我对 nagios 工具有一个小疑问:

是否有可能通过代理在 nagios 中监控 https 站点?这意味着我想监控我的代理是否可以访问互联网上的某些 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

所以问题是:该怎么办? der 是某种 check_https 吗?或者类似的东西?有人做过这样的检查吗?

非常感谢你的帮助,Fake4d

答案1

编写脚本!使用以下方式编写自己的插件获得或者卷曲

例如:

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

您显然可以扩展它,例如检查返回页面的内容。

答案2

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 包装在脚本中

答案3

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

答案4

我最近遇到了同样的问题,所以我将 wget 方法包装到了 Nagios 插件中https://github.com/SimpleFinance/nagios-check-http-proxy

相关内容