IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Fichier de log et son résumé


Sujet :

Shell et commandes GNU

  1. #1
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut Fichier de log et son résumé
    Salut les amis,

    J'ai un fichier de log A dont seules quelques lignes m'intéressent. Je les extrait avec grep puis leur fait subir quelques modifications via sed,awk etc. pour avoir une synthèse ou un résumé. Pour l'instant je fais l'opération manuellement, i.e je lance un tail -f sur A que je pipe à la série de grep et de transformations et je garde un oeil sur la console qui me crache de temps en temps des infos pertinentes. N'y aurait-il pas un moyen de faire ce truc automatiqument de telle façon à ce que je puisse me connecter à n'importe quel moment au serveur et avoir directement accès au fichier résumé qui serait synchronisé en temps réel, comme avec tail -f

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour

    Pourquoi ne mets-tu pas tes commandes dans un script ?

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 731
    Par défaut
    Bonjour,

    seules quelques lignes m'intéressent. Je les extrait avec grep puis leur fait subir quelques modifications via sed,awk etc
    grep est inutile : sed et awk savent faire ce que fait grep, et awk sait faire ce que fait sed...

    pince-mi et pince-moi sont tombés à l'eau, il ne reste plus que awk !

    pour exécutber automatiquement la commande, ça dépend de ce que tu veux :
    l'appeler plus simplement que de tout retaper :
    il y a l'historique...
    tu peux en faire un script ou un alias
    quant à l'exécution automatique lors de la connexion, ce n'est peut-être pas une bonne idée : es-tu certain de toujours n'avoir que cela à faire en te connectant ?

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    j'aurai tendance à me pencher sur sec.pl qui est tout indiqué pour répondre à la problématique posée, et traitera les cas les limites comme les lignes pas encore arrivées, les problèmes de bufferisation etc. et au bout permet de générer un fichier reformaté en temps réel, ou de logguer dans syslog ou sur la sortie standard ou autre etc.

  5. #5
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Bonjour les amis merci pour vos réponses !



    Flodelarab a dit
    Pourquoi ne mets-tu pas tes commandes dans un script ?
    C'est déjà le cas. Mais comment faire pour que ce script s'execute tout le temps et surtout ne casse pas quand il y a rotation du fichier A ?


    N_BaH a dit
    pour exécuté automatiquement la commande, ça dépend de ce que tu veux :
    l'appeler plus simplement que de tout retaper :
    il y a l'historique...
    tu peux en faire un script ou un alias
    quant à l'exécution automatique lors de la connection, ce n'est peut-être pas une bonne idée : es-tu certain de toujours n'avoir que cela à faire en te connectant ?
    Ce que j'entend par automatiquement c'est à dire ça tourne en tâche de fond je n'ai pas besoin de le lancer manuellement, comme un daemon. Idéalement j'aurais donc, tous les jours, un fichier /var/log/A et son fichier /var/log/A.resume correspondant, sans que je n'ai rien à faire.


    En réalité je ne veux pas trop influencer vos réponses car je suis déjà en train de suggérer des pistes de solutions (daemon, tâche de fond). Pour moi au final ce que je cherche c'est d'avoir le résumé du fichier A (resultant du traitement du script) qui soit dispo tout le temps et synchrone ou quasi-synchrone avec A.

    BufferBob a écrit
    j'aurai tendance à me pencher sur sec.pl [...]

    Merci je jette un coup d'oeil ça a l'air intéressant. J'espère pas trop dur à apprendre !

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    surtout ne casse pas quand il y a rotation du fichier A ?
    Tu as tout expliqué sauf ce qui est intéressant : c'est quoi cette histoire de rotation ?

    Tu peux très bien dédoubler la sortie avec une sortie normale et une sortie pour ton résumé.
    Tu cherches un bazooka pour écraser une fourmi. (Mais un bazooka c'est lourd et inutile).

    sans que je n'ai rien à faire.
    Sauf que tu fais quelque chose puisque tu demandes un résumé.

  7. #7
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Salut Flodelarab,

    Les fichiers de log sont tournés avec logrotate de telle sorte à ce que tu aies un fichier /var/log/A.1 pour le jour d'avant, /var/log/A.2.gz pour avant hier etc.

    Je vais faire plus concret puisque apparemment les abstractions sont difficiles à comprendre :

    Le fichier de log qui m'intéresse est /var/log/messages

    Voici une partie du fichier /var/log/messages

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    root@messagerie[10.10.10.19] ~ # tail /var/log/messages
    Jul 30 17:26:31 messagerie-prep kernel: [526559.911078] Shorewall:net-fw:DROP:IN=eth0 OUT= MAC=00:0c:29:a0:17:e0:00:1e:13:59:5d:13:08:00 SRC=185.30.177.161 DST=10.10.10.19 LEN=60 TOS=0x00 PREC=0x00 TTL=54 ID=59139 DF PROTO=TCP SPT=44929 DPT=143 WINDOW=14100 RES=0x00 SYN URGP=0
    Jul 30 17:26:40 messagerie-prep root: Shorewall restarted
    Jul 30 17:27:40 messagerie-prep kernel: [526629.191415] device eth0 left promiscuous mode
    Jul 31 04:26:24 messagerie-prep kernel: [566134.870266] hrtimer: interrupt took 69003413 ns
    Jul 31 06:25:04 messagerie-prep rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="906" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
    Jul 31 06:26:38 messagerie-prep rsyslogd0: action 'action 17' resumed (module 'builtin:ompipe') [try http://www.rsyslog.com/e/0 ]
    Jul 31 06:26:38 messagerie-prep rsyslogd-2359: action 'action 17' resumed (module 'builtin:ompipe') [try http://www.rsyslog.com/e/2359 ]
    Jul 31 06:53:19 messagerie-prep rsyslogd-2007: action 'action 17' suspended, next retry is Tue Jul 31 06:53:49 2018 [try http://www.rsyslog.com/e/2007 ]
    Jul 31 10:57:00 messagerie-prep kernel: [589560.151137] device eth0 entered promiscuous mode
    Jul 31 10:57:01 messagerie-prep kernel: [589561.262586] device eth0 left promiscuous mode
    root@messagerie[10.10.10.19] ~ #

    Et voici le résumé que je veux en faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    root@messagerie[10.10.10.19] ~ # /usr/local/scripts/shorewall/banlog-static | head
    Jul 30 14:43:05 178.128.27.245 DPT=22   Greece
    Jul 30 14:44:02 196.223.19.3 DPT=123   Angola
    Jul 30 14:44:10 185.103.97.221 DPT=22  IP Address not found
    Jul 30 14:48:50 92.63.197.40 DPT=22   Russian Federation
    Jul 30 14:51:32 203.178.148.19 PROTO=ICMP   Japan
    Jul 30 14:53:27 185.30.176.99 DPT=143   Netherlands
    Jul 30 14:53:28 185.30.176.99 DPT=143   Netherlands
    Jul 30 14:53:30 185.30.176.99 DPT=143   Netherlands
    Jul 30 14:53:34 185.30.176.99 DPT=143   Netherlands
    Jul 30 14:53:47 41.237.238.40 DPT=80   Egypt
    root@messagerie[10.10.10.19] ~ #

    Le script /usr/local/scripts/shorewall/banlog-static lit depuis /var/log/messages pour produire cette sortie.

    Ce que j'aimerais c'est que ce script tourne tout seule (pas besoin de la lancer manuellement) tout le temps (en tache de fond) et me produise un fichier /var/log/shorewall-bans que je pourrais lire après coup (après un incident par exemple, ou avoir un rapport quotidien qui m'envoi des stats sur le fichier par mail etc.). Les utilisations derrières peuvent être multiples, il faut simplement que j'ai ce fichier généré au quotidien.

    Merci pour votre patience !

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    avec sec ça pourrait donner un truc approchant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type=Single
    ptype=RegExp
    pattern=^(.+..:..:..).+Shorewall.+SRC=([0-9.]+).+(DPT=\d+)
    desc=la description de ma règle
    action=  eval %geoloc "[geolocalisation de $2]"; \
             write - $1 $2 $3 %geoloc
    (note: le champ desc est obligatoire)

    on voit bien l'action divisée en 2 parties, d'abord évaluer un bout de code Perl pour faire la géolocalisation (laissé en exercice ), ensuite afficher tout ce qu'on a capturé, l'horodatage, l'IP source, le port destination et la variable nouvellement créée %geoloc.

    l'outil est puissant et pas forcément simple à prendre en main, mais il permet en outre de le lancer en daemon et donc de surveiller/traiter les fichiers en temps réel (par rapport à l'autre solution qui va consister à exécuter ton script à intervalles réguliers via cron par exemple)

    pour test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # sec -conf=sec.conf -input=messages -notail 2>/dev/null
    Jul 30 17:26:31 185.30.177.161 DPT=143 [geolocalisation de 185.30.177.161]
    donc on voit bien par exemple l'option -notail, qui se comprend aisément, tout est décrit dans le manuel
    on conseille de le lire, par exemple dans le cas de l'écriture dans un fichier (ici on écrit dans le pseudo-fichier - qui finalement écrit sur la sortie standard), on pourra peut-être préférer l'action owritecl (Open, WRITE, CLose) plutôt que la simple action write.

    dans tous les cas sec répond ici parfaitement à la problématique, et est par nature plus fiable/robuste qu'un bricolage maison, reste que selon le besoin réel -je rejoins Flodelarab- ça peut être effectivement considéré comme un bazooka

    à tester...

    note: après install (apt-get chez moi), des scripts d'init sont créés et par défaut le fichier de conf sera /etc/sec.conf, voir également s'il existe /etc/default/sec)

  9. #9
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Merci beaucoup BufferBob pour cette superbe introduction à sec. Mais juste une question avant de fermer le topic, je lance sec une seule fois et je l'oublie, c'est bien cela ? il va s'executer en tâche de fond ? dois-je lui créer un fichier /etc/init.d/ pour qu'il se lance au (re)démarrage de la machine par ex. ?

  10. #10
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    1) Nous n'avons pas de problème avec l'abstraction.
    2) Tu ne donnes pas les infos.
    3) Quelle est cette obsession avec le temps réel ?

    Tu es venu avec une question et des éléments de réponses que tu cherches à imposer alors que ce n'est pas la réponse.
    Tu vas polluer la mémoire, avec un daemon, de façon permanente, pour une opération qui n'est que ponctuelle : demander un résumé.

  11. #11
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par yacinechaouche Voir le message
    je lance sec une seule fois et je l'oublie, c'est bien cela ? il va s'executer en tâche de fond ?
    Citation Envoyé par BufferBob Voir le message
    (...) il permet en outre de le lancer en daemon et donc de surveiller/traiter les fichiers en temps réel (...)
    donc oui, ça peut s'exécuter en tâche de fond, suffit de lui demander, dans mon précédent message tu as aussi un exemple d'exécution en une seule passe, sans tâche de fond et sans mode "tail -f" (-notail)

    Citation Envoyé par yacinechaouche Voir le message
    dois-je lui créer un fichier /etc/init.d/ pour qu'il se lance au (re)démarrage de la machine par ex. ?
    Citation Envoyé par BufferBob Voir le message
    note: après install (...), des scripts d'init sont créés et par défaut le fichier de conf sera /etc/sec.conf, voir également s'il existe /etc/default/sec)
    il faut vérifier, si tu l'installes via apt-get sur une Debian possible que tu aies les fichiers d'init déjà créés, sinon tu les crées toi-même, la débrouillardise élémentaire doit permettre de s'en sortir sans trop de difficultés

  12. #12
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Tip top ! merci BufferBob.

    Flodelarab, j'ai été nul comme c'est souvent le cas ! merci de ta patience o/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier de log
    Par Arkenstone dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 01/04/2005, 15h42
  2. [tomcat 5] [paramétrage] fichier de log System.out.println
    Par Aldo dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/02/2005, 15h41
  3. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 20h06
  4. [Tomcat] Fichier de logs
    Par yolepro dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 22/03/2004, 17h20
  5. Fichiers de Log
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/05/2003, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo