Générer des graphiques à partir des logs de Lighttpd
Préparation
- Installation des rrdtools et d'une fonte pour l'affichage du texte :
$ apk add rrdtool ttf-freefont
- Configuration de cron :
1. Édition
$ crontab -e
1. Ajout de la ligne :
- * * * * nice -n 10 /etc/lighttpd/rrdtool.sh >& /dev/null
- Création des dossiers manquants :
$ mkdir /var/lib/lighttpd && chown lighttpd:lighttpd /var/lib/lighttpd
Configuration de Lighttpd
- Édition du fichier lighttpd.conf :
$ nano /etc/lighttpd/lighttpd.conf
- Décommenter la ligne 35:
"mod_rrdtool",
- Modifier la suite :
rrdtool.binary = "/usr/bin/rrdtool" rrdtool.db-name = "/var/www/lighttpd.rrd"
Création du script rrdtool.sh
Penser à modifier les variables OUTDIR et INFILE en fonction de votre configuration À placer dans le dossier /etc/lighttpd/ :
- !/bin/sh
RRDTOOL=/usr/bin/rrdtool OUTDIR=/var/www/www.example.com/rrd/ INFILE=/var/lib/lighttpd/lighttpd.rrd OUTPRE=lighttpd-traffic WIDTH=400 HEIGHT=100
DISP="-v bytes --title TrafficWebserver
DEF:binraw=$INFILE:InOctets:AVERAGE
DEF:binmaxraw=$INFILE:InOctets:MAX
DEF:binminraw=$INFILE:InOctets:MIN
DEF:bout=$INFILE:OutOctets:AVERAGE
DEF:boutmax=$INFILE:OutOctets:MAX
DEF:boutmin=$INFILE:OutOctets:MIN
CDEF:bin=binraw,-1,*
CDEF:binmax=binmaxraw,-1,*
CDEF:binmin=binminraw,-1,*
CDEF:binminmax=binmaxraw,binminraw,-
CDEF:boutminmax=boutmax,boutmin,-
AREA:binmin##ffffff:
STACK:binmax##f00000:
LINE1:binmin##a0a0a0:
LINE1:binmax##a0a0a0:
LINE2:bin##efb71d:incoming
GPRINT:bin:MIN:%.2lf
GPRINT:bin:AVERAGE:%.2lf
GPRINT:bin:MAX:%.2lf
AREA:boutmin##ffffff:
STACK:boutminmax##00f000:
LINE1:boutmin##a0a0a0:
LINE1:boutmax##a0a0a0:
LINE2:bout##a0a735:outgoing
GPRINT:bout:MIN:%.2lf
GPRINT:bout:AVERAGE:%.2lf
GPRINT:bout:MAX:%.2lf
"
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
OUTPRE=lighttpd-requests
DISP="-v req --title RequestsperSecond -u 1
DEF:req=$INFILE:Requests:AVERAGE
DEF:reqmax=$INFILE:Requests:MAX
DEF:reqmin=$INFILE:Requests:MIN
CDEF:reqminmax=reqmax,reqmin,-
AREA:reqmin##ffffff:
STACK:reqminmax##00f000:
LINE1:reqmin##a0a0a0:
LINE1:reqmax##a0a0a0:
LINE2:req##00a735:requests"
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
Création de la page html
À placer à la racine du site ( identique à OUTDIR dans le script ci-dessus ) :
Lighttpd statistiques
div
Traffic
horaire
journalier
mensuel
Requêtes
horaire
journalier
mensuel
Application des changements
- Redémarrage de lighttpd :
$ /etc/init.d/lighttpd restart
- Démarrage de cron et ajout au démarrage :
$ rc-update add cron ```