我有一个关于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
所以这里是一个问题:该怎么办? 是德某种check_https? 或类似的东西? 有没有人做过这样的检查?
非常感谢您的帮助,Fake4d
脚本吧! 使用wget或curl编写自己的插件
例如:
#!/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
你显然可以扩展它,例如检查返回页面的内容。
check_http当然适用于https网站,'-j CONNECT'是必不可less的,但你也需要一个-H ..而你的代理服务器被设置为通过https
例:
check_http -I PROXYHOST -p PROXYPORT -H FQDN -u RELATIVE-URI -S -j CONNECT -s STRING-TO-MATCH
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
我最近有同样的问题,所以我把wget的方法包装成一个Nagios插件https://github.com/SimpleFinance/nagios-check-http-proxy