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 POSIX Discussion :

Script de supervision d'un fichier log


Sujet :

Shell et commandes POSIX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Script de supervision d'un fichier log
    Bonjour,

    Je fait appel à vous pour l'aide de l'écriture d'un script qui permettra de connaître les nombre de connexion htpp inscrit dans un fichier log.
    L'objectif est de scanner à interval régulier la lecture d'un fichier et de déclencher un envoi de mail lorsqu'un seuil est atteint.

    Le fichier log se compose de la manière suivante :

    [Sat Feb 27 00:00:15 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:59 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:01:33 2016] [notice] mpmstats: approaching MaxClients (595/600)
    [Sat Feb 27 00:01:45 2016] [notice] mpmstats: rdy 5 bsy 595 rd 2 wr 3 ka 590 log 0 dns 0 cls 0
    [Sat Feb 27 00:01:59 2016] [notice] mpmstats: bsy: 1 in mod_cgid.c
    [Sat Feb 27 00:03:25 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:09:01 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg


    La où je pêche un peu, c'est dans l'analyse de la ligne recherchée.
    Celle qui nous intéresse :

    [Sat Feb 27 00:00:15 2016] [notice] mpmstats: rdy 5 bsy 595 rd 2 wr 3 ka 590 log 0 dns 0 cls 0

    Les mots clé de la ligne sont : notice - rdy et bsy
    et le chiffre à analyser est celui suivant "bsy" ==> ici 595

    Une fois le chiffre sur la bonne trouvé, je ferai une analyse pour comparer suivant un seuil.

    L'idée de départ était de faire un tail des "xx" dernières lignes et d'utiliser soit le awk ou le sed pour analyser la ligne...
    C'est là que ça se complique.

    Auriez-vous SVP une piste de départ pour analyser cette ligne ?
    Par avance merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Pour indiquer le nombre de connexion htpp, cette simple commande suffit:
    Maintenant, si on élargit aux requêtes http, voyons ce qu'on peut faire avec les éléments discriminatoires que tu donnes.
    Tu indiques un tiret mais ta ligne n'a aucun tiret. Ça part mal. On ne garde que les mots clés "notice", "rdy" et "bsy"

    Ton échantillon est pas mal mais n'a qu'une seule connexion. Je le triple en incrémentant le bsy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $ cat htpp.dat 
    [Sat Feb 27 00:00:15 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:59 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:01:33 2016] [notice] mpmstats: approaching MaxClients (595/600)
    [Sat Feb 27 00:01:45 2016] [notice] mpmstats: rdy 5 bsy 595 rd 2 wr 3 ka 590 log 0 dns 0 cls 0
    [Sat Feb 27 00:01:59 2016] [notice] mpmstats: bsy: 1 in mod_cgid.c
    [Sat Feb 27 00:03:25 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:09:01 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:15 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:59 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:01:33 2016] [notice] mpmstats: approaching MaxClients (595/600)
    [Sat Feb 27 00:01:45 2016] [notice] mpmstats: rdy 5 bsy 596 rd 2 wr 3 ka 590 log 0 dns 0 cls 0
    [Sat Feb 27 00:01:59 2016] [notice] mpmstats: bsy: 1 in mod_cgid.c
    [Sat Feb 27 00:03:25 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:09:01 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:15 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:00:59 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:01:33 2016] [notice] mpmstats: approaching MaxClients (595/600)
    [Sat Feb 27 00:01:45 2016] [notice] mpmstats: rdy 5 bsy 597 rd 2 wr 3 ka 590 log 0 dns 0 cls 0
    [Sat Feb 27 00:01:59 2016] [notice] mpmstats: bsy: 1 in mod_cgid.c
    [Sat Feb 27 00:03:25 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    [Sat Feb 27 00:09:01 2016] [error] [client xxx.xx.xx.xxx] File does not exist: /app/data/ico.jpg
    Avec awk, on filtre la bonne ligne et on récupère le champ de la ligne qui nous intéresse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk '/\<notice\>/&&/\<rdy\>/&&/\<bsy\>/{print $11;}' htpp.dat 
    595
    596
    597
    Si les < et > t'agacent, tu peux les enlever. Ils indiquent "début de mot" et "fin de mot". C'est plus lourd mais plus précis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk '/notice/&&/rdy/&&/bsy/{print $11;}' htpp.dat 
    595
    596
    597
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    et pour la partie qui précède, je me permets de te proposer logtail
    logtail reads a specified file (usually a log file) and writes to the standard output that part of it which has not been read by previous runs of logtail
    là normalement t'as ton script en 1 ligne avec tout ça

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Tout d'abord un grand merci pour vos retours.

    @Flodelarab :
    désolé pour ma description et tu as effectivement pleinement répondu à mon besoin.
    Juste pour ma curiosité, a-t'on la possibilité (via une boucle par exemple) de commencer la lecture du fichier par la fin, de passer la commande que tu as précisé afin d'extraire le nombre de connexion et de sortir de la boucle sans continuer à la première occurence trouvé ?

    @BufferBob :
    Je ne connaissais pas cette commande et vais l'étudier plus précisément car elle pourrait parfaitement répondre à d'autres besoins(=> le user utilisé pour ce script ne dispose malheureusement pas de droits d'écriture)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    • cat affiche un fichier à l'endroit. tac affiche un fichier à l'envers.
    • Pour sortir à la première occurrence, il suffit d'utiliser la fonction exit:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      $ awk '/\<notice\>/&&/\<rdy\>/&&/\<bsy\>/{print $11;exit;}' htpp.dat 
      595
      $ tac htpp.dat | awk '/\<notice\>/&&/\<rdy\>/&&/\<bsy\>/{print $11;exit;}'
      597
    • awk est déjà une boucle. Donc on peut parcourir à l'endroit sans autre outil, grâce à la clause END post-boucles.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $ awk '/\<notice\>/&&/\<rdy\>/&&/\<bsy\>/{v=$11;} END{print v;}' htpp.dat                                                                                                                 
      597
    • le user utilisé pour ce script ne dispose malheureusement pas de droits d'écriture
      Mais pourquoi voudrais-tu les droits en écriture ? Si c'est à cause de l'expression "writes to the standard output", prends bien en compte que la plupart du temps tu écris sur la sortie standard quand tu écris à l'écran...
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci pour ces nouvelles précisions qui correspondent tout à fait à mes attentes.

    Je mets le sujet en résolu.

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

Discussions similaires

  1. Lancement d'un script PERL via CRON et fichier log
    Par FlaviusPERL dans le forum Langage
    Réponses: 4
    Dernier message: 27/05/2014, 10h53
  2. Script pour fichier log
    Par rar77 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/08/2008, 18h11
  3. script consultation fichier log
    Par rar77 dans le forum VBScript
    Réponses: 1
    Dernier message: 22/08/2008, 13h18
  4. Script pour vider deux fichier logs
    Par Le sicilien dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 09/05/2008, 07h58

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