Mercurial > notdcc
view misc/dcc-stats-init.in @ 5:0a7a5940ee3a
Change description per license
author | Peter Gervai <grin@grin.hu> |
---|---|
date | Tue, 10 Mar 2009 15:03:24 +0100 |
parents | c7f6b056b673 |
children |
line wrap: on
line source
#! /bin/sh # initialize an RRD file to collect DCC statistics # [-x] debugging # [-q] quiet # [-h dcc_homedir] # [-D data-dir] where to put the rrdtool file # [-T @RRDTOOL@] # see http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ # or the FreeBSD package. # [-O rrdopts] "--heartbeat X" or "--step Y" # file RRD database that receives the collected data # Copyright (c) 2008 by Rhyolite Software, LLC # # This agreement is not applicable to any entity which sells anti-spam # solutions to others or provides an anti-spam solution as part of a # security solution sold to other entities, or to a private network # which employs the DCC or uses data provided by operation of the DCC # but does not provide corresponding data to other users. # # Permission to use, copy, modify, and distribute this software without # changes for any purpose with or without fee is hereby granted, provided # that the above copyright notice and this permission notice appear in all # copies and any distributed versions or copies are either unchanged # or not called anything similar to "DCC" or "Distributed Checksum # Clearinghouse". # # Parties not eligible to receive a license under this agreement can # obtain a commercial license to use DCC by contacting Rhyolite Software # at sales@rhyolite.com. # # A commercial license would be for Distributed Checksum and Reputation # Clearinghouse software. That software includes additional features. This # free license for Distributed ChecksumClearinghouse Software does not in any # way grant permision to use Distributed Checksum and Reputation Clearinghouse # software # # THE SOFTWARE IS PROVIDED "AS IS" AND RHYOLITE SOFTWARE, LLC DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RHYOLITE SOFTWARE, LLC # BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE. # Rhyolite Software DCC 1.3.103-1.25 $Revision$ # @configure_input@ exec 1>&2 </dev/null DCC_HOMEDIR=@prefix@ DEBUG= # check the args once to get the home directory while getopts "xqRh:D:T:O:" c; do case $c in x) set -x; DEBUG=-x=;; h) DCC_HOMEDIR="$OPTARG";; *) ;; esac done . $DCC_HOMEDIR/dcc_conf REPS= DATADIR=$DCC_HOMEDIR/stats RRDTOOL=@RRDTOOL@ RRDOPTS= USAGE="`basename $0`: [-xqR] [-h homedir] [-D data-dir] [-T rrdtool] [-O rrdopts] file.rrd" OPTIND=1 while getopts "xqRh:D:T:O:" c; do case $c in x) ;; # handled above q) QUIET=quiet;; R) REPS=yes;; h) ;; # handled above D) DATADIR="$OPTARG";; T) RRDTOOL="$OPTARG";; O) RRDOPTS="$RRDOPTS $OPTARG";; *) echo "$USAGE" 1>&2; exit 1;; esac done shift `expr $OPTIND - 1 || true` if test "$#" -ne 1; then echo "$USAGE" 1>&2 exit 1 fi FILE=$1 if test ! -d $DATADIR; then mkdir $DATADIR fi cd $DATADIR if test "$FILE" = "`basename $FILE .rrd`"; then FILE=$FILE.rrd fi if test -s "$FILE"; then echo "$FILE already exists" 1>&2 exit 1 fi # assume no server will handle more than 1000 operations/second OPSPS=1000 # default sample every 10 minutes. STEP=600 # be willing to get STEP and heartbeat from the -O arg(s) HBEAT= while test -n "$RRDOPTS"; do RRDOPTS=`expr "X$RRDOPTS" : 'X *\(.*\)'` if test -z "$RRDOPTS"; then break; fi X=`expr "X$RRDOPTS" : 'X--heartbeat[ ][ ]*\([0-9][0-9]*\)'` if test -n "$X"; then HBEAT=$X RRDOPTS=`expr "X$RRDOPTS" : "X--heartbeat[ ]$X *\(.\)"` continue fi X=`expr "X$RRDOPTS" : 'X--step[ ][ ]*\([0-9][0-9]*\)'` if test -n "$X"; then STEP=$X RRDOPTS=`expr "X$RRDOPTS" : "X--step[ ]$X *\(.\)"` continue fi echo 'unrecognized RRD option "'"$RRDOPTS"'"' 1>&2 exit 1 done # Use a heartbeat of 31 minutes or 1860 seconds to allow a missed sample as # well as jitter by cron. If you use a heartbeat equal to the cron # repetition rate, then a single second delay by cron will make the previous # period have no samples and be undefined. if test -z "$HBEAT"; then HBEAT=`expr $STEP \* 3 + 60` fi # Keep hourly (or 6-step) average data for 5 years HOUR_STEPS=`expr 3600 / $STEP` HOUR_ROWS=`expr \( 5 \* 366 \* 24 \* 3600 \) / \( $STEP \* 6 \)` # Keep 10-minute (or single-step) average data for a month FAST_ROWS=`expr 31 \* 24 \* $HOUR_STEPS` # Keep daily database size data for 5 years DB_STEPS=`expr \( 3600 \* 24 \) / $STEP` DB_ROWS=`expr 5 \* 366` $RRDTOOL create $FILE --step $STEP --start -61month \ DS:reports:DERIVE:$HBEAT:0:$OPSPS \ DS:bulk:DERIVE:$HBEAT:0:$OPSPS \ DS:spam:DERIVE:$HBEAT:0:$OPSPS \ DS:hashes:GAUGE:$HBEAT:U:U \ RRA:AVERAGE:0.5:$HOUR_STEPS:$HOUR_ROWS \ RRA:AVERAGE:0.04:1:$FAST_ROWS \ RRA:MIN:0.9:$DB_STEPS:$DB_ROWS \ RRA:MAX:0.9:$DB_STEPS:$DB_ROWS