1. Concevoir ses pipelines #
Séparer, simplifier, tester.
Plusieurs pipelines #
# config/pipelines.yml : un pipeline par flux, avec ses propres réglages
- pipeline.id: nginx
path.config: "/etc/logstash/conf.d/nginx.conf"
pipeline.workers: 4
pipeline.batch.size: 250
queue.type: persisted
queue.max_bytes: 4gb
- pipeline.id: app
path.config: "/etc/logstash/conf.d/app.conf"
queue.type: persisted
dead_letter_queue.enable: true- Un pipeline par type de flux : pannes et lenteurs ne se propagent pas d'un flux à l'autre.
- Chaînez des pipelines avec les plugins
pipelineinput/output pour mutualiser des traitements. - Versionnez les fichiers et validez en CI avec
--config.test_and_exit.
2. Filtres performants #
dissect, conditionnels et date.
Préférer dissect à grok #
filter {
if [fields][type] == "nginx" {
dissect {
mapping => { "message" => '%{client_ip} - - [%{ts}] "%{method} %{uri} HTTP/%{http_ver}" %{status} %{bytes}' }
}
date { match => ["ts", "dd/MMM/yyyy:HH:mm:ss Z"] target => "@timestamp" }
mutate { convert => { "status" => "integer" "bytes" => "integer" } remove_field => ["ts", "message"] }
} else if [fields][type] == "app" {
json { source => "message" skip_on_invalid_json => true }
}
# grok seulement pour les formats variables, avec ancrage et motifs précis
grok { match => { "message" => "^%{TIMESTAMP_ISO8601:ts} %{LOGLEVEL:level} %{GREEDYDATA:msg}$" } tag_on_failure => ["_grokfail"] }
}Bonne Pratique :dissectest nettement plus rapide quegrokquand le format est fixe. Réservezgrokaux formats irréguliers et ancrez toujours vos motifs (^...$).
3. Fiabilité et sécurité #
Ne rien perdre, ne rien exposer.
Sorties et DLQ #
output {
elasticsearch {
hosts => ["https://es01:9200", "https://es02:9200"]
api_key => "${ES_API_KEY}" # secret dans le keystore Logstash
ssl_certificate_authorities => ["/etc/logstash/ca.crt"]
data_stream => "true"
data_stream_type => "logs" data_stream_dataset => "nginx" data_stream_namespace => "prod"
}
}
# Secrets : bin/logstash-keystore create && bin/logstash-keystore add ES_API_KEY# Relire la dead letter queue pour corriger les rejets
input { dead_letter_queue { path => "/var/lib/logstash/dead_letter_queue" pipeline_id => "app" commit_offsets => true } }Erreur Courante : Une sortie bloquée (Elasticsearch indisponible) sans file persistante fait perdre les événements ou bloque les entrées. Activezqueue.type: persistedet dimensionnezqueue.max_bytes.
4. Performances et supervision #
Mesurer avant de régler.
API de monitoring et réglages #
curl -s localhost:9600/_node/stats/pipelines?pretty | jq '.pipelines | to_entries[] | {id: .key, in: .value.events.in, out: .value.events.out}'
curl -s 'localhost:9600/_node/stats/jvm?pretty' | jq '.jvm.mem.heap_used_percent'
curl -s 'localhost:9600/_node/hot_threads?human=true' | head -30 # où le CPU est consommé
bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/ # validation| Réglage | Conseil |
|---|---|
pipeline.workers | Égal au nombre de cœurs ; plus si les filtres attendent des E/S |
pipeline.batch.size | 125 par défaut ; 250 – 1000 pour de meilleures performances d'envoi |
| JVM heap | -Xms = -Xmx, 4 – 8 Go typiques |
pipeline.ordered | Désactivez si l'ordre n'importe pas pour paralléliser |
À savoir : Quand le débit augmente fortement, placez Kafka entre les collecteurs et Logstash pour absorber les pics et rejouer les données.
Schéma de référence et vérification rapide #
Visualiser le principe et le contrôler en ligne de commande.
Schéma de référence #
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...