Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash]rrdtool wrapper, geht das schneller?
Hallo allerseits :)
Ich stricke grade an RRDTOOL Wrappern. Geht folgendes nicht schneller?
(Kann sed zaehlen?)
Output:
rrdtool update /tmp/err.rrd 191105610:11127:477:275:78:17008:2680:0:94
real 0m1.464s
user 0m0.981s
sys 0m0.149s
#!/usr/bin/env bash
WDIR=/tmp
TODAY=$(/bin/date +%s)
ADIR=/var/log/httpd
myupdate() {
cd $ADIR
echo "rrdtool update $WDIR/err.rrd $TODAY:"
f=1
for j in 200 301 400 401 403 404 405 500; do
x=`sed -n "/\" $j/p" *access_log| sed -e 's/\[.*\]/ /g'|wc -l`
echo "$x:"|tr -d '\n'
done
}
myupdate |tr -d '\n'| sed -e "s/:\$//g"| sh
Gruss 403
Moin,
das geht schneller. Wozu der 2. sed? Und wozu überhaupt sed? So wie ich das sehe, willst Du doch nur die Anzahl der aufgezählten HTTP-Returncodes zählen.
myupdate() {
echo -n "rrdtool update $WDIR/err.rrd `date +%s`:"
for j in 200 301 400 401 403 404 405 500; do
echo -n `grep -c "\" $j " *access_log`:
done
}
echo -n `myupdate | sed 's/:$//'`
Mit Deiner Version auf meinem Rechner:
jack:/var/log/apache2 # time /home/jan/tmp/get_apache_err.sh
rrdtool update /err.rrd 1191166128:2855:17:0:0:22:455:3:0
real 0m1.049s
user 0m1.179s
sys 0m0.054s
Das Ergebnis:
jack:/var/log/apache2 # time /home/jan/tmp/get_apache_err.sh
rrdtool update /err.rrd 1191165864:2855:17:0:0:22:455:3:0
real 0m0.166s
user 0m0.144s
sys 0m0.021s
Jan
EDIT: Ich habe das Ganze mal durch ein Simpel-awk laufen lassen:
awk -v today=`date +%s` -v rrdfile='/tmp/err.rrd' '
BEGIN { h200 = 0;
h301 = 0;
h400 = 0;
h401 = 0;
h403 = 0;
h404 = 0;
h405 = 0;
h500 = 0;
}
/" 200 / { h200 ++; }
/" 301 / { h301 ++; }
/" 400 / { h400 ++; }
/" 401 / { h401 ++; }
/" 403 / { h403 ++; }
/" 404 / { h404 ++; }
/" 405 / { h405 ++; }
/" 500 / { h500 ++; }
END { printf "rrdtool update %s %d:%d:%d:%d:%d:%d:%d:%d:%d",
rrdfile, today, h200, h301, h400, h401, h403, h404,
h405, h500;
} ' /var/log/apache2/access_log
Nicht besonders hübsch, eher einfallslos ;-) Aber: Das sieht noch besser aus:
jack:~ # time /home/jan/tmp/get_apache_err.sh
rrdtool update /tmp/err.rrd 1191270711:2855:17:0:0:22:455:3:0
real 0m0.072s
user 0m0.067s
sys 0m0.006s
Hi Jan,
Der zweite sed war noch ein Ueberbleibsel. Mist! Und grep schlaegt natuerlich alles tot. ;)
EDIT: Oh
grep -c -> grep -hc
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.