2ffa04059bbff8b19f576a09e5ffb308e57f23f6 rhead Fri Feb 1 16:17:46 2013 -0800 Put bottleneck host name in a variable and changed it from genome-bottle to rrnfs1. Replaced calls to ipw with calls to whois. Took out requirement to run on hgwdev. Set variable 'worst' using IPs with session names chopped off instead of raw output from bottleneck. Removed an unecessary echo from an if statement. Changed printout of whois info for worst offender to only print if argument is 'all'. Added PIDs to filename and added an onintr and cleanup instruction. diff --git src/utils/qa/checkBOT.csh src/utils/qa/checkBOT.csh index bbd1afb..e93ffac 100755 --- src/utils/qa/checkBOT.csh +++ src/utils/qa/checkBOT.csh @@ -1,96 +1,96 @@ #!/bin/tcsh source `which qaConfig.csh` #################### # 06-15-05 Bob Kuhn # # Wrapper around bottleneck check # #################### +onintr cleanup + set ip="" set chopIDs="" set worst="" set mode="" +set bottleHost="rrnfs1" +# host is specified in /usr/local/apache/cgi-bin/hg.conf (as bottleneck.host) if ($#argv < 1 || $#argv > 2 ) then echo echo " wrapper around bottleneck check." echo " gives delay stats for IP address(es)." echo echo ' usage: ipAddress [terse]' echo ' (terse gives only data)' echo echo ' (use ipAddress = "all" to get all IPs having delays)' echo exit else set ip=$argv[1] endif if ($#argv == 2 ) then set mode=$argv[2] if ($mode != "terse" ) then echo echo ' sorry, the second argument can only be "terse"' echo exit 1 endif endif -if ( "$HOST" != "hgwdev" ) then - echo "\n error: you must run this script on dev!\n" - exit 1 -endif - echo if ($ip == "all") then - rm -f ipFile - /usr/local/bin/bottleneck -host=genome-bottle list | egrep "current" - /usr/local/bin/bottleneck -host=genome-bottle list | grep -w -v "0" \ - | grep -v "current" | sort -nr -k5 > ipFile - set allIPs=`cat ipFile | awk '{print $1}'` - set worst=`echo $allIPs | awk '{print $1}'` - cat ipFile + bottleneck -host=$bottleHost list | egrep "current" + bottleneck -host=$bottleHost list | grep -w -v "0" \ + | grep -v "current" | sort -nr -k5 > ipFile$$ + set allIPs=`cat ipFile$$ | awk '{print $1}'` + cat ipFile$$ echo - # get locations (strip off sessionID) set chopIPs=`echo $allIPs | sed "s/ /\n/"g \ | awk -F"." '{print $(NF-3)"."$(NF-2)"."$(NF-1)"."$NF}'` - foreach ip (`echo $chopIPs`) - set orgName=`ipw $ip | grep OrgName | sed -e "s/OrgName: //"` > /dev/null - set current=`grep -w $ip ipFile | awk '{print $5}'` - echo "$ip\t\t$current\t $orgName" + set worst=`echo $chopIPs | awk '{print $1}'` + foreach address ( $chopIPs ) + set orgName=`whois $address | grep OrgName | sed -e "s/OrgName: //"` > /dev/null + set current=`grep -w $address ipFile$$ | awk '{print $5}'` + echo "$address\t\t$current\t $orgName" end else - /usr/local/bin/bottleneck -host=genome-bottle list | egrep -w "$ip|current" + /usr/local/bin/bottleneck -host=$bottleHost list | egrep -w "$ip|current" endif echo if ($mode == "terse") then exit 0 endif echo " hits = total number of accesses since started tracking" echo " time = seconds since last hit" echo " max = the most delay time slapped on this source IP, in ms" echo " current = the current delay in milliseconds." echo echo " delay decays at the rate of 10 milliseconds per second" echo ' each new hit adds 150 milliseconds to "current"' echo echo " current shows the number of milliseconds they would " echo " be delayed if they hit us with a query now. " echo " If current is over 10,000 they get a message. If it's" echo " over 15,000 they get cut off with a ruder message." echo +if ($ip == "all") then + echo + echo "partial whois info for IP with longest delay:" echo -echo "the longest delay is from:" - if ($worst != "") then - ipw $worst | head -10 + whois $worst | head -15 + endif endif -rm -f ipFile +cleanup: +rm -f ipFile$$ exit