diff -r 000000000000 -r 55d66efee4e0 update --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/update Thu Nov 06 14:44:48 2008 +0100 @@ -0,0 +1,84 @@ +#!/bin/bash +# +# Added --fork compatibility to support multiple control sockets +# +# Original by ahu @ pdns-dev team +# Modified by Daniel Selans +# 09.02.07 +# + +SOCKETDIR=/var/run # Leave off the trailing slash +CHKFORK=`ps -C pdns_recursor --no-headers | wc -l` + +# Quick sanity check +if [ CHKFORK = 0 ] +then + echo "pdns_recursor is not running!" + exit +fi + +TSTAMP=$(date +%s) + +VARIABLES="questions tcp-questions cache-entries concurrent-queries\ + nxdomain-answers noerror-answers\ + servfail-answers tcp-outqueries\ + outgoing-timeouts nsspeeds-entries negcache-entries all-outqueries throttled-out\ + cache-hits cache-misses answers0-1 answers1-10 answers10-100 answers100-1000 answers-slow\ + qa-latency throttle-entries sys-msec user-msec unauthorized-udp unauthorized-tcp client-parse-errors\ + server-parse-errors" + +UVARIABLES=$(echo $VARIABLES | tr '[a-z]' '[A-Z]' | tr - _ ) + + + +if [ $CHKFORK = 2 ] +then + # Running with --fork + SOCKETS=`ls -t -1 $SOCKETDIR/pdns_recursor.controlsocket.* | head --lines 2` + FORK="yes" + COUNT=0 + + for i in $SOCKETS + do + PID=`echo $i | cut -d . -f3` + rec_control --socket-dir=$SOCKETDIR --socket-pid=$PID GET $VARIABLES | + ( + for a in $UVARIABLES + do + read $a + done + rrdtool update pdns_recursor.$COUNT.rrd \ + -t \ + $(for a in $VARIABLES + do + echo -n $a: + done | sed 's/:$//' ) \ + $TSTAMP$( + for a in $UVARIABLES + do + echo -n :${!a} + done) + ) + COUNT=$(($COUNT + 1)) + done + +else + rec_control --socket-dir=$SOCKETDIR GET $VARIABLES | + ( + for a in $UVARIABLES + do + read $a + done + rrdtool update pdns_recursor.rrd \ + -t \ + $(for a in $VARIABLES + do + echo -n $a: + done | sed 's/:$//' ) \ + $TSTAMP$( + for a in $UVARIABLES + do + echo -n :${!a} + done) + ) +fi