From 3191e354603fd02cb2f8ebed2f400273f3bae85b Mon Sep 17 00:00:00 2001 From: rti Date: Sat, 4 Jun 2011 23:23:17 +0200 Subject: [PATCH] Initial version --- plugins/other/healthcheck_url | 177 ++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100755 plugins/other/healthcheck_url diff --git a/plugins/other/healthcheck_url b/plugins/other/healthcheck_url new file mode 100755 index 00000000..f36b2ee6 --- /dev/null +++ b/plugins/other/healthcheck_url @@ -0,0 +1,177 @@ +#!/bin/bash +# +#healthcheck on munin +#check site speed. +#egrep contents string +# ... and alert. +# +#programed by rti (hiroyuki fujie) super.rti@gmail.com @super_rti +#LICENSE: NYSL (public domain) +# +#config file +# /etc/munin/plugin-conf.d/munin-node +# +#example minimum config +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#--------------------------------------------------- +# +#chcek two site +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.url_2 http://www.google.com/ +#--------------------------------------------------- +# +#chcek three site +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.url_2 http://www.google.com/ +#env.url_3 http://www.yahoo.com/ +#--------------------------------------------------- +# +#set name +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.name_1 homhom +#--------------------------------------------------- +# +#check over proxy +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.proxy_1 127.0.0.1:8080 +#--------------------------------------------------- +# +#set slow speed(second) +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.slowspeed_1 30 +#--------------------------------------------------- +# +#grep string +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ +#env.grep_1 saysaya +#--------------------------------------------------- +# +#full option +#/etc/munin/plugin-conf.d/munin-node +#--------------------------------------------------- +#[healthcheck_url] +#env.url_1 http://127.0.0.1/ #check url +#env.grep_1 apache #check egrep string +#env.name_1 127.0.0.1 #set line name. default by url domain +#env.proxy_1 127.0.0.1:8080 #over proxy +#env.slowspeed_1 30 #slow time on alert +#--------------------------------------------------- +# +# + +#edakari speed up. +CHECKMAX=`env | grep url_ | wc -l` +let CHECKMAX="$CHECKMAX + 1" + +CURL=/usr/bin/curl + +if [ "$1" = "autoconf" ]; then + if [ $CHECKMAX -le 1 ]; then + echo no + exit 1 + fi + echo yes + exit 0 +fi + +if [ "$1" = "config" ]; then + echo 'graph_title site speed (second)' + echo "graph_args --base 1000 -l 0 --vertical-label second" + echo 'graph_scale no' + echo 'graph_vlabel second' + echo 'graph_category healthcheck' + echo 'graph_info This graph shows the site speed' + + for(( I = 1; I < $CHECKMAX; ++I )) + do + eval url=\$url_${I} + eval name=\$name_${I} + eval slowspeed=\$slowspeed_${I} + if [ "x${url}" = "x" ]; then + continue + fi + if [ "x${name}" = "x" ]; then + #default name by domain + name=`echo $url | sed 's#\.#_#g' | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/'` + fi + if [ "x${slowspeed}" = "x" ]; then + slowspeed=10 + fi + let slowspeed15="slowspeed * 3 / 2" #slowspeed * 1.5 + + echo "$name.label $name" + echo "$name.info $url" + echo "$name.draw LINE2" + echo "$name.min -10" + echo "$name.max ${slowspeed15}" + echo "$name.critical 0:${slowspeed}" + done + + exit 0 +fi + +for(( I = 1; I < $CHECKMAX; ++I )) +do + eval url=\$url_${I} + eval grep=\$htmlgrep_${I} + eval name=\$name_${I} + eval proxy=\$proxy_${I} + eval slowspeed=\$slowspeed_${I} + + if [ "x${url}" = "x" ]; then + continue + fi + if [ "x${name}" = "x" ]; then + #default name by domain + name=`echo $url | sed 's#\.#_#g' | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/'` + fi + + PROXY_CMD="" + if [ "x${proxy}" != "x" ]; then + PROXY_CMD=" --proxy ${proxy} " + fi + if [ "x${slowspeed}" = "x" ]; then + slowspeed=10 + fi + let timeout="${slowspeed} + 1" + + START=`date +%s` + HTML_RESULT=`$CURL "${url}" -s --connect-timeout ${timeout} ${PROXY_CMD}` + CURLEXITCODE=$? + END=`date +%s` + + GREPEXITCODE=0 + if [ "x${grep}" != "x" ]; then + echo $HTML_RESULT | egrep -i "${grep}" > /dev/null + GREPEXITCODE=$? + fi + + if [ $CURLEXITCODE -ne 0 ]; then + echo "$name.value -10" + echo "$name.extinfo curl return $CURLEXITCODE" + continue + fi + + if [ $GREPEXITCODE -ne 0 ]; then + echo "$name.value -9" + echo "$name.extinfo can not found $grep regex strings" + continue + fi + + let SPEED="$END - $START" + echo "$name.value $SPEED" +done