La stack ELK (Elasticsearch Logstash Kibana), permet de récupérer les logs, de les traiter, de les stocker, et enfin de les visualiser.

La stack se décompose avec les éléments suivants:
- Kibana / Grafana pour visualiser
- Elasticsearch pour le stockage
- Logstash pour le traitement
- Filebeat pour la récupération
Recherche dans Kibana
Dans le menu il suffit d’aller dans Discover, et vous verrez tous les logs dans les X dernières minutes
Vous pouvez affinez votre recherche avec des requêtes Lucene, voici quelques exemples
-
rechercher toutes les erreur 500 sur haproxy avec le host api.immo-sign.com
type: "haproxy" AND http_host: "api.immo-sign.com" AND http_status_code: 500 -
rechercher toutes les requêtes sur haproxy qui ont mit plus de 5s
type: "haproxy" AND time_duration > 5000
Les champs de recherche disponibles dépendent de la configuration de Logstash pour parser les logs.
Dans l’interface Kibana, vous pouvez sélectionner que les champs que vous voulez visualiser en cliquant sur “Toggle column in table”, ce qui permettra d’avoir rendu plus lisible:

Mise à jour de la stack
Il est important à savoir que la mise à jour du cluster Elasticsearch doit se faire après les clients Elasticsearch, ce qui se traduit par:
-
mettre à jour les paquets elasticsearch et logstash sur le premier serveur Logstash
-
quand le premier serveur Logstash est de nouveau disponible faire la même chose sur le deuxième (vérifier dans les logs que le boot de l’application est bien terminée)
-
mettre à jour les paquets sur le premier serveur Kibana
-
désactiver l’allocation des shards
curl -X PUT localhost:9200/_cluster/settings -u sysadmin:PASSWORD_KIBANA_IN_VAULT -H 'Content-Type: application/json' -d '{ "transient" : { "cluster.routing.allocation.enable": "none", "cluster.routing.rebalance.enable" : "none" } }' -
mettre à jour le paquet elasticsearch sur un des noeuds du cluster Elasticsearch
-
quand le serveur est de nouveau disponible réactiver l’allocation des shards
curl -X PUT localhost:9200/_cluster/settings -u sysadmin:PASSWORD_KIBANA_IN_VAULT -H 'Content-Type: application/json' -d '{ "transient" : { "cluster.routing.allocation.enable": "all", "cluster.routing.rebalance.enable" : "all" } }' -
attendre que le status du cluster Elasticsearch repasse au vert
-
recommencer à l’étape 4 pour chaque noeuds du cluster Elasticsearch
-
sur le serveur où les
curlont été fait, lancer la commandehistory -cpour vider l'historique bash -
mettre à jour les paquets sur le deuxième serveur Kibana