Logwatch
| Fiche express | |
|---|---|
| Domaine | Analyse et résumé des logs système |
| Commande | logwatch
|
| Config principale | /usr/share/logwatch/default.conf/logwatch.conf
|
| Exécution auto | /etc/cron.daily/00logwatch
|
| Voir aussi | Logrotate (fait tourner les logs) |
logwatch analyse les journaux système (auth, cron, syslog, services…) et en génère un rapport lisible, envoyé par mail ou affiché en console. Il ne modifie ni ne fait tourner les fichiers de logs — c'est le rôle de logrotate — logwatch se contente de les lire et d'en résumer le contenu (tentatives de connexion, erreurs, tâches cron exécutées, paquets installés…) pour éviter d'avoir à parcourir les fichiers bruts un par un.
Installation
apt install logwatch # Debian/Ubuntu
yum install logwatch # RHEL/CentOS
dnf install logwatch # RHEL8+/Fedora
Sur Debian/Ubuntu, l'installation du paquet dépose directement le script d'exécution quotidienne dans /etc/cron.daily/00logwatch — aucune configuration supplémentaire n'est nécessaire pour obtenir un rapport journalier, seule l'adresse de destination doit être renseignée.
Utilisation manuelle
logwatch --mailto admin@exemple.fr # génère le rapport et l'envoie par mail (utilise sendmail/postfix local)
logwatch --output stdout --detail high # affiche le rapport en console au lieu de l'envoyer par mail
logwatch --range yesterday # analyse les logs de la veille (par défaut : depuis la dernière exécution)
logwatch --range 'between -7 days and today' # plage explicite, ici les 7 derniers jours
logwatch --service sshd --detail high # limite le rapport à un seul service
logwatch --detail 10 --mailto admin@exemple.fr --print # génère, affiche à l'écran ET envoie le mail
--detail règle le niveau de verbosité du rapport, en mots-clés ou en valeur numérique équivalente : Low (0-4, résumé minimal), Med/Medium (5-9, niveau par défaut), High (10 et plus, détail complet ligne par ligne pour chaque événement). Plus le niveau est élevé, plus le rapport est long — utile ponctuellement pour investiguer un incident, mais à éviter en envoi quotidien automatique sous peine de mails illisibles.
--range choisit la période couverte par le rapport : Yesterday, Today, All (tout ce qui est disponible dans les logs), ou une plage explicite via la syntaxe between ... and ....
Fichier de configuration principal
/usr/share/logwatch/default.conf/logwatch.conf contient les réglages par défaut du paquet. Sur Debian/Ubuntu, les valeurs à personnaliser (adresse mail, niveau de détail) se surchargent plutôt dans /etc/logwatch/conf/logwatch.conf, qui prend le pas sur le fichier par défaut sans le modifier — ce qui évite de perdre ses réglages à la prochaine mise à jour du paquet.
vi /usr/share/logwatch/default.conf/logwatch.conf # fichier fourni par le paquet, sert de référence
vi /etc/logwatch/conf/logwatch.conf # fichier de surcharge, à créer/éditer pour personnaliser
Directives principales du fichier :
- MailTo — adresse (ou liste d'adresses séparées par un espace) qui reçoit le rapport quotidien ; équivalent permanent de l'option
--mailto - MailFrom — adresse expéditrice du mail envoyé
- Detail — niveau de détail par défaut (
Low/Med/Highou valeur numérique), appliqué quand--detailn'est pas précisé en ligne de commande - Service — liste des services à analyser ;
Service = Allcouvre tous les services disposant d'un script d'analyse dans/usr/share/logwatch/scripts/services/, ou bien on peut lister explicitement les services voulus (une ligneService = <nom>par service) - Range — plage de temps par défaut (typiquement
Yesterday) - Output — destination du rapport (
mailoustdout) - Format — format du rapport (
textouhtml)
Exécution automatique quotidienne
L'installation du paquet dépose généralement un script dans /etc/cron.daily/00logwatch, qui appelle logwatch avec les réglages du fichier de configuration (donc principalement MailTo et Detail) — aucune entrée crontab manuelle n'est nécessaire dans le cas courant, il suffit de renseigner l'adresse mail dans /etc/logwatch/conf/logwatch.conf. Le préfixe numérique 00 assure que logwatch s'exécute avant les autres scripts du même répertoire (utile s'il doit reporter sur des logs pas encore tournés par un autre job).
cat /etc/cron.daily/00logwatch # vérifier le script d'exécution automatique
run-parts --test /etc/cron.daily # lister l'ordre d'exécution des scripts du répertoire, sans les lancer