Enregistrement d'événements à grande échelle sur AWS

Version imprimable, PDF et e-mail

La plupart des applications génèrent des événements de configuration et d'accès, que les administrateurs doivent pouvoir visualiser. Le service Barracuda Email Security offre une plus grande transparence et visibilité sur tous ces événements pour aider les administrateurs à ajuster et comprendre leur système. Il vous permet notamment de connaître l'identité des utilisateurs connectés à un compte ainsi que le moment où ils se connectent ou encore d'identifier la personne qui a ajouté, modifié ou supprimé la configuration d'une politique spécifique.

Développer un tel système distribué et interrogeable requière de se poser plusieurs questions, parmi lesquelles :

  • Comment extraire ces enregistrements de l'ensemble de vos applications, services et machines pour les envoyer vers un emplacement centralisé ?
  • Quel doit être le format standard de ces fichiers journaux ?
  • Combien de temps devrez-vous conserver ces journaux ?
  • Comment relier les événements provenant de différentes applications ?
  • Comment proposer à l'administrateur un mécanisme de recherche à la fois simple et rapide, accessible depuis une interface utilisateur ?
  • Comment permettre l'accès à ces journaux via une API ?

Elasticsearch est la première solution qui nous vient à l'esprit lorsque l'on pense à un moteur de recherche distribué. Hautement évolutif, il permet une recherche en temps quasi réel et est disponible en tant que service entièrement géré via AWS. Pour cet exemple, nous allons donc enregistrer nos journaux d'événements dans Elasticsearch, et Kinesis Data Firehose assurera leur transfert depuis les différentes applications jusqu'à notre moteur de recherche.

Les composants de cette architecture

  1. Agent Kinesis – L'agent Kinesis d'Amazon est une application logicielle Java autonome qui vous permet de collecter et d'envoyer facilement des données vers Kinesis Data Firehose. Cet agent assure un suivi continu des fichiers journaux d'événements dans les instances EC2 Linux et les transfère vers le flux de diffusion Kinesis Data Firehose configuré. L'agent gère ainsi la rotation des fichiers, les points de contrôle et les nouvelles tentatives après échec pour vous fournir toutes les données dont vous avez besoin de manière fiable, rapide et simple. Notez toutefois qu'un conteneur Fluentd sera nécessaire si l'application qui doit écrire dans Kinesis Firehose est un conteneur Fargate. Dans cet article, nous nous concentrerons sur les instances Amazon EC2.
  2. Kinesis Data Firehose – La méthode Direct PUT d'Amazon Kinesis Data Firehose permet d'écrire des données au format JSON dans Elasticsearch, sans qu'aucune donnée ne soit stockée dans le flux.
  3. S3 – Un compartiment S3 peut être utilisé pour sauvegarder la totalité des enregistrements ou seulement ceux dont l'envoi vers Elasticsearch a échoué. Il est également possible de créer des politiques de cycle de vie afin d'automatiser l'archivage des journaux.
  4. Elasticsearch – Elasticsearch hébergé par Amazon. L'accès à Kibana peut être activé afin de simplifier la requête et la recherche de journaux à des fins de débogage.
  5. Curator – AWS recommande d'utiliser Lambda et Curator pour gérer les index et instantanés du cluster Elasticsearch. De plus amples informations et un exemple de code sont proposés par AWS ici.
  6. Interface API REST – Vous pouvez créer une API qui fera office de couche d'abstraction pour Elasticsearch tout en s'intégrant parfaitement à l'interface utilisateur. Les architectures de microservices par API sont réputées pour leurs performances élevées, notamment en matière de sécurité et de conformité, ainsi que pour leur intégration optimale avec d'autres services.

 

Évolutivité

  • Kinesis Data Firehose : par défaut, les flux de diffusion Firehose peuvent traiter jusqu'à 1 000 enregistrements par seconde ou 1 Mio par seconde dans la région USA Est (Ohio). Cette limite n'est toutefois pas stricte et peut être étendue jusqu'à 10 000 enregistrements par seconde. Ce nombre varie en fonction des régions.
  • Elasticsearch : les capacités de stockage et la puissance de calcul du cluster Elasticsearch peuvent être étendues dans AWS. Des mises à niveau sont également disponibles. Amazon ES fait appel à un flux de déploiement Blue-Green pour la mise à jour des domaines. Par conséquent, le nombre de nœuds contenus dans le cluster est susceptible de croître temporairement lorsque des modifications sont appliquées.

Les avantages de cette architecture

  1. L'architecture de pipeline est entièrement gérée, demandant très peu de maintenance.
  2. En cas d'échec du cluster Elasticsearch, Kinesis Firehose peut conserver les enregistrements pendant 24 heures. En outre, les enregistrements qui ne peuvent pas être transmis sont également sauvegardés dans S3.

Les risques de perte de données sont ainsi moindres.

  1. Les politiques de gestion des identités et des accès (IAM) permettent un contrôle strict des accès aux API Kibana et Elasticsearch.

Les limites

  1. La question du tarif doit être soigneusement étudiée et surveillée. Kinesis Data Firehose est capable d'absorber sans difficulté de larges volumes de données et si un acteur non autorisé commence à journaliser un grand nombre de données, le service les diffusera. Attention, les frais occasionnés peuvent être élevés.
  2. L'intégration Kinesis Data Firehose vers Elasticsearch est uniquement compatible avec les clusters Elasticsearch non VPC.
  3. Kinesis Data Firehose ne prend actuellement pas en charge la diffusion de journaux vers des clusters Elasticsearch non hébergés par AWS. Cette configuration n'est pas non plus compatible avec l'auto-hébergement de clusters Elasticsearch. 

Conclusion

Si vous êtes en quête d'une solution entièrement gérée et capable d'évoluer sans que vous n'ayez à intervenir (ou très peu), cette option est tout à fait adaptée. La sauvegarde automatique sur S3 et les politiques de cycle de vie apportent, de plus, une réponse simple à la question de la conservation et de l'archivage des journaux.

Remonter en haut de page
Tweeter
Partager
Partager