La correction est intégrée au TP (Voir les encadrés de couleur vert)
Les prérequis #
Vous devez avoir fait le TP 'Mon premier pipeline'
Configuration des entrées #
Vous devez créer un fichier dans /etc/logstash/conf.d nommé "0-input-file-advanced.conf".
Lecture d'un fichier
Dans ce fichier, vous devez ajouter la configuration logstash pour lire le contenu de tous les fichiers de log commençant par : "/var/log/rousseltm/advanced-".Vous devez ajouter un type pour ce fichier avec comme valeur 'advanced'.Voir la correction
Cet exemeple de configuration va vous permettre de lire ce fichier :
Si vous regardez bien le fichier, vous verrez que de la ligne 1 à la ligne 8 il s'agit de la même ligne de logs. Il faut donc signaler à Logstash qu'il s'agit de la même ligne. On utilise donc un codec de type multiline pour signaler comment identifier chaque début de ligne. Le paramètre 'pattern' supporte le grok.root@logstash-formation:/#cat /etc/logstash/conf.d/0-input-file-advanced.conf input { file { path => "/var/log/rousseltm/advanced-*.log" "type" => "advanced" codec => multiline { pattern => "^\[%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}\] " negate => true what => "previous" } } }
Configuration des filtres #
Vous devez créer un second fichier nommé "101-filter-advances.conf".
Extraction de données
Vous devez identifier le filtre le plus adapté pour un fichier plat et mettre la configuration qui va permettre d'extraire les champs du fichier de logs précédemment lu sachant que ces fichiers sont constitués de plusieurs formats de logs.
Voir la correction
On va utiliser un filtre grok comme il y a plusieurs formats de logs dans le même fichier. On fournira donc plusieurs patternes pour la configuration grok. De plus, on va ajouter une condition 'if' pour que ce nouveau filtre ne traîte que les données de type 'advance'. Il faudra donc revoir votre filtre simple pour faire de même.
Modification de type
On souhaite transformer en entier le champ "HTTP_CODE". En effet, il y a souvent des opérations arithmétiques sur ce champ quand on fait des restitutions (tableau de bord, alertes...). Par exemple afficher tous les codes entre 200 et 205.
Voir la correction
On ajoute un filtre mutate avec l'option convert pour convertir le champ en entier :
root@logstash-formation:/# cat /etc/logstash/conf.d/101-filter-advanced.conf ... mutate { convert => {"http_code" => "integer" } } ...Suppression d'un champ
On va supprimer le champ message comme on a déjà extrait les informations qui nous intéressent.
Voir la correction
On ajoute un bloc remove_field et cela nous donne au global :
root@logstash-formation:/# cat /etc/logstash/conf.d/101-filter-advanced.conf filter { if [type] == "advanced" { grok { match => { "message" => [ "\[(?%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR})\] %{DATA} \[%{NUMBER:http_code}\]: %{WORD:http_verb} %{URIPATHPARAM:http_request}%{GREEDYDATA:others}", "\[(? %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR})\] %{DATA} %{WORD:status}" ] } remove_field => ["message"] } mutate { convert => { "http_code" => "integer" } } } }
Configuration des sorties #
Vous devez modifier le fichier "200-output-file-nginx-access".
Ecriture dans un fichier
Dans ce fichier, vous devez mettre à jour la configuration logstash pour qu'il écrive les logs dans le fichier qui correspond à son 'type'
Voir la correction
Cette configuration va vous permettre d'écrire dans le fichier de manière dynamique en fonction du type de log :
root@logstash-formation:/# cat 200-output-file output { file { path => "/var/log/rousseltm/parsed/%{[type]}.json" } }
Niveau de difficulté : ●●●○○ (3/5)
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Glossaire de la formation
Observabilité
La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...
Elastic Common Schema (ECS)
Une spécification open source qui permet de structurer vos données de manière homogène dans l'écosystème Elastic.
Logstash
Moteur de collecte de données permettant de traiter, d'enrichir et de transformer les logs et autres événements avant de les indexer.
Access Log
Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...
Client IP
L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...
Timestamp
La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.
Request
La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...
Status Code
Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...
Size
Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...
Referrer
L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...
User-Agent
Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...
Response Time
La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...
Articles recommandés
Comprendre la notion de score
Le concept de score va permettre à Elasticsearch de classer vos documents par pertinence lors d u...
Comprendre Elastic Common Schema(ECS)
Comme toujours dans nos missions de conseil, nous recommandons aux entreprises d'uniformiser, de ...
Grail : Dynatrace Data Lakehouse
Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail dont vous pouvez co...
C'est quoi l'observabilité
La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet...
Les types de transactions dans les base de données
Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...
Différences entre Technologies et Services dans Dynatrace
Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...
Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions
Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...
Types de consommation de licence
Comprendre l'évolution de la facturation dans Dynatrace : la différence entre l'ancien modèle de ...
Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative
Découvrez les différents types de services que Dynatrace peut surveiller, leur rôle, et comment l...