WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Surveiller un serveur avec Logwatch

Installation et configuration

L'installation sur Ubuntu est comme toujours très simple:

sudo apt-get install logwatch

Par défaut logwatch crée une entrée crontab afin d'envoyer chaque jour le résultat de l'analyse par email. Pour recevoir ces emails, il faut ajouter son adresse email dans /etc/logwatch/conf/logwatch.conf. Malheureusement ce fichier n'est pas créé lors de l'installation. La solution la plus simple est donc de copier /usr/share/logwatch/default.conf/logwatch.conf:

sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf

On peut ensuite le modifier:

MailTo = votre@email.com

VirtualHosts

Logwatch analyse les fichiers de log d'Apache (/var/log/apache2/*access.log). Malheureusement, il supprime le nom du VirtualHost, ce qui rend l'interprétation difficile. Pour voir apparaître le nom des VirtualHosts dans le rapport, il faut créer un nouveau format de log dans /etc/apache2/apache2.conf. Au lieu du classique


LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

Il faut utiliser:


LogFormat "%h %l %u %t \"%m %{Host}i%U%q %H\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" logwatch

CustomLog /var/log/apache2/access.log logwatch

Dans lequel:

On a donc remplacé %r ("GET /index.php?id=123 HTTP/1.1") par %m %{Host}i%U%q %H (GET www.monsite.com/index.php?id=123 HTTP/1.1)

Erreurs PHP

Pour que Logwatch puisse également analyser les erreurs PHP, il faut les enregistrer dans un fichier séparé. Il faut donc d'abord créer le dossier /var/log/php et lui attribuer les permissions correctes:


sudo mkdir /var/log/php
sudo chown www-data:www-data /var/log/php

Puis modifier /etc/php5/apache2/php.ini:


log_errors = On
error_log = /var/log/php/error.log

Redémarrer Apache, et enfin indiquer à logwatch d'analyer les fichiers /var/log/php/error.log. Il faut pour celà modifier le fichier /usr/share/logwatch/default.conf/logfiles/php.conf :


LogFile = php/*error.log
LogFile = php/*error.log.1

PHP et logrotate

Maintenant que les erreurs enregistrées dans un fichier séparé, il faut configurer logrotate, afin de créer un nouveau fichier log chaque semaine (comme c'est déjà le cas pour les fichiers Apache error.log et access.log par exemple). Pour cela, créer le fichier /etc/logrotate.d/php suivant :


/var/log/php/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 www-data www-data
        sharedscripts
        postrotate
                if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

Articles similaires