Dans cet article nous allons découvrir le fonctionnement des différents composants de la stack Elastic (les slides de la présentation complète sont ci dessous).
Elastic Stack ELK ou elastic stack, est une suite construite sur une fondation open source, elle permet de rechercher, analyser et visualiser, en toute fiabilité et sécurité, ainsi qu’en temps réel, des données issues de n’importe quelle source et sous n’importe quel format. La suite elastic est composée de la pile ELK (qui combine Elasticsearch, Logstash et Kibana ) et la famille d’expéditeurs de données “Beats” :
1- ELK (Elasticsearch, Logstash et Kibana)
1.1 - Elasticsearch
Il permet via une API REST d’indexer et d’interroger facilement à l’aide de requêtes au format JSON les documents stockés dans une base NoSQL. Cette base est adaptée pour traiter de très gros volumes de données suivant des critères d’indexation complètement paramétrables afin d’optimiser les recherches.
1.2 - Logstash
Collecte et traite (parse et filtre) en parallèle des données provenant d’une multitude de sources, puis les agrège et les envoie vers Elasticsearch.
Son fichier de configuration est composé de 3 parties :
Entrées : données de toutes formes, tailles et sources
Filtres : via une bibliothèque de filtres très riche, Logstash permet d'analyser et transformer les données afin de booster l'analyse.
Sorties: choisir l'entrepôt (Elasticsearch) et envoyer les données
1.3 - Kibana
IHM de visualisation et de gestion permettant de consulter et d'explorer via des dashboards interactifs, paramétrables et entièrement personnalisables, des les données stockées dans Elasticsearch .
Autrement dit, c'est une interface interagissant avec Elasticsearch pour mettre en forme les données via : Des graphiques, histogramme, carte géo.. etc.
2 - Beats
Beats est une plate-forme regroupant des solutions légères de transfert qui envoient des données provenant de toutes les machines vers Logstash ou Elasticsearch.
Ces expéditeurs légers permettent de centraliser les données dans Elasticsearch. Et, pour davantage de puissance de traitement, les Beats peuvent également transférer ces données vers Logstash, qui se chargera de les transformer et de les analyser.
Il existe plus de 93 agents Beats. Parmi les plus connus, nous pouvons trouver ces 3 exemples :
Metricbeat : Agent de transfert léger conçu pour les indicateurs (un tas de métriques, notamment système ... ) qui
interroge périodiquement les API s de surveillance des différents services
collecte les données de performances / les stats dans des documents
Les expédier à Logstash ou Elasticsearch
Filebeat : Agent de transfert léger conçu pour les logs
Heartbeat : Agent de transfert léger conçu pour assurer le monitoring de la disponibilité.
Il exécute des contrôles périodiques pour vérifier si le point de terminaison (HTTP, TCP ou ICMP ) est disponible ou indisponible.
De là, il rapporte cette information à Elasticsearch, accompagnée d’autres indicateurs utiles.
Cette information est automatiquement affichée dans des tableaux de bord Kibana pré-conçus pour le monitoring de la disponibilité.
En résumé, voici le schéma général de la stack :
3 - Bonus
3.1 - Curator
Le Curator est outil indépendant d’Elasticsearch qui permet de réaliser des opérations diverses sur un cluster, le plus souvent déclenchées par des tâches périodiques cron.
Il a 2 fichiers importants :
un fichier de configuration qui contient toutes les informations pour se connecter au cluster Elasticsearch
un fichier d’action contenant les filtres permettant de déterminer quels index sont concernés (motif sur le nom, âge, taille ou nombre de documents…), puis une série d’actions (compression, déplacement, optimisation..)
Voici un exemple d'action pratique à faire avec Curator (Suppression d'index Elasticsearch) :
actions:
1:
action: delete_indices
description: >-
Supprimer les index de plus de 15 jours (en fonction du nom)
commençant par le prefixe "oxxeo_logstash" en ignorant les
erreurs si le filtre n'aboutit pas un résultat.
options:
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: oxxeo_logstash-
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 15
Utilité --> ça permettra de définir une stratégie de rétention de données dans l'Elasticsearch
3.2 - ElastAlert
ElastAlert est un framework gratuit, développé par la société Yelp.
Représente une alternative aux outils de Reporting et Alerting fournis par Elastic dans la partie payante X-pack.
Il permet de remonter des alertes (anomalies, pics … )
Fonctionne avec toutes les versions d’Elasticsearch
Les différents types d'alertes sont :
Email
JIRA
OpsGenie
Commands
HipChat
MS Teams
Slack
Telegram
GoogleChat
AWS SNS
VictorOps
PagerDuty
PagerTree
Exotel
Twilio
Gitter
Line Notify
Zabbix
Conclusion
On peut dire que les logs sont des éléments indispensables à toutes les applications pour comprendre le fonctionnement, analyser, diagnostiquer et intervenir en conséquence.
Un des moyens les plus simples d’avoir une gestion proactive du SI est de vérifier régulièrement ces logs et réagir sur une information qui indique une dégradation du système ou de l’application.
La stack Elastic peut apporter une excellente solution de suivi et de monitoring.
NB : cet article est inspiré et développé, en partie, à partir des données contenues dans la documentation officielle https://www.elastic.co/guide/index.html
Commentaires