00 - Pourquoi Logstash existe encore en 2026
Ce que tu vas apprendre
- Ce qu'est Logstash et quel problème il resout
- Sa place dans l'Elastic Stack (et pourquoi il n'a pas ete remplace)
- La différence entre Logstash, Filebeat et les ingest pipelines
- Ce que cette serie couvre en 31 articles
- A qui elle s'adresse
Prerequisites
Aucun. Si tu sais ce qu'est un fichier de log, tu peux suivre.
Le jour ou j'ai perdu 4 heures a chercher un bug en prod
Février 2023. Une API que j'avais déployée pour un client renvoie des 500 sporadiques. Pas tout le temps, juste assez pour que les utilisateurs ralent. Le monitoring remonte des erreurs, mais les messages sont vagues. Je me connecte au serveur, je grep dans les fichiers de log. Rien. Les logs ont rotate, et ceux de la nuit dernière sont partis.
J'ouvre un deuxieme serveur (l'app tourne sur deux instances). Memes logs, meme neant. Le bug se produit quand les deux instances ecrivent en meme temps dans la base. Pour le voir, il fallait correler les logs des deux serveurs, avec les timestamps alignes. Sur des fichiers texte bruts, a la main, c'est un cauchemar.
Ce jour-la, j'ai installe un Elastic Stack. Logstash au milieu. Tous les logs centralises, parsees, cherchables. Le bug est apparu en 10 minutes dans Kibana : un deadlock PostgreSQL quand deux requêtes UPDATE touchaient la meme ligne.
4 heures de grep remplacees par 10 minutes de recherche dans Kibana. C'est ca, le problème que Logstash resout.
Logstash, c'est quoi
Logstash est un pipeline de traitement de donnees. Il prend des donnees en entree (des logs, des événements, des lignes de base de donnees), les transforme, et les envoie quelque part (Elasticsearch, un fichier, Kafka, S3).
En une phrase : Logstash est un tuyau intelligent entre tes sources de donnees et tes destinations.
Le concept tient en trois blocs :
┌─────────┐ ┌──────────┐ ┌──────────┐
│ INPUT │ ──> │ FILTER │ ──> │ OUTPUT │
│ │ │ │ │ │
│ fichiers │ │ parser │ │ Elastic │
│ beats │ │ enrichir │ │ Kafka │
│ kafka │ │ nettoyer │ │ fichier │
│ http │ │ convertir│ │ S3 │
│ jdbc │ │ │ │ stdout │
└─────────┘ └──────────┘ └──────────┘
L'input lit les donnees. Le filter les transforme. L'output les envoie. C'est tout. Toute la puissance de Logstash vient de la quantité de plugins disponibles pour chaque bloc et de la facon dont tu peux les combiner.
Pourquoi Logstash n'a pas ete remplace
Question legitime. Elastic a sorti Filebeat en 2015, les ingest pipelines d'Elasticsearch en 2016. Pourquoi Logstash est toujours la ?
Parce que chaque outil a son perimetre.
┌──────────────────────────────────────────────────────────────┐
│ Quand utiliser quoi │
├──────────────┬──────────────┬────────────────────────────────┤
│ Filebeat │ Logstash │ Ingest Pipelines │
├──────────────┼──────────────┼────────────────────────────────┤
│ Collecter │ Transformer │ Transformations legeres │
│ des fichiers │ des donnees │ a l'indexation │
│ de logs │ complexes │ │
├──────────────┼──────────────┼────────────────────────────────┤
│ Leger │ Lourd │ Pas de process supplementaire │
│ (~15 Mo RAM) │ (~1 Go RAM) │ (tourne dans ES) │
├──────────────┼──────────────┼────────────────────────────────┤
│ Pas de │ Grok, Ruby, │ Grok, convert, rename │
│ parsing │ JDBC, agreg. │ (limites) │
│ complexe │ enrichment │ │
├──────────────┼──────────────┼────────────────────────────────┤
│ Envoie vers │ Envoie vers │ Uniquement dans ES │
│ ES ou │ n'importe │ │
│ Logstash │ ou │ │
└──────────────┴──────────────┴────────────────────────────────┘
Filebeat est un collecteur. Il lit des fichiers, il les envoie. Il ne sait pas parser une ligne Apache, il ne sait pas interroger une base PostgreSQL, il ne sait pas enrichir un événement avec des donnees GeoIP. Logstash fait tout ca.
Les ingest pipelines tournent dans Elasticsearch. Elles sont pratiques pour des transformations simples (renommer un champ, parser une date), mais elles n'ont pas d'inputs externes. Tu ne peux pas lire un topic Kafka ou poller une table SQL avec une ingest pipeline.
Logstash, c'est le couteau suisse. Tu en as besoin quand :
- Tu dois parser des logs non structures (Grok, Dissect)
- Tu dois lire depuis plusieurs sources (Kafka, JDBC, HTTP, Beats)
- Tu dois enrichir les donnees (GeoIP, lookups en base, dictionnaires)
- Tu dois envoyer vers plusieurs destinations (fan-out)
- Tu as de la logique conditionnelle complexe (if/else sur les champs)
Sa place dans l'Elastic Stack
L'Elastic Stack, c'est quatre composants :
┌───────────────────────────────────────────────────────────────┐
│ Elastic Stack │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ │ │ │ │ │ │ │ │
│ │ Beats │──>│ Logstash │──>│ Elastic │──>│ Kibana │ │
│ │ │ │ │ │ search │ │ │ │
│ │ collecte │ │ transfo │ │ stockage │ │ visu │ │
│ │ │ │ │ │ recherche│ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ Filebeat Input Index Dashboard │
│ Metricbeat Filter Search Discover │
│ Heartbeat Output Aggregate Alerting │
└───────────────────────────────────────────────────────────────┘
Beats collecte les donnees sur les machines. Logstash les transforme. Elasticsearch les stocke et les rend cherchables. Kibana les affiche.
Tu n'es pas oblige d'utiliser les quatre. Filebeat peut envoyer directement a Elasticsearch. Mais des que tu as besoin de transformer les donnees entre la collecte et le stockage, Logstash entre en jeu.
Pour qui est cette serie
Tu es dev backend et tes logs sont des fichiers texte que personne ne lit ? Cette serie est pour toi. Tu es devops et tu veux comprendre comment construire un pipeline de logs propre ? Aussi. Tu fais de l'ETL et tu cherches un outil pour synchroniser une base SQL vers Elasticsearch ? On couvre ca.
Sur paltemps.fr, Logstash est au coeur de la stack d'observabilité. Les logs applicatifs passent par Logstash avant d'arriver dans Elasticsearch. Cette serie explique comment on a monte ca, et comment tu peux faire pareil.
Cette serie ne suppose pas que tu connaisses deja Elasticsearch. On installe tout depuis zero avec Docker. Par contre, si tu as lu la serie Docker pour les devs, tu seras plus a l'aise avec les compose.yaml.
Ce qu'on va couvrir
| # | Article | Sujet |
|---|---|---|
| 00 | Introduction | Pourquoi Logstash, vue d'ensemble |
| 01 | L'Elastic Stack | Composants, flux de donnees, architecture |
| 02 | Installation Docker | Setup complet avec Docker Compose |
| 03 | Anatomie d'un pipeline | Input, filter, output et le modèle d'événement |
| 04 | Inputs stdin et file | Lire des donnees locales, sincedb |
| 05 | Input Beats | Recevoir des logs de Filebeat |
| 06 | Inputs HTTP, TCP, UDP | Recevoir des donnees réseau et webhooks |
| 07 | Inputs Kafka et JDBC | Sources avancees : messages et bases de donnees |
| 08 | Les codecs | Decoder et encoder les donnees |
| 09 | Filtre Grok | Parser n'importe quel log avec des patterns |
| 10 | Filtre Dissect | Parser sans regex, plus vite |
| 11 | Filtre Mutate | Transformer, renommer, supprimer des champs |
| 12 | Filtres Date et GeoIP | Parser les dates, geolocaliser les IPs |
| 13 | Filtres KV, JSON, XML | Parser les formats structures |
| 14 | Filtre Ruby | Code custom quand rien d'autre ne marche |
| 15 | Aggregate et Metrics | Correler les événements, calculer des metriques |
| 16 | Conditionnels | if/else et routage des événements |
| 17 | Output Elasticsearch | Envoyer les donnees, index naming, ILM |
| 18 | Outputs file, stdout et autres | Kafka, S3, HTTP, fan-out |
| 19 | Multiline | Stack traces Java, logs multi-lignes |
| 20 | Pipelines multiples | pipeline-to-pipeline, isolation |
| 21 | Performance | Workers, batch size, JVM, persistent queue |
| 22 | Monitoring | API de monitoring, Metricbeat, metriques |
| 23 | Dead Letter Queue | Récupérer les événements rejetes |
| 24 | Sécurité | SSL/TLS, authentification, secrets |
| 25 | Debugging | Techniques pour debugger un pipeline |
| 26 | Testing | Tester ses pipelines avant la prod |
| 27 | Cas pratique : logs applicatifs | Stack complète Node.js + ELK |
| 28 | Cas pratique : ETL PostgreSQL | Sync incrementale DB vers Elasticsearch |
| 29 | Cas pratique : enrichissement | Enrichir des donnees en temps réel |
| 30 | Production | Architecture HA, sizing, bonnes pratiques |
| 31 | Glossaire | Tous les termes de la serie |
Chaque article est independant, mais ils sont penses pour etre lus dans l'ordre si tu debutes.
Un premier contact
Si tu veux voir Logstash tourner tout de suite, sans rien configurer :
bashdocker run --rm -it docker.elastic.co/logstash/logstash:8.17.0 \
-e 'input { stdin {} } output { stdout { codec => rubydebug } }'
Attends que Logstash démarré (ca prend 30 secondes, la JVM est gourmande). Tape un message et appuie sur Entree :
salut logstash
Tu verras quelque chose comme :
json{
"@timestamp" => 2026-03-31T10:15:42.123456Z,
"@version" => "1",
"message" => "salut logstash",
"host" => {
"hostname" => "a1b2c3d4e5f6"
}
}
Logstash a pris ta ligne de texte, l'a transformee en événement structure avec un timestamp, et l'a affichee. C'est le pipeline le plus simple possible : stdin en entree, rubydebug en sortie. Toute cette serie est une exploration de ce qu'on peut mettre entre les deux.
Ce que Logstash ne fait pas
Logstash ne stocke pas les donnees. Il ne les affiche pas. Il ne remplace pas un message broker (meme s'il peut lire et écrire dans Kafka). C'est un pipeline de transformation, pas une base de donnees et pas un outil de visualisation.
Il ne remplace pas non plus Filebeat pour la collecte de fichiers. Si tu veux juste envoyer des logs d'un serveur a Elasticsearch sans transformation, Filebeat suffit et consomme 50 fois moins de RAM.
Logstash est le bon choix quand tu as besoin de transformer, enrichir ou router les donnees entre la source et la destination.
Résumé
- Logstash est un pipeline de traitement de donnees en trois blocs : input, filter, output
- Il fait partie de l'Elastic Stack mais peut fonctionner seul
- Filebeat collecte, Logstash transforme, Elasticsearch stocke, Kibana affiche
- Logstash est nécessaire quand tu as du parsing complexe, des sources variees ou du routage conditionnel
- Cette serie couvre Logstash de A a Z en 31 articles, de l'installation a la production
Suivant : 01 - L'Elastic Stack de A a Z