Linux : Les services système

Connaître les limites de syslog et de rsyslog

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Bien que les démons dialoguent avec syslog, vous vous rendrez vite compte des limites de cet outil. Allez plus loin avec rsyslog, qui étend les possibilités de syslog.
07:30

Transcription

Alors notre syslog est la pierre angulaire de la gestion des logs sous Linux. C’est à la fois un protocole et un logiciel on l’a vu mais le logiciel syslog commence à dater un petit peu, il a plein de limitations qu’on va vouloir contourner en utilisant d’autres outils comme par exemple rsyslog qui en est une version plus moderne. La version rsyslog va me permettre d’aller plus loin, notamment dans la sélection des messages d’une part et d’autre part dans qu’est-ce que je vais faire de ces messages. Si je regarde la configuration de rsyslog, la configuration de rsyslog va me décrire tout d’abord un certain nombre de modules que je vais utiliser. Je reviendrais dessus un petit peu après, notamment pour pouvoir recevoir des messages en UDP ou en TCP, qui sont les deux grands protocoles réseaux utilisés. Je descends un petit peu, il me donne également d’autres éléments, c’est son répertoire de travail, la manière dont on représente l'horodatage puisqu’il y a plein de manières de représenter un horodatage. Est-ce que je dis : jour, mois, année, heure, minute, seconde ou le nombre de secondes depuis le démarrage de la machine ou le nombre de secondes depuis le 1er janvier 1970 ou année, mois, jour, heure, minute, seconde, dixième de seconde ? Il y a plein de manières de le faire, c’est défini ici. Tout ce qui commence par un # est commenté. Celui-là, on ne l’a pas commenté parce que par défaut, c’est une écriture synchrone qui serait extrêmement longue. On a la possibilité de rajouter des configurations à partir du contenu d’un répertoire, c'est-à-dire que si je fais un fichier qui s’appelle « toto.conf » dans le répertoire « /etc/rsyslog.d », il sera inclus dans la configuration. Il y a d’autres éléments qui sont dedans, qui ne sont pas les plus importants. Ce qui va m’intéresser, c’est cette partie-là qui est la partie qui ressemble à la partie syslog traditionnelle. Et dans cette partie-là, j’ai des motifs qui sont basés uniquement sur la provenance du message dans la catégorie du message et la gravité. C’est la seule manière que j’ai de pouvoir définir un message. Donc à partir de ce moment-là, je voudrais récupérer des messages, non pas en fonction de la provenance mais en fonction du contenu du message. Je veux récupérer tous les messages qui contiennent le mot-clé « exemple » et que je mette ça dans un fichier qui s’appelle « exemple ». Je vais le faire ici, je vais rajouter une règle à la fin, où je vais dire quoi ? Je vais utiliser des extensions qui ne sont pas dans syslog, qui n’existent que dans rsyslog et notamment, au lieu de donner « catégorie.gravité », je vais mettre un « : ». C’est dire que c’est un truc qui est étendu, ça n’est pas dans le syslog traditionnel. Et la manière de choisir ce que je vais envoyer dans mon fichier, ça va être en fonction du contenu du message et non pas de sa provenance. Donc c’est ce « :msg » qui permet d’avoir ça. Et qu’est-ce que je vais avoir ? Je vais faire un « contains, » et la chaine de caractères. Par exemple, je veux que ça contienne le mot-clé « exemple ». Et qu’est-ce que je fais de ce fichier-là ? Je vais l’envoyer dans « /var/log/Logexemple » dans mon exemple. En faisant cette ligne-là, au lieu de faire une sélection par rapport à la provenance du message, la catégorie du message et la gravité du message, quelle que soit la provenance, quelle que soit la gravité, la sélection du message se fera si jamais il y a la chaine de caractères « exemple » dans le message lui-même. On va essayer ça, je fais Échap, « :w » pour enregistrer, « :q » pour quitter. Ce qu’on va faire, c’est qu’on va redémarrer : « systemctl restart rsyslog ». On va redémarrer rsyslog pour que cette configuration qu’on vient de faire, cette fois, elle soit prise en compte. Ce n’est pas parce qu’on a changé le fichier de configuration que rsyslog l’a immédiatement pris en compte. Il faut redémarrer syslog pour qu’il la prenne en compte. Et maintenant, ce que je vais faire, c’est que je vais envoyer un message à syslog contenant le mot-clé « exemple ». Pour ça, je vais utiliser la commande « logger ». Elle me permet d’envoyer un message au format avec le protocole syslog au daemon syslog qui tourne dans la machine et là, donc en l’occurrence, à mon rsyslog. Pour ça, je fais « logger –p » pour préciser la provenance du message parce que tous les messages de syslog ont une catégorie et une gravité. Donc je vais les préciser, « user.info » par exemple. Et puis derrière, je vais mettre mon message : « Voici un message d’exemple ». Et quand je fais ça, si je fais un « cat /var/log/logexemple », le fichier a été créé et il contient bien mon message. Si jamais j’envoie un autre message, un message autre, voilà : « Voici un message autre », ce message autre n’ira pas dans « /var/log/logexemple » parce qu’il ne contient pas le mot-clé « exemple ». Si je reviens sur mon fichier de configuration, je vais descendre, je peux préciser autre chose que « la catégorie.la gravité », comme ici, ce qu’il y a dans le message. Je peux faire d’autres choses, des choses qui sont assez intéressantes, je peux faire une expression régulière. Voilà, ça c’est une expression régulière que j’ai faite. Ça va être uniquement les messages dont le dernier mot de la ligne est « exemple ». S’il y a un point après l’« exemple », ça ne marchera pas. On peut mettre une expression régulière à cet endroit-là, par rapport au contenu du message. On peut faire une sélection par rapport au nom de la machine avec la directive « :host ». Il y a beaucoup de choses qu’on peut faire. Donc là, c’est pour vous montrer l’avancée que donne rsyslog par rapport à syslog au niveau de la sélection du message. Et maintenant, c’est également intéressant par rapport à la destination du message puisque je peux créer des fichiers qui seront des fichiers dynamiques, c'est-à-dire dont le nom n’est pas statique. Ici, le nom est statique, il s’appelle toujours « logexemple ». Je peux, avec rsyslog, mettre des noms dynamiques. Ce que je vais faire, ça va être de définir tout d’abord un « template ». Je vais essayer de le faire proprement parce que je vais le remettre avant les règles, voilà. Je vais définir ici un « template » : « $template ». Et mon « template », je vais définir un fichier dynamique. Je vais l’appeler « DynamicFile, » et cette fois je vais donner le nom dynamique que je veux avoir, en l’occurrence « /var/log/% » pour dire que je vais appeler une variable, « $DAY » pour dire que c’est le jour d’aujourd’hui, « %.log ». Le fichier, son nom sera un « numéro.log », le numéro correspondant au numéro du jour. Alors, comme une fois que j’ai fait ça, je vais reprendre cette ligne-là. Donc je vais faire un copier-coller tout simplement. Pour ça, je fais « Y + Y » pour copier et « P » pour coller. Donc ça va être avec le même motif. Et dans le même motif, au lieu ici d’avoir le nom du fichier, à la place, je mets un « ? ». Ça veut dire que je vais appeler le « template » que j’ai défini auparavant. Donc là, je vais appeler quel « template » ? Le « template DynamicFile ». Et en faisant ça, normalement le système, quand un message va aller dans « messages », il va également, puisque c’est le même motif, aller dans le « template DynamicFile » dans « /var/log/ », le numéro du jour, « .log ». On va essayer ça. Je fais « Échap », « : w » pour enregistrer, « :q » pour quitter, j’efface la page, je fais un « systemctl restart rsyslog ». Et ce que je vais faire maintenant, c’est que je vais faire un « logger -p user.info » pour avoir un message qui va aller dedans et le message, ça va être « hello ». Cette fois, si je fais un « ls -l /var/log », qu’est-ce que je vais voir apparaitre ? J’ai tout plein de choses qui apparaissent et j’ai ce fameux fichier, on le voit. On est le 31 mars, le fichier s’appelle « 31.log » et si je regarde ce qu’il y a dedans : « cat /var/log/31.log », j’ai bien les messages de redémarrage de syslog qui ont été attrapés dans le fichier « messages » mais également le message « hello » que j’avais. Donc ça me permet de voir que rsyslog est capable de faire des sélections de messages plus précises et également avoir des destinations de message beaucoup plus fines que ce qu’on faisait avec syslog.

Linux : Les services système

Découvrez les services qui tournent en permanence sur votre système et adaptez-les en fonction de vos besoins. Abordez la gestion des logs, la synchronisation horaire, etc.

2h16 (22 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :25 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !