Générer des graphiques à partir des logs de Lighttpd

Préparation

$ apk add rrdtool ttf-freefont


1.  Édition

$ crontab -e

1.  Ajout de la ligne :

-   * * * * nice -n 10 /etc/lighttpd/rrdtool.sh >& /dev/null

$ mkdir /var/lib/lighttpd && chown lighttpd:lighttpd /var/lib/lighttpd

Configuration de Lighttpd

$ nano /etc/lighttpd/lighttpd.conf

  1. Décommenter la ligne 35:

"mod_rrdtool",

  1. 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/ :

  1. !/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

$ /etc/init.d/lighttpd restart



$ rc-update add cron ```