AWS CloudWatch est un service natif de l’écosystème Amazon Cloud qui enregistre et surveille tous les autres services de l’Amazon Cloud. Il collecte et suit les métriques ou les fichiers journaux et définit des alarmes pour diverses activités extraites de ces fichiers.
Vous pouvez obtenir une visibilité à l’échelle du système sur les performances des applications, l’utilisation des ressources et la santé opérationnelle des services. Vous pouvez également utiliser AWS CloudWatch pour détecter les comportements anormaux dans vos environnements, prendre des mesures automatisées, résoudre les problèmes et découvrir des informations à partir des journaux afin de prendre des mesures pour améliorer votre système ou vos opérations.
La surveillance de vos journaux permet de détecter les menaces à la sécurité et d’identifier les vulnérabilités potentielles. En surveillant les activités suspectes et les comportements inhabituels, vous pouvez réagir et prendre des mesures pour prévenir les attaques futures.
En outre, la tenue des journaux et la surveillance des systèmes sont, le plus souvent, des activités obligatoires à des fins de conformité. En utilisant AWS CloudWatch, vous répondez à ces exigences.
Ce sont tous des avantages directs que vous tirez de l’utilisation d’AWS CloudWatch. Voyons donc comment commencer.
Configurer AWS CloudWatch pour votre service
L’installation peut être simple et directe, ou vous pouvez passer des semaines à peaufiner tous les aspects ou propriétés de votre système de journalisation et de surveillance et ne pas avoir encore tout à fait terminé (ce qui revient à dire que c’est un processus d’amélioration continue).
En résumé, voici comment vous pouvez commencer :
- En supposant que vous ayez déjà un compte AWS, activez CloudWatch en naviguant vers la console CloudWatch et en cliquant sur le bouton “Get started”.
- Créez un groupe de logs pour commencer à collecter les logs de votre service. Un groupe de logs est une collection de flux de logs qui partagent les mêmes paramètres de rétention, de surveillance et de contrôle d’accès. Vous pouvez créer un groupe de logs en cliquant sur le bouton “Create log group” dans la console CloudWatch.
- Créez un flux de logs pour restreindre les événements de logs à la même source (service). Vous pouvez créer un flux de logs en cliquant sur le bouton “Create log stream” dans la console CloudWatch.
- Si vous souhaitez collecter les journaux des instances EC2, installez l’agent CloudWatch. L’agent est un logiciel qui s’exécute sur vos instances et envoie des données de journal à CloudWatch. Vous pouvez installer l’agent à l’aide du gestionnaire de systèmes AWS ou en exécutant un script sur vos instances.
- Créez un filtre de métriques pour extraire des métriques de vos journaux en fonction d’un modèle de correspondance défini. Vous pouvez créer un filtre métrique en cliquant sur le bouton “Create metric filter” dans la console CloudWatch.
- Enfin, rassemblez et visualisez toutes les données extraites en un seul endroit – créez un tableau de bord. Un tableau de bord est une collection de widgets qui affiche des métriques et d’autres données que vous placez à cet endroit. Vous pouvez créer un tableau de bord en cliquant sur le bouton “Créer un tableau de bord” dans la console CloudWatch.
Surveillance avec AWS CloudWatch
Comme nous l’avons déjà dit, vous pouvez surveiller n’importe quel service dans le nuage d’Amazon à l’aide d’AWS Cloudwatch. Pour vous donner une idée plus détaillée de la manière dont cette surveillance peut se dérouler, voici comment procéder pour les services AWS les plus courants que vous utilisez très probablement dans votre système.
Instances EC2
Vous pouvez surveiller les instances EC2 en recueillant des mesures telles que l’utilisation du processeur, le trafic réseau, l’utilisation du disque et l’utilisation de la mémoire. Vous pouvez également surveiller l’état de vos instances EC2 et recevoir des notifications lorsque les instances s’arrêtent ou se terminent.
Pour surveiller les instances EC2, installez l’agent CloudWatch sur vos instances et configurez-le pour qu’il envoie des métriques à CloudWatch. Vous pouvez ensuite créer des alarmes pour vous avertir lorsque les mesures dépassent certains seuils.
Bases de données RDS
Vous pouvez surveiller les bases de données Amazon RDS en collectant des mesures telles que l’utilisation du processeur, de la mémoire ou du disque de la base de données. Vous pouvez également surveiller l’état des bases de données et recevoir des notifications lorsque les bases de données sont arrêtées, en pause ou terminées.
Pour surveiller les bases de données RDS, activez la surveillance améliorée et configurez-la pour qu’elle envoie des mesures à CloudWatch. Là encore, vous pouvez créer des alarmes pour vous avertir lorsque les mesures ne sont pas correctes.
Fonctions Lambda
Vous pouvez surveiller les fonctions AWS Lambda en collectant des métriques telles que le nombre d’invocations lambda, la durée et le taux d’erreur. Vous pouvez également surveiller l’état de vos fonctions et recevoir des notifications lorsque les fonctions échouent.
Pour surveiller les fonctions Lambda, vous devez activer CloudWatch Logs et configurer vos fonctions pour qu’elles envoient des journaux à CloudWatch. Vous pouvez ensuite créer des filtres de métriques pour extraire des métriques de vos journaux et prendre des mesures en fonction des informations extraites des journaux.
Équilibreurs de charge élastiques
La surveillance des équilibreurs de charge élastiques se fait en collectant des métriques telles que le nombre de requêtes, la latence et les codes de réponse HTTP. Vous pouvez également surveiller l’état de vos équilibreurs de charge et recevoir des notifications en cas de défaillance des équilibreurs de charge.
Pour surveiller les équilibreurs de charge, vous devez activer les journaux d’accès et configurer vos équilibreurs de charge pour qu’ils envoient des journaux à CloudWatch. Vous pouvez ensuite créer des filtres de métriques pour extraire des métriques de vos journaux et créer des alarmes lorsque les métriques ne correspondent pas à l’état de santé défini.
Groupes de mise à l’échelle automatique
Vous pouvez surveiller les groupes de mise à l’échelle automatique en collectant la taille du groupe, l’utilisation du processeur et le trafic réseau. Vous pouvez également surveiller l’état de vos groupes et recevoir des notifications lorsque les groupes augmentent ou diminuent d’échelle.
Pour surveiller les groupes de mise à l’échelle automatique, vous devez activer la surveillance détaillée et la configurer pour qu’elle envoie des métriques à CloudWatch. Vous pouvez ensuite créer des alarmes pour vous avertir lorsque les mesures dépassent certains seuils.
Applications Elastic Beanstalk
Vous pouvez surveiller les applications AWS Elastic Beanstalk en collectant des mesures telles que l’utilisation du processeur et le nombre de requêtes. Vous pouvez également surveiller l’état de vos applications et recevoir des notifications en cas de défaillance.
Pour surveiller les applications Elastic Beanstalk, vous devez activer les rapports de santé améliorés et les configurer pour qu’ils envoient des mesures à CloudWatch. Vous pouvez ensuite créer des alarmes pour vous alerter lorsque les mesures ne respectent pas les seuils prédéfinis.
Gestion des alarmes CloudWatch
Des alarmes CloudWatch sont disponibles pour les mesures clés et chaque service. Elles peuvent être configurées en amont, en suivant les meilleures pratiques, et avec leur aide pour résoudre les problèmes au fur et à mesure qu’ils surviennent.
En gérant efficacement vos alarmes, vous êtes alerté des problèmes critiques et pouvez prendre les mesures appropriées pour maintenir la santé et les performances de vos ressources et applications AWS.
#1. Configuration des alarmes pour une métrique
Pour configurer des alarmes, commencez par sélectionner l’indicateur que vous souhaitez surveiller. Créez ensuite une alarme basée sur cette mesure en spécifiant une valeur seuil et un opérateur de comparaison.
Par exemple, vous pouvez créer une alarme qui se déclenche lorsque l’utilisation de l’unité centrale dépasse 80 % pendant plus de 5 minutes. Une fois l’alarme créée, configurez les actions à entreprendre en cas de déclenchement de l’alarme. Par exemple, envoyer un courriel à une liste spécifique de destinataires, envoyer une notification par SMS, ou même augmenter les ressources de votre système.
#2. Configuration des actions d’alarme
Lors de la configuration des actions d’alarme, il est possible de choisir parmi une variété d’options, y compris l’envoi de notifications à un sujet SNS, le déclenchement d’une fonction AWS Lambda (qui, à son tour, peut faire ce que vous voulez que la fonction fasse dans votre script Python), l’arrêt ou la fin d’une instance EC2.
Vous pouvez également configurer plusieurs actions pour chaque alarme et, par conséquent, prendre différentes mesures en fonction de la gravité de l’alarme. Par exemple, envoyer une notification par email pour une alarme mineure mais arrêter une instance pour une alarme critique.
#3. Meilleures pratiques en matière d’alarmes
Il est toujours bon de suivre les meilleures pratiques pour s’assurer que les alarmes sont efficaces et fiables. En voici quelques-unes :
- Définir des seuils appropriés basés sur des données historiques,
- l’utilisation de plusieurs mesures en parallèle pour détecter les problèmes
- tester régulièrement vos alarmes pour s’assurer qu’elles fonctionnent correctement.
Évitez de créer trop d’alarmes, car cela peut entraîner une fatigue des alertes, encombrer le système de surveillance et rendre difficile l’identification des problèmes réellement critiques.
Si vous rencontrez des problèmes avec les alarmes CloudWatch, vous pouvez prendre plusieurs mesures de dépannage :
- Vérifiez l’historique des alarmes pour voir si des actions ont été entreprises lorsque l’alarme a été déclenchée.
- Vérifiez les données métriques pour voir s’il y a des anomalies ou des pics qui pourraient avoir déclenché l’alarme.
- Si les problèmes persistent, vous pouvez essayer d’ajuster le seuil d’alarme ou d’ajouter des mesures supplémentaires à l’alarme afin d’améliorer sa précision.
Analyse et visualisation des mesures avec les tableaux de bord CloudWatch
L’analyse et la visualisation des mesures à l’aide de tableaux de bord vous donnent un aperçu lisible de l’état et des performances de vos ressources et applications AWS. Les tableaux de bord de CloudWatch offrent une vue personnalisable de vos mesures.
Vous pouvez y placer divers diagrammes, graphiques et autres visualisations qui montrent les tendances dans le temps et mettent en évidence les problèmes éventuels du système. L’objectif final est de pouvoir faire abstraction des données des fichiers journaux et de disposer des informations importantes dans un format beaucoup plus lisible et convivial pour toute personne souhaitant vérifier et surveiller l’état du système.
Pour créer un tableau de bord CloudWatch, vous pouvez utiliser la console CloudWatch ou l’API CloudWatch. Il vous suffit ensuite d’ajouter des widgets au tableau de bord qui affichent les mesures que vous souhaitez voir apparaître sur le tableau de bord. Vous pouvez également ajouter du texte et des images pour fournir un contexte ou des informations supplémentaires.
Une fois que vous avez créé un tableau de bord, vous pouvez le personnaliser pour répondre à vos besoins spécifiques. Vous pouvez redimensionner et réorganiser les widgets, modifier l’intervalle de temps des données affichées et ajouter des annotations pour mettre en évidence les événements ou les changements importants. Vous pouvez également partager votre tableau de bord avec d’autres utilisateurs, ce qui leur permet d’afficher les mêmes mesures et visualisations.
Enfin, vous pouvez facilement déployer le même tableau de bord sur différents comptes et environnements AWS.
Collecte et analyse des journaux
Pour analyser les journaux, il faut généralement utiliser la fonction Logs Insights de CloudWatch.
Une fois que vous avez collecté les données des journaux dans CloudWatch Logs, vous pouvez commencer à utiliser Logs Insights. CloudWatch Logs Insights vous permet d’interroger et de visualiser les données des journaux à l’aide d’un langage d’interrogation simple mais puissant. Il est très similaire au langage SQL selects, bien qu’il ne soit pas tout à fait le même. Les résultats sont cependant très similaires.
Vous pouvez utiliser Insights pour rechercher des événements de journalisation spécifiques, filtrer les données de journalisation en fonction de critères spécifiques et créer des visualisations telles que des graphiques et des tableaux. Vous obtenez ainsi un nouvel aperçu précieux du comportement de vos applications et de votre infrastructure, qui peut être utilisé pour résoudre les problèmes, optimiser les performances ou améliorer la sécurité.
Lisez aussi : Comment utiliser AWS Logs Insights pour interroger les métriques des tableaux de bord à partir des journaux des services AWS ?
Automatisation des tâches avec les événements CloudWatch
Si vous disposez de suffisamment d’informations de logs dans CloudWatch, vous pouvez les utiliser pour déclencher des actions basées sur des événements qui se produisent dans vos ressources et applications AWS. CloudWatch Events permet de planifier et d’automatiser des tâches, par exemple le démarrage ou l’arrêt d’instances EC2 lorsque l’utilisation de l’instance sort de la zone d’utilisation normale (par exemple, arrêt de l’instance pendant la nuit et redémarrage pendant la journée de travail).
Pour automatiser des tâches avec CloudWatch Events, créez une règle qui spécifie le modèle d’événement à faire correspondre et l’action à entreprendre lorsque l’événement se produit. Vous pouvez le faire à l’aide de la console CloudWatch ou de l’API CloudWatch Events. Configurez ensuite une ou plusieurs cibles pour la règle, comme une fonction AWS Lambda, un sujet SNS ou une instance EC2.
CloudWatch Events prend en charge un large éventail de sources d’événements, comme les services AWS, les applications personnalisées et les services tiers. Utilisez donc CloudWatch Events pour automatiser des tâches lorsque vous avez besoin de mettre à l’échelle des ressources, de déclencher des sauvegardes ou de répondre à des incidents de sécurité.
En automatisant les tâches, vous réduisez les interventions manuelles dans votre système et vous vous assurez que vos ressources et applications AWS fonctionnent toujours à des niveaux optimaux.
Fonctionnalités avancées de CloudWatch
Plusieurs fonctions avancées de CloudWatch peuvent être configurées pour obtenir des informations plus approfondies sur vos ressources AWS. L’une d’entre elles est l’analyse des logs déjà mentionnée. Voici quelques-unes des autres fonctions avancées :
- CloudWatch Contributor Insights peut identifier les principaux contributeurs à l’utilisation de vos ressources (par exemple, les instances EC2 ou les fonctions Lambda). Vous pouvez utiliser Contributor Insights pour identifier les opérations les plus gourmandes en ressources et optimiser les ressources en conséquence.
- CloudWatch Anomaly Detection utilise des algorithmes d’apprentissage automatique pour détecter automatiquement les comportements anormaux dans vos mesures. Utilisez la détection d’anomalie pour identifier les pics ou les chutes inhabituels dans vos mesures et prenez des mesures pour y remédier.
- CloudWatch Synthetics crée des canaris qui simulent le comportement des utilisateurs et peut tester la disponibilité et les performances de vos applications. Utilisez Synthetics pour explorer et détecter de manière proactive les problèmes avant que vos utilisateurs professionnels ne le fassent.
- CloudWatch Logs Insights Query Acceleration accélère vos requêtes de logs jusqu’à 10 fois. Vous pouvez utiliser Query Acceleration pour analyser rapidement et efficacement de grands volumes de données de logs.
Intégration de CloudWatch avec les services AWS
Lorsque vous construisez un système AWS, l’intégration de CloudWatch est toujours une priorité sur votre liste. Seule cette intégration profonde vous permet de collecter et de surveiller les métriques et les journaux de tous vos services ou composants système. Elle est également facile à configurer et à utiliser, et l’intégration est native pour la plupart des services AWS. Il y a donc peu d’excuses pour ne pas utiliser cet avantage pour votre système de cloud AWS.
Vous obtiendrez une vue d’ensemble de vos ressources et applications AWS et pourrez surveiller leur état de santé, leurs performances et leur disponibilité. Une fois toutes les informations collectées, il vous suffit d’utiliser les données existantes pour définir des alarmes et automatiser des tâches en fonction des événements qui se produisent dans votre environnement AWS.
Le mot de la fin
AWS CloudWatch est un service en nuage complet capable de répondre à tous les besoins de votre projet en matière de journalisation, de surveillance et de visualisation de l’état du système.
Inclure de tels composants dans votre architecture est exactement la façon de gérer vos systèmes de manière proactive et d’assurer leur fiabilité. Je dirais même de ne pas en faire une priorité pour les phases ultérieures, mais de commencer à construire un système de surveillance robuste dès le Sprint 1. Vous l’apprécierez plus tard.
Ensuite, consultez les meilleurs outils de surveillance AWS.