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

    elk.png

    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:

    kibana.png

    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:

    1. mettre à jour les paquets elasticsearch et logstash sur le premier serveur Logstash

    2. 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)

    3. mettre à jour les paquets sur le premier serveur Kibana

    4. 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"
       }
      }'
      
    5. mettre à jour le paquet elasticsearch sur un des noeuds du cluster Elasticsearch

    6. 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"
       }
      }'
      
    7. attendre que le status du cluster Elasticsearch repasse au vert

    8. recommencer à l’étape 4 pour chaque noeuds du cluster Elasticsearch

    9. sur le serveur où les curl ont été fait, lancer la commande history -c pour vider l'historique bash

    10. mettre à jour les paquets sur le deuxième serveur Kibana