[TP] 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)