drixter’s blog

…przygody informatyka…

ISPConfig - dłuższe statystyki [updated]

ISPConfig 3 generuje statystyki tylko na jeden dzień do tyłu z powodu rotacji pliku loga Apache. Sposobów na obejście jest kilka, można to obejść np. tak:

root@xeon:~/tmp# cat stats.sh
#!/bin/bash

dirwww=/home/www/
dirlog=/log/
tmp=/root/tmp/
stats=/web/stats/
fullstats=/web/stats/fullstats/
htaccess=.htaccess
webalizer=/usr/bin/webalizer
webalizer_conf=/etc/webalizer/webalizer.conf
logfile=/root/tmp/logfile.txt

cd /root/tmp

echo "Program start"
echo "START" >> $logfile

for directory in $(ls $dirwww | grep -v client)
do
	echo "Generating statistics"
	echo "VHost Directory:" $dirwww$directory
	echo "Log Directory  :" $dirwww$directory$dirlog
	for curdate in {14..1}
	do
		pastdate=$(date --date="$curdate days ago" +%Y%m%d)
		echo "Preparing " $dirwww$directory$dirlog$pastdate-access.log "(.gz)"
		cp $dirwww$directory$dirlog$pastdate-access.log.gz tmp.gz >> $logfile  2>&1
		gzip -d tmp.gz >> $logfile  2>&1
		mv tmp $tmp$pastdate-access.log >> $logfile  2>&1
		echo "Copying " $dirwww$directory$dirlog$pastdate-access.log
		mv $dirwww$directory$dirlog$pastdate-access.log $tmp >> $logfile  2>&1
		echo "Joining " $tmp$directory-access.log >> $logfile  2>&1
		cat $tmp$pastdate-access.log >> $tmp$directory-access.log
#>> $logfile  2>&1
		rm $tmp$pastdate-access.log >> $logfile  2>&1
		rm tmp >> $logfile  2>&1
 		tm tmp.gz >> $logfile  2>&1
	done
        echo "Preparing log files completed"
	echo "Checking destination directory"
        mkdir $dirwww$directory$fullstats >> $logfile  2>&1
        echo "Running WebAlizer"
        $webalizer -c $webalizer_conf -n $directory -s $directory -r $directory -q -T -o $dirwww$directory$fullstats $tmp$directory-access.log >> $logfile  2>&1
        echo "Synchronizing .htaccess from normal ISPConfig daily statistics"
        cp $dirwww$directory$stats$htaccess $dirwww$directory$fullstats >> $logfile  2>&1
	echo $directory " completed"
       	echo ""

done
echo "Cleaning tmp"
rm *.log
echo "Program stop"
echo "============"
echo "STOP" >> $logfile

Może nie jest to za piękne ale działa i mamy teraz statystyki 14 dni do tyłu, 30 minut pracy.

Dodaj komentarz