smars Posté(e) le 9 mars 2011 Partager Posté(e) le 9 mars 2011 Bonjour, Je cherche une application pour Centos 5.5 qui permet de surveiller un fichier de log et de réaliser une action si il voit passer un mot-clé/phrase-clé entré sous regex. J'ai trouvé quelques pistes sans résultats (LogWatch, logcheck, swatch) On m'a aussi proposé de créer un script en partant de cette commande : "tail -f file.log | grep keyword" mais cela ne gère pas les regex et j'aurai préféré une application. Je suis étonné de ne rien trouvé sur le net car cela me semble assez basique. En gros ce que je cherche à faire : Si message "WARNING ......" dans les logs Faire : service ..... restart D'avance merci ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quiproquo Posté(e) le 9 mars 2011 Partager Posté(e) le 9 mars 2011 Je suppose que ça n'existe pas ou peu parce que la plupart des gens pensent que if tail grep fait le boulot. Je suis étonné que ton grep ne gère pas les expressions régulières. Lien vers le commentaire Partager sur d’autres sites More sharing options...
smars Posté(e) le 10 mars 2011 Auteur Partager Posté(e) le 10 mars 2011 Pour le grep c'est réglé, il suffit de faire grep -E ou bien egrep et les expressions régulières sont prisent en compte. J'aurai préféré trouver une application à installer et à paramétrer pour être sur de ne pas créer un script qui pourrait me planter le serveur si j'oublie une hypothèse, je ne suis pas expert en la matière. Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 10 mars 2011 Partager Posté(e) le 10 mars 2011 Bonjour, Une petite question, pourquoi a-tu besoin de redémarrer ton service en surveillant tes log ? Tu peux nous donner l'explication ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
smars Posté(e) le 10 mars 2011 Auteur Partager Posté(e) le 10 mars 2011 C'est un serveur Asterisk sous Centos qui est connecté avec plusieurs gateway téléphonique. Je perds de façon aléatoire la liaison sur une des gateway et cela coupe les appels d'un de mes client. La seule façon que j'ai trouvé de relancer la liaisons, afin que mon client puisse passer à nouveau des appels, est d'exécuter la commande : asterisk -rx 'sip reload' (reload du service sip d'asterisk). La liaison remonte instantanément et mon client peut passer des appels sans que le reste de la production ne soit affecté. Dans les logs, quand la liaison tombe, je n'ai aucune info, par contre dès que le client essaie de passer des appels alors que la liaison est tombée, je reçois dans les logs un "WARNING .......". Je voudrai scanner des logs avec, dès que le "Warning ......." apparaît, le commande "asterisk -rx 'sip reload'" qui s'exécute. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 10 mars 2011 Partager Posté(e) le 10 mars 2011 Je ne connais pas la périodicité ou ça ne fonctionne pas, mais tu peux faire un cron style avec ta commande tous les jours à 3H du matin par exemple . Si ça plante toutes les 10 minutes .... Sinon tu peut être surveiller la liste des processus ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
BarthVonRies Posté(e) le 10 mars 2011 Partager Posté(e) le 10 mars 2011 #!/bin/sh # la regexp à tester REGEXP=^WARNING* # le chemin complet vers le log LOG_TO_WATCH=/chemin/vers/ton/fichier/log # le nombre de lignes à regarder dans le fichier NB_ROWS_TO_WATCH=10 # le délai entre 2 vérifs, 10s pour 10 secondes, 10m pour 10 minutes, etc DELAI=10m while [ "1" -eq "1" ]; do NB_WARN=`tail -$NB_ROWS_TO_WATCH $LOG_TO_WATCH | grep -E '$REGEXP' | wc -l` if [ "$NB_WARN" -ne "0" ]; then asterisk -rx 'sip reload' fi sleep $DELAI done Après, tu ajoutes le chemin vers le script dans le rc.local histoire qu'il soit lancé à chaque démarrage (avec ou sans le & à la fin, je sais plus), et tu devrais être tranquille. Problème: si le log ne se remplit pas très régulièrement, tu risques de faire effectuer la commande en continu car le script lit les 10 dernières lignes du fichier. Inversement, s'il se remplit trop vite, ben le script risque de le rater. Il faudra donc ajuster ce paramètre en fonction de ton log. Enfin, j'ai testé le grep, mais pas la commande complète, donc je garantis pas le fonctionnement du script. A toi de le tester Sinon, tu as pas moyen de faire instancier une connexion au serveur asterisk en ligne de commande (un genre de ping) ? Ca permettrait de tester plus facilement qu'en surveillant le log Lien vers le commentaire Partager sur d’autres sites More sharing options...
AHP_Nils Posté(e) le 18 mai 2011 Partager Posté(e) le 18 mai 2011 Je ne sais pas si cela peut te servir, mais il est possible de superviser Asterisk grâce à Nagios en utilisant la suite de checks Nagisk. Nagios peut exécuter des actions automatiques en cas d'état indisponible, comme envoyer un mail ou déclencher un script (de relance, par exemple). Lien vers le commentaire Partager sur d’autres sites More sharing options...
16ar Posté(e) le 24 mai 2011 Partager Posté(e) le 24 mai 2011 utiliser incron http://inotify.aiken.cz/?section=incron&page=doc〈=en avec le fichier de conf dans ce genre : /chemin/vers/ton/fichier.log IN_CLOSE_WRITE /bin/sh /chemin/vers/ton/script le script sera du genre : #!/bin/sh if [ `tail -1 /chemin/vers/ton/fichier.log | grep ^WARNING | wc -l` -eq 1 ] then asterisk -rx 'sip reload' fi A chaque fois qu'Asterisk ecrira dans le log, le script vérifiera que la derniere ligne du log ne contiennent pas WARNING. Faut esperer que le log n'est pas trop verbeux aussi :) Par contre, ca suppose qu'Asterisk ecrive dans le log ligne par ligne et donc envoie l'evenement IN_CLOSE_WRITE, ligne par ligne. Sinon il faut faire un tail avec une fenetre de plusieurs lignes comme ce que propose Barth Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.