Accueil/Compétences/AWS CloudWatch
Logo AWS CloudWatch

AWS CloudWatch

Le système nerveux de vos applications cloud qui surveille, analyse et visualise en temps réel toutes les métriques et logs de votre infrastructure.

Pour les non-initiés

Qu'est-ce qu'AWS CloudWatch ?

Imaginez que vous possédez un parc d'attractions complexe. Comment sauriez-vous si l'une des attractions commence à dysfonctionner ? Comment pourriez-vous détecter les longues files d'attente avant que les clients ne se plaignent ? Et comment analyseriez-vous la fréquentation pour optimiser votre personnel ?

AWS CloudWatch est comme un système de surveillance sophistiqué pour votre parc d'attractions numérique. Il collecte des données sur tous les aspects de vos applications et infrastructures cloud - combien de visiteurs vous avez, combien de temps les attractions (services) mettent à fonctionner, quelles erreurs se produisent, et bien plus encore.

Pourquoi est-ce important ?

Visibilité

Vous donne une image claire de ce qui se passe dans vos applications et votre infrastructure à tout moment.

Alertes

Vous avertit automatiquement quand quelque chose ne va pas, souvent avant que vos utilisateurs ne s'en aperçoivent.

En résumé, AWS CloudWatch est un système complet de surveillance et d'observabilité qui vous aide à garder vos applications cloud en bonne santé, à résoudre rapidement les problèmes, et à optimiser vos ressources en fonction des besoins réels.

Pour les développeurs

Fonctionnement technique

AWS CloudWatch est un service d'observabilité complet qui collecte, agrège et analyse des données provenant de toutes les couches de votre pile technologique AWS. Il fournit une vue unifiée des métriques, des logs, des traces et des événements, permettant aux équipes de développement et d'opérations de surveiller efficacement leur infrastructure et leurs applications.

Les composants principaux

CloudWatch Metrics

CloudWatch collecte et stocke des métriques numériques représentant les points de données sur la performance de vos ressources et applications. AWS fournit automatiquement des métriques pour la plupart des services, et vous pouvez également créer vos propres métriques personnalisées.

Publication d'une métrique personnalisée avec AWS SDK
// Exemple de création et publication d'une métrique CloudWatch avec AWS SDK const { CloudWatchClient, PutMetricDataCommand } = require('@aws-sdk/client-cloudwatch'); async function publishCustomMetric() { const client = new CloudWatchClient({ region: 'eu-west-3' }); const params = { MetricData: [ { MetricName: 'ActiveUsers', Dimensions: [ { Name: 'Service', Value: 'UserAuthentication' }, { Name: 'Environment', Value: 'Production' } ], Unit: 'Count', Value: 42, Timestamp: new Date() } ], Namespace: 'MyApplication' }; try { const command = new PutMetricDataCommand(params); const response = await client.send(command); console.log('Métrique publiée avec succès:', response); return response; } catch (error) { console.error('Erreur lors de la publication de la métrique:', error); throw error; } }

CloudWatch Alarms

Les alarmes surveillent les métriques sur une période définie et déclenchent des actions lorsque les seuils sont dépassés. Ces actions peuvent inclure l'envoi de notifications via Icône SNSSNS ou le déclenchement d'actions automatisées, comme le scaling d'Icône Amazon ECSAmazon ECS ou Icône EC2EC2.

Définition d'une alarme CloudWatch dans CloudFormation
// Définition d'une alarme CloudWatch dans un template CloudFormation Resources: HighCpuAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: high-cpu-usage-alarm AlarmDescription: Se déclenche quand l'utilisation CPU dépasse 80% pendant 5 minutes MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average Dimensions: - Name: InstanceId Value: !Ref WebServerInstance Period: 300 EvaluationPeriods: 1 Threshold: 80 ComparisonOperator: GreaterThanThreshold AlarmActions: - !Ref NotificationTopic InsufficientDataActions: - !Ref NotificationTopic

CloudWatch Logs

CloudWatch Logs centralise les logs de toutes vos ressources AWS et applications. Il vous permet de rechercher, de filtrer et d'analyser vos logs pour résoudre les problèmes, suivre les performances et réaliser des analyses de sécurité. Le service s'intègre nativement avec Icône AWS LambdaAWS Lambda et d'autres services AWS.

Interrogation de CloudWatch Logs avec Logs Insights
// Exemple d'interrogation de CloudWatch Logs avec CloudWatch Logs Insights const { CloudWatchLogsClient, StartQueryCommand, GetQueryResultsCommand } = require('@aws-sdk/client-cloudwatch-logs'); async function queryCloudWatchLogs() { const client = new CloudWatchLogsClient({ region: 'eu-west-3' }); // Requête Logs Insights sur le groupe de logs de l'application const queryString = ` fields @timestamp, @message, @logStream, @log | filter errorCode = 500 | sort @timestamp desc | limit 20 `; const startTime = new Date(); startTime.setHours(startTime.getHours() - 24); // Dernières 24 heures const startQueryParams = { logGroupName: '/aws/lambda/my-application', startTime: Math.floor(startTime.getTime() / 1000), endTime: Math.floor(new Date().getTime() / 1000), queryString, }; try { // Lancer la requête const startQueryCommand = new StartQueryCommand(startQueryParams); const { queryId } = await client.send(startQueryCommand); // Attendre les résultats let results; let status = 'Running'; while (status === 'Running') { await new Promise(resolve => setTimeout(resolve, 1000)); // Attendre 1 seconde const getResultsCommand = new GetQueryResultsCommand({ queryId }); const response = await client.send(getResultsCommand); status = response.status; if (status === 'Complete') { results = response.results; } } return results; } catch (error) { console.error('Erreur lors de l\'interrogation des logs:', error); throw error; } }

CloudWatch Dashboards

Les tableaux de bord CloudWatch sont des pages personnalisables qui vous permettent de visualiser les métriques et les alarmes de plusieurs ressources et applications dans une seule vue. Vous pouvez créer des tableaux de bord personnalisés pour surveiller des aspects spécifiques de votre infrastructure.

Définition d'un tableau de bord CloudWatch
// Exemple de définition d'un tableau de bord CloudWatch { "widgets": [ { "type": "metric", "x": 0, "y": 0, "width": 12, "height": 6, "properties": { "metrics": [ [ "AWS/Lambda", "Invocations", "FunctionName", "processOrders" ], [ ".", "Errors", ".", "." ], [ ".", "Duration", ".", "." ] ], "view": "timeSeries", "stacked": false, "region": "eu-west-3", "title": "Lambda - Performance des traitements de commandes", "period": 300, "stat": "Sum" } }, { "type": "metric", "x": 12, "y": 0, "width": 12, "height": 6, "properties": { "metrics": [ [ "AWS/ApiGateway", "Count", "ApiName", "ecommerce-api" ], [ ".", "4XXError", ".", "." ], [ ".", "5XXError", ".", "." ] ], "view": "timeSeries", "stacked": false, "region": "eu-west-3", "title": "API Gateway - Requêtes et erreurs", "period": 300, "stat": "Sum" } }, { "type": "log", "x": 0, "y": 6, "width": 24, "height": 6, "properties": { "query": "SOURCE '/aws/lambda/processOrders' | fields @timestamp, @message\n| filter @message like /Error/\n| sort @timestamp desc\n| limit 20", "region": "eu-west-3", "title": "Erreurs Lambda - 20 dernières erreurs", "view": "table" } } ] }

Concepts clés et fonctionnalités avancées

  • Namespaces - Conteneurs pour les métriques liées à un service ou une application spécifique
  • Dimensions - Paires clé-valeur qui identifient une métrique de manière unique (ex: InstanceId, FunctionName)
  • Statistiques - Calculs mathématiques appliqués aux métriques sur une période spécifiée (Average, Sum, Minimum, Maximum, etc.)
  • Period - Intervalle de temps pour lequel les statistiques sont calculées (ex: 60 secondes, 5 minutes)
  • Groupes de logs - Collections de flux de logs provenant d'une même application ou ressource
  • Log Insights - Moteur de requête puissant pour analyser vos logs avec un langage de requête dédié
  • Embedded Metrics Format - Format structuré pour l'extraction de métriques à partir de logs
  • Composite Alarms - Alarmes qui combinent plusieurs alarmes avec des opérateurs logiques (AND, OR, NOT)

Intégrations importantes

CloudWatch s'intègre avec de nombreux autres services AWS pour former un écosystème complet d'observabilité :

  • CloudWatch Agent - Agent permettant de collecter des métriques et logs détaillés des serveurs et instances
  • X-Ray - Service de traçage pour analyser le flux de requêtes à travers vos microservices
  • Amazon EventBridge - Service d'événements serverless pour connecter vos applications avec des services AWS
  • AWS SNS & SQS - Services de messagerie pour distribuer les notifications d'alarmes
  • AWS Lambda - Fonctions serverless qui peuvent être déclenchées par des alarmes ou des événements CloudWatch
Applications concrètes

Cas d'usage

Surveillance proactive de l'infrastructure

Configurez des alarmes pour détecter les problèmes potentiels avant qu'ils n'affectent vos utilisateurs, comme des tendances d'utilisation CPU anormales ou des erreurs de service en augmentation.

Optimisation des performances des applications

Suivez les métriques de performance de vos applications, comme les temps de réponse ou les taux d'erreur, pour identifier les goulots d'étranglement et optimiser les performances.

Optimisation des coûts

Surveillez l'utilisation des ressources pour identifier les instances sous-utilisées ou surdimensionnées, et mettez en place des politiques de scaling automatique basées sur la demande réelle.

Analyse des incidents

Utilisez les logs et les métriques centralisés pour diagnostiquer rapidement les incidents, identifier les causes racines, et réduire le temps moyen de résolution (MTTR).

Industries tirant parti de CloudWatch

Les capacités d'observabilité de CloudWatch sont cruciales pour diverses industries :

Finance
E-commerce
SaaS
Santé
Streaming
IoT
Jeux vidéo
DevOps
Damien Gilbrin
Damien Gilbrin

Ce que j'ai réalisé avec AWS CloudWatch

Monitoring et optimisation des infrastructures cloud

J'ai utilisé AWS CloudWatch dans plusieurs contextes professionnels exigeants, notamment au sein du groupe Altice et chez Wooskill.

Surveillance hybride avec Datadog

Dans mes missions, j'ai souvent travaillé dans des environnements où CloudWatch était utilisé en complément de Icône DatadogDatadog. Pour le monitoring quotidien, Datadog était l'outil principal, mais dès qu'un doute surgissait sur un traitement spécifique, CloudWatch devenait la référence indispensable pour accéder aux logs détaillés et aux métriques précises.

Détection proactive des anomalies

J'ai configuré des tableaux de bord et des alertes CloudWatch pour surveiller en temps réel les performances des applications, permettant d'identifier et de résoudre les problèmes avant qu'ils n'impactent les utilisateurs finaux. Cette approche proactive a considérablement amélioré la fiabilité des services.