Logwatch

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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/High ou valeur numérique), appliqué quand --detail n'est pas précisé en ligne de commande
  • Service — liste des services à analyser ; Service = All couvre 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 ligne Service = <nom> par service)
  • Range — plage de temps par défaut (typiquement Yesterday)
  • Output — destination du rapport (mail ou stdout)
  • Format — format du rapport (text ou html)

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

Voir aussi

  • Logrotate — fait tourner et purger les fichiers de logs, tandis que logwatch se contente de les lire pour en produire un résumé
  • Crontab — mécanisme sous-jacent de /etc/cron.daily/