La stack ELK (Elasticsearch Logstash Kibana) est rapidement devenue la plateforme de centralisation et d’analyse de logs la plus populaire au monde, avec plusieurs millions de téléchargements par mois.
Les fondements open source du produit, la scalabilité, la rapidité, le haut niveau de disponibilité des outils, ainsi que la communauté grandissante d’utilisateurs représentent des raisons qui justifient grandement son adoption.

Daniel Berman, passionné de cloud, analyse de logs, big data et autres thématiques orientées DevOps, chez Logz.io, a publié un article mettant en avant les différents enjeux relatifs à l’installation d’une stack ELK complète.

Les aspects que nous allons développer dans cet article reflètent ce qu’un déploiement ELK doit inclure, et ce qu’il nécessite dès sa mise en place. Ces recommandations sont basées sur l’idée que nous déployons une stack ELK hautement disponible et évolutive, à partir de zéro.

L’installation

L’installation d’ELK est plutôt simple et ne cause généralement pas de gros problèmes.
Démarrer les toutes premières instances d’Elasticsearch Logstash Kibana s’avère même plutôt très intuitif.

En revanche, on peut quand-même rencontrer quelques difficultés au moment de relier les différents composants de la solution entre eux.

En fonction d’une installation en local, cloud ou hybride, il est possible de rencontrer des problèmes de configuration et de mise en réseau. Le fait que Kibana ne se connecte pas à Elasticsearch, qu’il ne parvienne pas à extraire la structure des données, que Logstash ne fonctionne pas ou n’envoie pas de données sont des problèmes rencontrés fréquemment.

Retrouvez ici un article sur les erreurs ELK les plus fréquentes.

 

Une fois que ces petits tracas -plutôt classiques- sont résolus, les différentes instances doivent communiquer par le biais d’un pipeline. La configuration de ce pipeline dépend grandement du type de logs que vous souhaitez importer, et du type de source de données à partir de laquelle vous extrairez les logs. Il est possible, par exemple, de stocker des logs de bases de données, des logs de serveurs web ou des journaux d’application … . Bien souvent, les données de logs peuvent provenir de diverses sources. La configuration du pipeline et les différents « branchements » dans Logstash peuvent s’avérer très compliqués, et les erreurs de configuration peuvent faire tomber complètement l’ensemble du pipeline.

Le parsing

C’est une chose de stocker des logs dans la stack, mais c’en est une autre de leur donner un sens. Lorsque vous essayez d’analyser vos données, il est intéressant que les messages s’organisent de manière logique, en ayant du sens.

C’est là qu’intervient l’analyse syntaxique. Elle embellit les données dans le but d’analyser plus facilement les différents champs constituant le message de log.

Focus sur l’analyse syntaxique

Qu’est-ce qu’un filtre grok sur ELK ?

La capacité d’analyser et d’interroger efficacement les données envoyées dans la stack ELK dépend de la qualité de l’information. Cela signifie que, lorsque des données non structurées sont collectées, elles doivent être traduites en messages pertinents.

Cette tâche critique est généralement attribuée à Logstash. Quelle que soit la source de données utilisée, il est nécessaire d' »embellir » un peu les données extraites des logs, afin de s’assurer qu’ils sont correctement analysés avant d’être envoyés à Elasticsearch.

La manipulation des données dans Logstash est réalisée à l’aide de plug-ins de filtrage. Logstash Grok en est un des plus populaires, quant à la transformation des données non structurées en données structurées. C’est un type de filtre qui peut être appliqué aux logs avant qu’ils ne soient transférés dans Elasticsearch. Il joue un rôle important dans le pipeline de journalisation.

Le data mapping

Le mapping d’Elasticsearch définit les différents champs qui résident dans un index, et permet de mettre en correspondance des données ensemble. Il définit les champs pour les documents d’un type spécifique – le type de données (comme les variables « string » et « integer » ) et comment les champs doivent être indexés et stockés dans Elasticsearch.

Avec la structuration dynamique des données (qui est activée par défaut), Elasticsearch inspecte automatiquement les propriétés JSON dans les documents avant l’indexation et le stockage. Toutefois, si vos logs changent et que vous indexez des documents avec une structuration différente, ils ne seront pas indexés par Elasticsearch. Ainsi, à moins de surveiller les journaux Elasticsearch, vous ne remarquerez probablement pas l’erreur «MapperParsingException» résultante, et perdrez ainsi les logs rejetés par Elasticsearch.

Le scaling

Une fois le pipeline configuré, et que les et les logs se stockent, il est nécessaire de garantir une disponibilité et une évolutivité élevées. Un déploiement ELK se doit donc d’être suffisamment robuste pour gérer la pression. Par exemple, un événement survenant en production provoquera une augmentation soudaine du trafic, avec plus de journaux générés que d’habitude. De tels cas nécessiteront l’installation de composants supplémentaires dans la stack ELK.

Il est, par exemple, recommandé de placer un système de file d’attente (queueing) devant Logstash. Cela garantit que des goulets d’étranglement ne se forment pas pendant les périodes de fort trafic et que Logstash ne tombe pas lors d’une arrivée massive de données.

Le tuning

Conçue pour être évolutive, rapide et hautement réactive, la stack ELK – ainsi que l’infrastructure (serveur, système d’exploitation, réseau) sur laquelle elle est installée – nécessitent d’être réglées et optimisées de façon précise pour garantir des performances élevées.

Il est totalement possible de configurer les allocations pour les différents types de mémoire utilisés par Elasticsearch, comme la Java Virtual Machine (JVM), et la RAM du système d’exploitation. Le nombre d’indices gérés par Elasticsearch affecte les performances. Il est donc indispensable de supprimer ou de geler les index anciens et inutilisés.

De nombreuses tâches affectent les performances d’un déploiement ELK, comme l’ajustement de la taille des partitions, la configuration de la fusion des partitions pour les indices inutilisés, la récupération des partitions en cas de panne … . Ces tâches nécessitent donc d’être planifiées.

Bien évidemment, il ne s’agit ici que de quelques exemples du travail requis pour maintenir un déploiement ELK.

Le stockage des données

Qu’advient-il de toutes les données une fois ingérées dans Elasticsearch? Les indices s’accumulent et -s’ils ne sont pas pris en charge – il se peut qu’Elasticsearch crashe et perde des données. Il est donc possible de supprimer manuellement les anciens index. Bien sûr, l’exécution manuelle de ces tâches dans des déploiements volumineux n’est pas possible, et doit s’effectuer par le biais d’un cron (programme permettant d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance, ou selon un cycle défini à l’avance).

Les mises à niveau de la stack ELK

La gestion d’une mise à niveau de la stack ELK est une tâche plutôt complexe qui se doit d’être réalisée de façon professionnelle. En fait, la mise à niveau d’un grand déploiement ELK en production est une tâche si difficile que l’on trouve encore de nombreuses entreprises qui utilisent des versions plutôt anciennes.

IDFOR Solutions vous accompagne dans le processus de mise à jour de votre stack ELK.

Le souci principal lors d’une mise à niveau d’Elasticsearch est bien évidemment de s’assurer qu’aucune donnée ne sera perdue. Il faut en faire une priorité absolue. Il faut donc faire attention à la réplication et à la synchronisation des données lors de la mise à niveau d’un nœud à la fois. Cela peut s’avérer d’autant plus compliqué pour un cluster multi-nœuds! La mise à niveau incrémentielle n’est même pas une option lors de la migration vers une version majeure, qui est une action qui nécessite un redémarrage complet du cluster.

La mise à jour de Kibana peut donc engendrer, parfois, quelques problèmes de plug-ins, et des besoins de réécriture totale de certaines visualisations. Elle doit donc être faite avec beaucoup de sérieux et de minutie.

L’infrastructure

Voyez grand

Au fur et à mesure qu’une entreprise se développe, de plus en plus de logs sont traités dans la stack ELK Cela signifie donc qu’un besoin naît d’avoir plus de serveurs, que l’utilisation du réseau et le stockage augmentent. La quantité totale de ressources informatiques nécessaires pour traiter tout ce trafic peut donc s’avérer rapidement importante.

Les systèmes de gestion de logs consomment d’énormes quantités de CPU, de bande passante réseau, d’espace disque et de mémoire. Les arrivées massives de logs sont des phénomènes fréquents, et lorsqu’une erreur a lieu en production, le système peut générer un grand nombre de fichiers de logs. Le système doit donc suivre techniquement, à tous les niveaux !

Ainsi, l’infrastructure technique sous-jacente nécessaire pour faire tourner une stack entière peut représenter, pour certaines sociétés, des budgets annuels très importants.

La sécurité

Dans de nombreux cas, les logs que vous recueillez sont susceptibles de contenir des informations sensibles vous concernant, concernant vos clients … ou même les deux !

Vous vous attendez à ce que vos données soient sécurisées ? Vos clients aussi. Par conséquent, les fonctions de sécurité – telles que l’authentification – sont indispensables pour protéger, à la fois les journaux logs entrant dans votre pile ELK, et … votre entreprise en général !

Elastic propose des modules de sécurité supplémentaires, permettant d’intégrer des systèmes d’authentification comme Active Directory et LDAP, un système de gestion d’identités local, ou même une authentification native intégrée. Le pack de sécurité d’Elastic propose même de conserver un enregistrement complet de toutes les activités du système et des utilisateurs. Il contribue au respect des politiques et des réglementations de sécurité interne comme HIPAA (concernant la santé), PCI DSS (pour les cartes de paiement), FISMA et ISO (normes internationales).

stack elk elasticsearch logstask kibana security login

Copyright: https://www.elastic.co/fr/products/x-pack/security

Des milliers d’entreprises ont implémenté et gèrent leurs propres stacks ELK. L’enjeu se situe principalement dans la quantité de ressources que vous pourrez y allouer, vous aussi. Nos experts vous accompagnent de façon personnalisée, de A à Z, de la définition de vos besoins, jusqu’au déploiement !

Autres sources :

« The cost of doing the ELK Stack on your own » : https://dzone.com/articles/the-cost-of-doing-theelk-stack-on-your-own ;
« A beginner’s guide to Logstash Grok » : https://logz.io/blog/logstash-grok/ ;
Site web d’Elastic : https://www.elastic.co/fr/products/x-pack/security ;
Site web de Logz.io : https://logz.io/ ;

Les articles que nous rédigeons sont le fruit 🍏 de plusieurs heures de dur labeur. Ainsi, nous vous serions reconnaissants de pas plagier nos travaux qui sont protégés par le droit d’auteur 📜. Toutefois, vous êtes libres de les partager ou de nous faire part de vos remarques.

Si vous avez trouvé une erreur sur cette page, vous pouvez nous en informer en sélectionnant le texte en question, et en appuyant sur Ctrl + Entrée. Merci 🙂 !

La Stack ELK – Elasticsearch Logstash Kibana
5 (100%) 4 vote[s]

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :