Monitoring en temps réel chez BricoPrivé

Success story

En bref

BricoPrivé est une entreprise e-commerce de produits de bricolage dont la présence s'étend sur plusieurs pays. La disponibilité de ses services est cruciale pour offrir une bonne expérience utilisateur et s'assurer qu'aucune commande n'est omise. Afin d'assurer un contrôle total de son infrastructure, BricoPrivé a besoin d'un outil complet qui lui permette d'obtenir des données techniques et commerciales afin d'exploiter sa plateforme en toute confiance.

Technofy accompagne BricoPrivé sur de multiples aspects liés au AWS et au DevOps, mais ce cas d'utilisation se concentre sur l'implémentation de DataDog sur leur infrastructure cloud. DataDog est une plateforme d'observabilité et de surveillance qui fournit des métriques, l'ingestion de logs et de puissantes analyses de données.

Contexte et défis

Manque d'observabilité
Analyse des modèles dans les logs et les métriques
Résolution des défaillances
Manque de visibilité sur l'utilisation des ressources

Tech stack

AWS

  • System Manager - Utilisé pour déployer syslog et l'agent DataDog sur les instances.
  • Kinesis Data Streams - Service de streaming de données en temps réel pour les logs d'accès provenant de CloudFront.
  • Kinesis Data Firehose - Service de streaming en temps réel pour envoyer des données à l'end point d'ingestion de DataDog.

Les technologies

  • DataDog - Plateforme de monitoring choisie par BricoPrivé
  • Syslog-ng - Utilisé pour rassembler et envoyer les logs applicatifs à DataDog
  • Ansible - Outil de gestion de la configuration utilisé pour définir l'état souhaité des instances de calcul.

Solution

Aperçu de haut niveau des flux entre AWS et DataDog

Vue d'ensemble

La solution vise à fournir un monitoring sur trois niveaux différents :

  • Sur le CDN, grâce au monitoring en temps réel sur CloudFront pour saisir toutes les requêtes provenant d'internet.
  • Au niveau de l'instance, les métriques sont rapportées par l'agent DataDog.
  • Au niveau de l'application, la solution utilise syslog-ng pour filtrer et envoyer les journaux à l'endpoint d'ingestion syslog de DataDog.

Tous ces différents moyens de livraison des logs et métriques sont configurés pour utiliser le cryptage en transit afin de respecter les exigences de sécurité.

Monitoring de CloudFront

CloudFront est le CDN de predilection de BricoPrivé car il permet de délivrer plusieurs centaines de téraoctets chaque année à leurs utilisateurs. La flexibilité du service permet de router les requêtes HTTP vers différents backends grâce à divers paramètres. CloudFront s'apparente ainsi à un reverse-proxy plus classique, ce qui s'avère très utile pour les entreprises qui souhaitent scinder progressivement leurs applications monolithiques en microservices plus petits et plus agiles.

CloudFront propose deux modes de livraison des logs d'accès, standard et en temps réel. Les logs standard sont livrés périodiquement à S3, ce qui permet à d'autres systèmes de les traiter. Le délai de livraison de ces logs peut varier de quelques minutes à 24 heures. Les logs en temps réel, quant à eux, sont livrés en quelques secondes à Kinesis Data Streams, ce qui permet à Kinesis Firehose de les distribuer à divers backends.

BricoPrivé a besoin de ce dernier car il lui permet de mieux comprendre l'échelle à laquelle il opère. Ces logs en temps réel fournissent des informations précieuses en termes de performance et d'expérience client qui peuvent être analysées et transformées en actions d'optimisation.

Comme mentionné ci-dessus, Technofy a déployé Kinesis Data Streams et Kinesis Firehose pour envoyer les logs dans DataDog. Cette procédure est bien décrite dans la documentation (Voir Envoyer les logs des services AWS avec la destination Kinesis Firehose de Datadog).

Monitoring des instances

BricoPrivé utilise des instances de calcul EC2 pour son application et suit les meilleures pratiques en matière de mise à l'échelle automatique, d'équilibrage de charge et de disponibilité. Néanmoins, en raison de leur activité croissante, leurs dépenses cloud augmentent également. En gardant un œil sur l'utilisation des ressources de chaque instance, BricoPrivé peut ajuster ses directives en ce qui concerne la mise à l'échelle automatique. Cela leur permet de maximiser l'utilisation des ressources sans avoir d'impact sur l'expérience de l'utilisateur final et de contrôler correctement les coûts lors de la mise à l'échelle.

Ce monitoring se fait grâce à l'agent DataDog qui rapporte les métriques du système et les processus en cours d'exécution en temps réel. L'agent peut également diffuser des fichiers log, mais dans ce projet, les exigences applicatives ne prévoient pas l'utilisation de cette fonctionnalité. 

Monitoring des applications

La démarche visant à assurer l'observabilité dans les différentes couches ne serait pas complète sans disposer d’un regard sur la couche application. Une technologie répandue telle que Syslog permet à plusieurs générateurs de logs d'utiliser un protocole standard, ce qui réduit la complexité opérationnelle. Dans ce cas, nous avons opté pour syslog-ng car la configuration est plus attrayante et compréhensible pour les équipes d'ingénieurs.  

Une fois de plus, DataDog fournit un service d'ingestion Syslog. Deux endpoints sont disponibles, l'un avec TLS et l'autre sans. Étant donné que les logs applicatifs peuvent contenir des données sensibles, le choix naturel était de configurer syslog-ng pour que celui-ci utilise l'endpoint crypté.

Déploiement des agents

Comme décrit dans la section "Monitoring des instances", l'agent DataDog fournit de nombreuses informations sur le système sur lequel il est exécuté. Nous avons également abordé le fait que nous devons également déployer syslog-ng sur les instances.

Chez Technofy, nous utilisons couramment Ansible pour la gestion de la configuration des systèmes de nos clients. Heureusement pour nous, DataDog fournit déjà un rôle sur Ansible Galaxy , ce qui rend la configuration encore plus facile. Tout ce que nous avons à faire est de remplir quelques détails de configuration et la clé API.

Dans de nombreux cas, les déploiements Ansible sont effectués à distance via SSH, mais BricoPrivé fait largement appel à AWS System Manager et l'utilise pour appliquer des correctifs et créer des sessions à distance sur sa flotte de machines. Le service fournit également un moyen d'exécuter des Playbooks Ansible via l'un de leurs documents SSM gérés, à savoir "AWS-ApplyAnsiblePlaybooks". Ce document nous permet de spécifier des variables ainsi qu'un seau S3 (ou un dépôt GitHub) où il cherchera le playbook. Une fois exécuté, le document se charge ensuite d'installer automatiquement Ansible sur les machines cibles s'il n'est pas déjà présent.

Appliquer un playbook Ansible avec AWS Systems Manager

Résultats

L'observabilité sur plusieurs couches est centralisée et configurée dans un seul outil.
De multiples corrections ont été effectuées sur des liens erronés lors de la navigation des clients grâce à l'agrégation des logs en temps réel provenant des différentes sources.
Les ressources les plus utilisées sont maintenant identifiées et peuvent bénéficier d'une optimisation plus poussée.
Les changements de configuration de l'agent DataDog et du service syslog peuvent désormais être entièrement automatisés sur des dizaines d'instances.
Meilleure compréhension de l'utilisation des ressources et de ce qui peut être exploité sur AWS pour optimiser les coûts.