1. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Dans le chapitre 1, nous avons vu comment il était possible de réaliser un
dashboard Kibana pour mettre en évidence les données des logs.
Ce travail est rendu possible grâce à Elasticsearch, Logstash et Redis qui
permettent la remontée et la structuration des logs vers Kibana.
L’objectif de ce chapitre sera donc de voir comment configurer ce système
étape par étape.
4. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Shipper :
Le Shipper Logstash permet de récupérer les logs et de les centraliser dans
Logstash.
Logstash a donc deux rôles dans la solution ELK. D’une part, il récupère les
différentes logs pour les stocker dans Redis. D’autre part, il jouera un rôle
d’Indexer par la suite en récupérant les données de Redis.
Ce rôle de Shipper est rendu possible en configurant le fichier shipper.conf situé
dans le répertoire /users/sth00/conf .
5. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Shipper : shipper.conf
2 parties :
-Input : Permet de
prendre les fichiers à
traiter en entrée(s)
-Output : Permet
d’indiquer le traitement à
effectuer en sortie(s)
10. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Redis Broker : Déploiement classique
Le broker permet de servir de buffer entre les agents et le serveur Logstash.
C’est-à-dire que Redis va stocker temporairement les données remontées par le
shipper Logstash.
- Cela permet d’améliorer les performances de l’environnement Logstash en
fournissant une buffer de cache pour les événements de logs.
- Cela permet de fournir de la résilience. Si l’indexer Logstash connaît un
problème, alors les événements sont mise en fils d’attente afin d’éviter la perte
d’informations.
11. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Déploiement sans Redis : Syslog
Dans certains cas, il faut se passer d’un agent Logstash sur les machines hôtes.
- La JVM déployée sur l’hôte est limitée.
- L’hôte dispose de peu de ressources. Impossible d’y installer une JVM ou
d’exécuter un agent.
- On ne peut rien installer sur la machine hôte.
On utilise alors des outils systèmes : Syslog. Dans ce cas, on ajoute alors en
input au fichier indexer.conf de Logstash les événements Syslog
13. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Déploiement sans Redis : Logstash Forwarder
Le dernier cas repose sur Logstash Forwarder, un client léger permettant
d’envoyer des messages à Logstash avec un protocole sécurisé (encryption via
SSL) et compression de données.
Ce client léger n’est pas encore testé actuellement. Sur le papier, son principal
atout est sa faible consommation mémoire et il s’avère utile lorsque la mise en
place d’un agent Syslog ou Logstash est impossible.
Son principe de fonctionnement repose sur le fait d’exécuter Logstash
Forwarder en lui indiquant via fichiers de config les fichiers à prendre en
compte et l’adresse cible niveau serveur.
15. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer :
3 parties :
-Input : On récupère les données
de Redis
-Filters : Tri sur les données
- Mise en place des index
-Output : Envoi des logs vers
Elasticsearch
16. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Input
Le fichier indexer.conf a premièrement pour but de récupérer les données de
Redis en Input. Mais on peut également récupérer d’autres données et traiter
également directement des fichiers, que ce soit des fichiers .log ou encore des
fichiers .csv.
On récupère donc les données serveur par serveur et fichier par fichier pour
qu’ils soient réinjectés dans Logstash.
22. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Filters
Exemple de filtres sur un fichier .csv :
-Ajout de champs renseignant le timestamp ou l’application (principe de key /
value)
-Enrichissement de la date
23. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Filters
Exemple de filtres pour un traitement de log Syslog :
24. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Filters
Exemple de filtres pour un traitement de log Apache :
25. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Filters
Exemple de filtres pour un traitement de log Apache :
26. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Filters
Grok Filter :
Les filtres Grok reposent sur l’utilisation d’expressions régulières pour extraire
l’information des logs.
Logstash est fourni avec un grand nombre de patterns Grok prédéfinis.
Cependant, on peut également créer ses propres patterns dans
users/sth00/patterns.
Pour mettre en place un pattern, il est possible de s’aider de
https://grokdebug.herokuapp.com/ qui effectuera des contrôles sur la validité
de l’expression régulière.
28. Log Processing Elasticsearch
Chapitre 3: ELK, Concepts avancés
QUERY FILTERING
Logstash Indexer : Output
On peut récupérer les erreurs de parsing dues à Grok et les stocker dans un
fichier (ici grokfailure.log) .
Attention à vérifier la taille du fichier fréquemment pour vérifier qu’il ne sature
pas l’espace disque. L’idéal est d’éviter au maximum les erreurs de parsing : En
effet, on constate une nette baisse de performance lorsque l’on envoie ces
données.