RousselTMLEARNING

TP · Logstash : de la découverte à l'expertise

Mon premier pipeline

Ce que vous allez apprendre dans ce TP
  • Installer Logstash
  • Construire un pipeline
  • utiliser l'input file
  • Combiner différents filtres
  • utiliser le l'output file
  • utiliser les conditions
  • utiliser les variables

Introduction #

Ce que vous allez apprendre dans cette section
  • Installer Logstash
  • Construire un pipeline
  • utiliser l'input file
  • Combiner différents filtres
  • utiliser le l'output file
  • utiliser les conditions
  • utiliser les variables

Ce TP a pour objectif de vous apprendre à construire un pipeline simple qui va permettre de lire un fichier de log, de le traiter et d'écrire dans un nouveau fichier sa sortie

Les prérequis #

Vous devez disposer d'une machine Linux avec Logstash installé. Si vous ne disposez pas d'une machine ou d'un environnement de test, nous vous invitons à faire le TP sur l'installation de Logstash. Pour ceux qui font le TP sur l'environnement de test, vous pouvez demander à Vagrant d'installer Logstash :
export DEPLOY_LOGSTASH=true; vagrant up

Configuration des entrées #

Vous devez créer un fichier dans /etc/logstash/conf.d nommé "0-input-file-nginx-access.conf".
ATTENTION : Dans le cadre de ce TP, nous vous avons précisé le nom du fichier de configuration(0-input-file-nginx-access.conf) mais en entreprise, vous devrez construire votre propre norme de nommage qui s'adapte à votre contexte.
  1. Lecture d'un fichier

    Dans ce fichier, vous devez ajouter la configuration logstash pour lire le contenu du fichier "/var/log/rousseltm/nginx-access.log". Si vous utilisez notre environnement de test Vagrant, les fichiers de logs seront déjà présents sur la VM dans le dossier /var/log/rousseltm. Dans le cas contraire, vous devrez les copier manuellement : .
    Vous devez ajouter un type pour ce fichier avec comme valeur 'nginx_access'.

Configuration des filtres #

Vous devez créer un second fichier nommé "100-filter-nginx-access.conf".

  1. 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 ce fichier à un seul format de log

  2. 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.

  3. Adaptation date

    Comme vous l'avez constaté dans le fichier de log fourni, les logs ne sont pas classés. Si vous n'adaptez pas le champs '@timestamp', vous aurez des logs classés par apparition dans le fichier au lieu d'un classement par date de génération de la ligne de log.

  4. Suppression d'un champ

    On souhaite supprimer les champs
    • event.original
    • message : comme on a déjà extrait les informations qui nous intéressent
    . Il faudra utiliser des méthodes différentes pour les supprimer.
    ATTENTION : Il s'agit d'une bonne pratique pour gagner en espace de stockage et en performance.
    Dans d'autres TP, on verra qu'il faudra supprimer 'message' uniquement dans les cas où on n'a pas d'erreurs de filtres.

Configuration des sorties #

Vous devez créer un fichier dans /etc/logstash/conf.d nommé "200-output-file-nginx-access.conf".

  1. Ecriture dans un fichier

    Dans ce fichier, vous devrez ajouter la configuration logstash pour qu'il écrive notre log traitée dans le fichier "/var/log/rousseltm/parsed/TYPE.json"

Niveau de difficulté : ●●○○○ (2/5)

Mon suivi

  • ⏱ Durée estimée : ≈ 42 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Poser une question

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

Beats : aller plus loin (sécurité, performances, Elastic Agent et migration vers Alloy)

Industrialiser Filebeat, Metricbeat et les autres Beats : sorties sécurisées, processors, modules...

Bonnes pratiques Logstash : pipelines, performances, fiabilité et supervision

Bonnes pratiques Logstash : pipelines multiples, dissect plutôt que grok, conditionnels, persiste...

Fluent Bit : les inputs (entrées) du pipeline en détail

Tout sur les inputs de Fluent Bit : rôle des tags, lecture de fichiers avec tail (positions, rota...

Fluent Bit : pipeline, configuration et plugins essentiels

Les concepts de Fluent Bit (inputs, parsers, filters, tags et match, buffer, outputs), la configu...

Fluent Bit : parsers et filters, structurer et transformer les logs

Structurer et transformer les logs dans Fluent Bit : parsers (json, regex, logfmt, ltsv), parsers...

Fluent Bit : les outputs (sorties), routage et fiabilité de l'envoi

Envoyer les données de Fluent Bit : routage par Match et Match_Regex, sorties Loki, Elasticsearch...

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs...

Query DSL et agrégations avancées Elasticsearch, avec ES|QL

Écrire des requêtes Elasticsearch avancées : bool, filter et score, nested, function_score et per...

Alimenter OpenSearch : pipelines d'ingestion et Data Prepper

Transformer les données avec les pipelines d'ingestion, collecter avec Data Prepper, recevoir l'O...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !