[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Logcheck et expression régulière



Bonjour Sébastien,

Merci beaucoup ! Ca correspond exactement à ce que je cherchais.
J'ai fait quelques ajustements pour ajouter des règles même s'il est difficile de savoir quels motifs mettre afin de ne pas être dérangé pour rien mais, d'un autre côté, de ne pas non plus louper de véritables alertes.

Pour info, je me suis rendu compte que tout ne fonctionnait pas comme je le voulais tout simplement parce que j'avais créé un lien logique entre le répertoire /etc/logcheck/ignore.d.server/ et mon fichier de règles stocké dans mon répertoire d'installation. Visiblement, il faut le copier car logcheck ne prend pas en compte celui-ci s'il est là uniquement via un lien (ln -sf).

Globalement, j'ai déjà beaucoup moins de lignes même si j'ai encore du ménage à faire.

Bonne fin de journée.

David.

-------- Message d'origine --------
De : Sébastien Dinot <sebastien.dinot@free.fr>
Envoyé : jeudi 2 janvier 2025 à 22:43 UTC+1
Pour : debian-user-french@lists.debian.org French <debian-user-french@lists.debian.org>
Sujet : RE: Logcheck et expression régulière

Bonsoir David, bonsoir tout le monde,

Le 2025-01-02 09:09, David BERCOT a écrit :

Ainsi, la forme de règle qu'on retrouve habituellement est la suivante :
^\w{3} [ :[:digit:]]{11} [-._[:alnum:]]+ systemd\[1\]: Started [-/:. [:alnum:]]+$
Et cela fonctionne bien pour, par exemple :
Jan  1 19:12:38 debian systemd[1]...
Maintenant, j'ai constaté que, selon les fichiers de logs, j'avais aussi :
Jan.  1
Janv. 1
Dec 31
Dec. 31
Déc 31

Je décompose tes exemples ainsi :

  * La ligne commence par le mois, indiqué sur 3 à 4 caractères
  * Suivi d'un point optionnel
  * Suivi de un espace
  * Suivi du jour du mois, calé ou non sur 2 caractères (et de l'heure),
    ce qui donne une suite de 10 à 11 chiffres, espaces et deux-points
  * Etc.

Si tu as bien ces variations, la bonne expression rationnelle est :

^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+ systemd\[[[:digit:]]+ \]: .*$

Si on décompose :

  * *^\w{3,4}* : La ligne commence par le mois, indiqué sur 3 à 4 caractères
  * *\.?* : Suivi d'un point optionnel
  * **: Suivi de un espace
  * *[ :[:digit:]]{10,11}* : Suivi du jour du mois, calé ou non sur 2
    caractères (et de l'heure), ce qui donne une suite de 10 à 11
    chiffres, espaces et deux-points
  * Etc.

Tu noteras que j'ai opté pour l'expression :

systemd\[[[:digit:]]+\]:

Et non :

systemd\[1\]:

Car le PID du processus systemd n'est pas toujours 1. En fait, il y a plusieurs processus systemd. Voici ce que j'ai sur mon serveur :

$ ps axf | grep '/systemd ' | grep -v grep
1 ? Ss 1:36 /usr/lib/systemd/systemd --system -- deserialize=116
4059223 ?        Ss     0:00 /usr/lib/systemd/systemd --user

Maintenant un exemple sur pièce :

Je crée le fichier de log avec les messages que je veux capturer :

$ cat > /tmp/log <<EOF
Jan.  1 22:08:01 debian systemd[1]: Starting user@0.service - User Manager for UID 0...
Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default target default.target.
Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice.
Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.target - Paths.
Déc 31 22:08:01 debian systemd[1]: Starting user@0.service - User Manager for UID 0...
EOF

Puis je crée le fichier de règles :

$ cat > /tmp/rules <<EOF
^\w{3,4}\.? [ :[:digit:]]{10,11} [-._[:alnum:]]+ systemd\[[[:digit:]]+\]: .*$
EOF

Puis je vérifie quels messages sont capturés par mes (enfin, ici, ma) règles :

$ logcheck-test -l /tmp/log -r /tmp/rules
Jan. 1 22:08:01 debian systemd[1]: Starting user@0.service - User Manager for UID 0... Janv. 1 22:08:01 debian systemd[4059223]: Queued start job for default target default.target. Dec 31 22:08:01 debian systemd[4059223]: Created slice app.slice - User Application Slice. Dec. 31 22:08:01 debian systemd[4059223]: Reached target paths.target - Paths. Déc 31 22:08:01 debian systemd[1]: Starting user@0.service - User Manager for UID 0...
================================================================================
parsed file: /tmp/log
used rule file: /tmp/rules

Les 5 lignes sont bien capturées, ma règle fonctionne.

A++, Sébastien


--
Sébastien Dinot
Ne goutez pas au logiciel libre, vous ne pourriez plus vous en passer !
https://www.palabritudes.net/ <https://www.palabritudes.net/>


Reply to: