Logwatch est un outil très puissant qui permet de garder un oeil sur les logs de son serveur.
Celui-ci prépare régulièrement un aperçu de ce qui se passe sur le serveur et peut dans le cas échéant envoyé un récapitulatif par email a la personne responsable.
Malheureusement si votre serveur est administré à l’aide de l’outil plesk, Logwatch ne renvoie pas correctement les données des sites héberger sur celui-ci.
Dans se dossier, nous allons installer logwatch, le configurer et exécuter un petit script qui ajoutera les domaines créer sous plesk dans la liste des éléments a traité.
Installer Logwatch sous Ubuntu.
Logwatch peut être installé facilement via la commande suivante:
apt-get update && apt-get install logwatch
Ensuite nous allons ajuster ses paramétres pour récevoir par émail le récapitulatif des logs.
nano /usr/share/logwatch/default.conf/logwatch.conf
A l’aide de l’éditeur Nano nous allons changer les paramètres suivants:
Format=html
Mailto=votreadresseemail@votre domaine
detail=Med
Un fichier script pour Logwatch sous Plesk.
Nous allons maintenant créer le script qui ajoutera automatiquement les nouveaux domaines créer sous plesk dans la liste des éléments à traiter par LogWatch.
De nouveau a l’aide de Nano nous allons créer un nouveau fichier:
nano /usr/sbin/logwatch_domains
Pour ensuite copier coller le code suivant:
#!/bin/bash ########################################################################### ## Script to create conf files and script links on a Plesk ## server that monitor all the apache log files ## ## Visit blog.surgeons.org.uk for updates ## ## mod jrc 280313 - rob cain - http://systemcore.co.uk : ## created this working version (scl_mk_vhosts_logwatch_configs.sh) ## from original draft http://blog.surgeons.org.uk/2008/02/monitoring-all-virtual-hosts-on-plesk.html ## by Neville Dastur (160208) ## ############################################################################ ## Location of the virtual hosts directories vhost_root=/var/www/vhosts/system/ ## Various logwatch directories dir_services="/etc/logwatch/conf/services" dir_logfiles="/etc/logwatch/conf/logfiles" dir_scripts="/etc/logwatch/scripts/services" http_script="/usr/share/logwatch/scripts/services/http" ## Now iter over each directory for domain in $( ls -Ichroot -Idefault $vhost_root ); do if [ -d "${vhost_root}${domain}" ] then echo "Making services logwatch entries for ${domain}" domain_us=`echo $domain | tr . _ | tr '[:upper:]' '[:lower:]'` ( cat << END_OF_SERVICES_CONF ########################################################################### # Configuration file for $domain http filter # See blog.surgeons.org.uk for updates ########################################################################### Title = "httpd - $domain" # Which logfile group... LogFile = http_$domain_us END_OF_SERVICES_CONF ) > ${dir_services}/http_${domain_us}.conf echo "Making logfiles logwatch entries for ${domain}" ( cat << END_OF_LOGFILES_CONF ######################################################## # Define log file group for http_$domain_us # See blog.surgeons.org.uk for updates ####################################################### LogFile = /var/www/vhosts/system/$domain/logs/access_log LogFile = /var/www/vhosts/system/$domain/logs/access_log.processed LogFile = /var/www/vhosts/system/$domain/logs/access_ssl_log LogFile = /var/www/vhosts/system/$domain/logs/access_ssl_log.processed # If the archives are searched, here is one or more line # (optionally containing wildcards) that tell where they are... # If you use a "-" in naming add that as well -mgt Archive = /var/www/vhosts/system/$domain/logs/access_log.processed.?.gz Archive = /var/www/vhosts/system/$domain/logs/access_ssl_log.processed.?.gz # Expand the repeats (actually just removes them now) *ExpandRepeats # Keep only the lines in the proper date range... *ApplyhttpDate END_OF_LOGFILES_CONF ) > ${dir_logfiles}/http_${domain_us}.conf ## Make the script links if [[ -s ${dir_scripts}/http_${domain_us} ]] ; then echo "Script link for ${domain} already exists. Skipping..." else echo "Creating script link for ${domain}" ln -s ${http_script} ${dir_scripts}/http_${domain_us} fi fi done
Après avoir sauvegardé, nous allons le rendre exécutable a l’aide de la commande suivante:
chmod + x /usr/sbin/logwatch_domains
Enfin nous allons ajouter celui-ci a la tache cron qui exécute logwatch afin que notre script scanne et ajoute le cas échéant le traitement de nouveau domaine.
Votre tache cron doit ressembler à ceci:
#! / Bin / bash #Check Si retiré-mais-pas-purgé essai -x /usr/share/logwatch/scripts/logwatch.pl || exit 0 Scripts #Renew Plesk / usr / sbin / logwatch_domains #execute / usr / sbin / logwatch --detail haute --format html --mailto votreemail@votredomaine #Note: Il est possible de forcer le destinataire dans la commande ci-dessus #Just passer --mailto address@a.com la place du courrier --output
Bonne lecture de vos logs ! Personnellement chaque matin avec un bon café 😉