06 septembre 2016 Cas Utilisateur

La communauté Beats s'agrandit avec Dockbeat !

Par Erwann CloarecDouae JeouitThibaut Marmin

Note : L’article publié précédemment a été modifié afin d’intégrer le changement de nom du projet Dockerbeat par Dockbeat.

Vous êtes-vous déjà demandé comment les conteneurs Docker se comportent au fil du temps ? Avez-vous jamais eu envie d’un Beat capable de récupérer et d’indexer les statistiques de vos conteneurs Docker dans Elasticsearch? La solution est désormais à portée de main : Dockbeat!

Dockbeat est un projet open source créé par Ingensi et basé sur la librairie Beats. Ingensi est une business unit du Cyres Group situé à Tours (France). Notre principal objectif est de mettre en place des solutions Big Data qui fournissent de puissants outils de prise de décision pour donner de la valeur aux données de nos clients. Pour cela, nous utilisons nos expertises dans les technologies Hadoop, Elasticsearch et Docker.

Chez Ingensi, nous utilisons la Suite Elastic (Elastic Stack) comme socle pour notre plateforme de gestion des logs. Nous utilisons aussi Elasticsearch comme moteur de recherche pour nos développements applicatifs qui nécessitent des temps de réponse très rapides.

Plateforme Big Data : Ingensi rencontre Docker

Pour des questions d’optimisation, lorsque nous recevons une demande de déploiement de cluster d’un de nos clients, nous le faisons dans une infrastructure mutualisée basée sur Docker. En 2015, nous avons mis en place notre première plateforme mutualisée et nous avons naturellement utilisé la Suite Elastic pour monitorer l’ensemble de l’infrastructure : serveurs, réseaux, ressources, etc. Cependant nos chaînes de traitement ne nous permettaient pas de monitorer les conteneurs Docker.

C’est à ce moment précis que Beats est entré en jeu ! La plateforme Beats permet de développer des agents légers qui envoie différent types de donnée à Elasticsearch, que vous pouvez ensuite parcourir, analyser et visualiser dans Kibana. A partir de là, nous avons eu l’idée de créer notre propre beat pour collecter les statistiques Docker.

Hello, Dockbeat !

Depuis la version 1.5 de Docker, une nouvelle fonctionnalité à été ajouté à l’API : Docker stats.Ce endpoint renvoie un flux d’information sur les conteneurs en cours d’exécution ainsi que des statistiques d’utilisation, comme le CPU, la mémoire, le réseaux, les disques, etc.

Nous avons donc décidé de collecter toutes ces métriques dans le but d’optimiser l’usage de notre infrastructure Docker existante. Basé sur la plateforme Beats, nous avons commencé à développer notre propre Beat : Dockbeat.

Comment Dockbeat fonctionne t-il ?

Dockbeat est utilisé pour monitorer des conteneurs Docker. Il a pour but de collecter les statistiques des conteneurs et de les envoyer dans Logstash ou directement dans Elasticsearch. Comme il s’agit d’un agent léger, l’impact de Dockbeat sur le serveur où il est lancé est très faible. Les données collectées peuvent ensuite être visualisées sous la forme de tableaux de bord dans Kibana. Aujourd’hui, nous sommes capable de voir, en temps réel, l’ensemble des conteneurs actifs sur nos serveurs, leurs consommations, et ainsi détecter rapidement toute anomalie. Ce nouveau beat exporte cinq types de documents correspondant aux métriques collectées :

  • Container : attributs d’un conteneur Docker
  • CPU : utilisation CPU d’un conteneur
  • Net : utilisation réseau d’un conteneur
  • Memory : consommation mémoire d’un conteneur
  • Blkio : accès disque d’un conteneur

dockbeat-workflow-french.png

Figure 1 - Dockbeat Workflow

Cool ! Mais comment utiliser Dockbeat ?

La réponse est assez simple. Dockbeat est hébergé sur GitHub. Tout d’abord, vous devez cloner et compiler le projet (voir le fichier README) ou simplement de télécharger la dernière version.

Dans un environnement Docker standard, Dockbeat devrait fonctionner avec sa configuration par défaut. Si vous avez besoin de personnaliser la configuration, jetez un oeil au fichier de configuration dockbeat.yml. Vous pourrez y définir : 

  • Le chemin vers le socket Docker
  • Le(s) output(s) où seront envoyés les statistiques Docker : Elasticsearch, Logstash, Kafka, mais aussi files
  • La fréquence à laquelle Dockbeat envoie les statistique
  • Si Dockbeat doit utiliser du chiffrement TLS ou non pour communiquer avec le docker deamon. Si ce dernier utilise TLS, alors vous devrez activer TLS dans la configuration et renseigner les chemins vers la clé et le certificat.

Il n’y a donc pas de configuration particulière pour Dockbeat, sauf si vous utilisez un docker deamon avec TLS activé.

Enfin, vous pouvez lancer Dockbeat avec la commande suivante :

./dockbeat -c etc/dockbeat.yml

dockerbeat-kibana-dashboard.png

Figure 2 - Tableau de bord Kibana

Dockbeat aujourd'hui

Dockbeat a grandit et est devenu opérationnel. Aujourd’hui, nous sommes fiers de vous annoncer la version finale 1.0.0 ! Il s’agit d’un projet open source et nous serions ravis de recevoir des contributions de la communauté. Vous pouvez contribuer de plusieurs manières :

  • Rédiger de la documentation, des tutoriaux, des articles de blog 
  • Envoyer des rapports de bug ou suggérer des nouvelles fonctionnalités sur GitHub 
  • Implémenter de nouvelle fonctionnalités ou résoudre des bugs 

Alors n’hésitez pas à nous contacter pour obtenir plus d’informations sur le projet ou pour nous proposer vos contributions, nous nous ferons un plaisir de vous répondre.

The Team

Erwann Cloarec is a Big Data Engineer @Ingensi, Docker passionate, Elastic fan and Hadoop professional, Dockbeat co-creator.
@ErwannC Github LinkedIn

Thibaut Marmin is a Software Engineer @Ingensi. Interested in Big Data and OpenSource technologies, Docker & Elastic enthusiast, Dockbeat co-creator.
@thibmarmin Github LinkedIn

Douae Jeouit is an Engineering Student in final year. Curious and ambitious, she loves to discover new intelligent technologies. Elastic fan. She's the blog post author and a Dockbeat contributor.
Github LinkedIn