Débuter avec ELK : Elasticsearch, Logstash et Kibana

Print Friendly, PDF & Email

L’observabilité est quelque d’important dans le monde du devops et des SRE. On entend par observabilité 3 choses principalement :

  • le monitoring
  • la centralisation de logs
  • le tracing

En ce qui concerne du monitoring on a déjà un peu parlé de prometheus/grafana mais il existe de nombreux tous aussi sympas les uns que les autres. Prometheus apporte un peu de fraîcheur sur l’observation des services et la simplicité de mise en place. Et il ouvre une large porte sur le monitoring dans des clusters de machines portant des conteneurs (par exemple kubernetes).

En ce qui concerne la centralisation de logs, la machine qui ne dispose pas encore de rivaux c’est la stack Elastic à savoir : elasticsearch, logstash et kibana (ELK). Certes loki, de la société grafana labs pointe le bout de son nez mais le service reste assez différent et primaire (ce qui apporte d’autres atouts comme la simplicité et l’économie des ressources).

Voyons un peu ce que l’on peut dire de ELK.

Qu’est-ce que ELK ?

Tout de suite commençons par casser une idée reçue qui limite la stack ELK à la centralisation de logs. Elastic, c’est avant tout la possibilité de processer de la données en gros volumes, de la traiter, de l’analyser, de la visualiser… mais surtout pas que des logs. Cette stack est d’ailleurs très utilisée par de nombreux datascientists.

ELK c’est aussi la possibilité de mettre en place un SIEM (Security Information and Event Management). En gros la centralisation de logs et de données centrées sur la sécurité des systèmes et réseaux… par exemple des logs de firewall ou faire de l’analyse de paquets.

Découvrez  Débuter avec Prometheus et se former

Alors Elastic est une société commerciale qui doit gagner sa vie. Pour cela elle propose une version payante de sa stack appelée : xpack. Cela permet d’avoir des niveaux avancés dans de nombreux services proposés (APM, siem, machine learning, authentification…).

Elasticsearch est l’un des meilleures voir la meilleure base de données document en recherche full text. Grâce notamment à un système d’indexation inversée (ES utilise Lucene), la recherche de texte est facilité avec de nombreux paramètres pour améliorer sa perfomance en la faisant s’adapter le plus possible à votre besoin. Comme toutes les bases nosql, elle est distribuée et hautement scallable (centaines… voir milliers de noeuds). Sa force repose sur le sharding c’est à dire son mode de partionnement permettant distribution et réplication de manière efficace). L’outil est interrogeable via API sur le port 9200 et répond en json.

Logstash c’est un véritable ETL. On peut entendre des qualifications parfois réductrices de Logstash mais il s’agit bien d’un ETL (Extract, Transform and Load). Il va donc accueillir les datas (par exemple des logs) via une entrée précise (input). Logstash sait aussi lire d’autres bases de données ou des messages queues etc… Ensuite grâce à des filtre, il va pouvoir retraiter cette donnée. Pour l’enrichir, l’agréger, la formatter… Enfin, il va permettre d’exporter vers d’autres récepteurs nommés output comme par exemple elasticsearch.

Kibana c’est l’interface graphique qui permet l’exploitation facilitée et une partie du management d’Elasticsearch. Vous pourrez aussi bien organiser les backups, assurer les restaurations de vos index comme créer des graphiques et autres dashboards pour analyser vos données.

Découvrez  Formation prometheus/grafana, promql suite

Installation de la stack ELK

Au fur et à mesure du temps les choses se sont bien simplfiées côté installation de ELK. Et maintenant on peut faire intégralement l’installation par simple paquets à partir du dépôt d’Elastic (par exemple Debian).

Commençons par installer le dépôt :

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update

Simple comme d’habitude sur linux.

Ensuite installons Elasticsearch :

sudo apt-get install elasticsearch

Alors ES utilise vraiment beaucoup de RAM et vous pouvez ajuster le -Xmx et -Xms à 1G de ram si c’est pour du testing (c’est du Java). Pour cela vous rendre dans /etc/elasticsearch.jvm.options. Et on oubliera pas de restart ES (un petit curl pour vérfier la réponse sur le port 9200) :

sudo vim /etc/elasticsearch/jvm.options
sudo systemctl restart elasticsearch.service
sudo systemctl enable elasticsearch.service
curl 127.0.0.1:9200

Maintenant installons Logstash :

sudo apt-get install logstash
sudo systemctl start logstash.service
sudo systemctl enable logstash.service 

Et enfin kibana pour lequel on éditera le fichier de configuration afin d’écouter sur toutes les interfaces (ou celle qui est le plus adaptée) :

sudo apt-get install kibana
sudo systemctl status kibana.service
sudo vim /etc/kibana/kibana.yml
# change server.host to "0.0.0.0" or "external ip"
sudo systemctl start kibana.service
sudo systemctl enable kibana.service

Voilà avec cette première étape, vous pouvez déjà commencer à vous faire plaisir et apprendre à utiliser ELK. Vous pouvez continuer en regardant ce cours gratuit sur ELK.

Venez nombreux découvrir la chaine xavki !!