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

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

Différences entre Technologies et Services dans Dynatrace

Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organ...

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'e...

Types de consommation de licence

Comprendre l'évolution de la facturation dans Dynatrace : la différence entre...

Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative

Découvrez les différents types de services que Dynatrace peut surveiller, leu...

Les SLO Dynatrace : Comprendre et Gérer les Objectifs de Niveau de Service

Découvrez comment utiliser les SLO (Service Level Objectives) dans Dynatrace ...

Apdex vs Core Web Vitals

Découvrez les différences entre Apdex et Core Web Vitals, deux indicateurs de...

Comprendre Elastic Common Schema(ECS)

Comme toujours dans nos missions de conseil, nous recommandons aux entreprise...

Pourquoi collecter des métriques

Découvrez les raisons clés pour collecter des métriques avec des exemples con...

Les types de métriques dans Prometheus

Découvrez en détail les quatre types de métriques supportés par Prometheus (C...

Grail : Dynatrace Data Lakehouse

Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail...

Introduction à PromQL

Apprenez à maîtriser PromQL, le langage de requête utilisé dans Prometheus, a...

Dynatrace OneAgent : tags, props, vars CLI

Pense‑bête des commandes CLI/API pour gérer tags, propriétés, variables d'env...

Grafana Alloy : Collecte et Transformation de Télémétrie

Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer lo...

Grafana Alloy : Collecter les métriques système et les logs locaux

Découvrez comment configurer Grafana Alloy pour superviser le serveur sur leq...

Grafana Alloy : L'importance de l'auto-supervision (Self-Monitoring)

Découvrez pourquoi et comment configurer Grafana Alloy pour qu'il se supervis...

Grafana Alloy : Comprendre et exploiter l'Interface Utilisateur (UI)

Découvrez comment activer, sécuriser et utiliser l'interface web intégrée de ...

OTLP expliqué : comprendre le protocole OpenTelemetry

Découvrez le protocole OTLP expliqué simplement. Comprendre les différences e...

Grafana Alloy : Guide complet pour collecter métriques, logs et traces

Tutoriel complet sur Grafana Alloy. Découvrez comment installer, configurer e...

Grafana Alloy : Syntaxe et Configuration (Alloy Language)

Maîtrisez la syntaxe déclarative de Grafana Alloy (langage River), apprenez à...

Grafana Alloy : Collecte de Métriques (Prometheus & Ecosystem)

Apprenez à configurer Grafana Alloy pour collecter, transformer et envoyer de...

C'est quoi l'observabilité

La capacité à connaître l'état interne d'un système à partir des données que ...

Grafana Alloy : Gestion des Logs avec Loki

Découvrez comment configurer Grafana Alloy pour lire des fichiers de logs, jo...

Grafana Alloy : Gestion des Traces avec Tempo

Plongez dans le traitement des traces distribuées. Apprenez à ingérer des tra...

Grafana Alloy : Profilage Continu avec Pyroscope

Découvrez comment configurer le profilage continu (Continuous Profiling) dans...

Grafana Alloy : Déploiement Avancé et Clustering

Apprenez à gérer les déploiements à grande échelle de Grafana Alloy. Configur...

Grafana Assistant : L'IA au service de l'observabilité

Découvrez Grafana Assistant, l'intelligence artificielle intégrée à Grafana C...

Grafana Alloy vs OpenTelemetry Collector : Lequel choisir ?

Comparaison détaillée entre Grafana Alloy et l'OpenTelemetry Collector. Décou...

Grafana Alloy vs Dynatrace ActiveGate : Lequel choisir ?

Comparaison entre Grafana Alloy et Dynatrace ActiveGate. Comprenez les différ...

Grafana Alloy vs Grafana Agent vs Promtail : Lequel choisir ?

Découvrez l'évolution des collecteurs de télémétrie de l'écosystème Grafana. ...

Référence des Composants Grafana Alloy

Un guide de référence complet sur tous les composants disponibles dans Grafan...

Les types de transactions dans les base de données

Cet article détaille les différences entre trois concepts essentiels dans l'e...