chapitre3 elk concepts_avances

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

Upload: fabien-sabatier

Post on 12-Aug-2015

114 views

Category:

Data & Analytics


16 download

TRANSCRIPT

Page 1: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 2: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3 :ELK, Concepts avancésQUERY FILTERING

Contexte général :

Page 3: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3 :ELK, Concepts avancésQUERY FILTERING

Page 4: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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 .

Page 5: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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)

Page 6: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Shipper :

Traitement en Input :

Page 7: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Shipper :

Traitement en Output :

Page 8: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3 :ELK, Concepts avancésQUERY FILTERING

Page 9: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Redis Broker : Déploiement classique

Page 10: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 11: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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

Page 12: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Déploiement sans Redis : Syslog

Page 13: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 14: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3 :ELK, Concepts avancésQUERY FILTERING

Page 15: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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

Page 16: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 17: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Input

Données de Redis Données fichiers

Page 18: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Il existe plusieurs manières de filtrer :

Page 19: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Page 20: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Page 21: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Exemple de filtres sur un fichier .csv

Page 22: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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

Page 23: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Exemple de filtres pour un traitement de log Syslog :

Page 24: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Exemple de filtres pour un traitement de log Apache :

Page 25: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Filters

Exemple de filtres pour un traitement de log Apache :

Page 26: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 27: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Logstash Indexer : Output

Page 28: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY 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.

Page 29: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3 :ELK, Concepts avancésQUERY FILTERING

Page 30: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Elasticsearch : /users/ela00/conf/elasticsearch.yml

Exemple de configuration pour le nœud yval0910

Page 31: Chapitre3 elk concepts_avances

Log Processing ElasticsearchChapitre 3: ELK, Concepts avancésQUERY FILTERING

Elasticsearch : elasticsearch.yml

Paramétrage pour Kibana et Marvel (outil de surveillance)