0Pricing
Cloud & IT Cert Prep · Leçon

Journaux CloudWatch et Log Insights

Regroupez les journaux d’EC2, de Lambda et des conteneurs dans des groupes de journaux, puis exécutez des requêtes CloudWatch Logs Insights pour trouver les erreurs et les tendances.

Journaux CloudWatch et Log Insights est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Présentation de CloudWatch Logs

Amazon CloudWatch Logs est un service entièrement géré d’agrégation des journaux qui collecte, stocke et analyse les données de journal provenant des services AWS et de vos propres applications. Contrairement à la gestion traditionnelle des journaux, qui consiste à utiliser SSH pour accéder aux serveurs et lire des fichiers, CloudWatch Logs centralise tous les journaux dans un stockage durable et chiffré offrant des fonctions intégrées d’interrogation, de filtrage, d’extraction de métriques et de gestion de la conservation. Le service s’intègre nativement à EC2, Lambda, ECS, EKS, API Gateway, CloudTrail et VPC Flow Logs.

Groupes de journaux et flux de journaux

Les journaux sont organisés de manière hiérarchique : un groupe de journaux est un conteneur nommé pour les journaux qui partagent les mêmes paramètres de conservation et de contrôle d’accès (par exemple, /aws/lambda/my-function). Dans un groupe de journaux, chaque flux de journaux représente une source unique d’événements de journal séquentiels — une instance EC2, un conteneur Lambda ou une tâche ECS. Un groupe de journaux peut contenir des milliers de flux, mais chaque flux appartient à un seul groupe de journaux.

# Create a log group with 30-day retention
aws logs create-log-group \
  --log-group-name /myapp/production/api

aws logs put-retention-policy \
  --log-group-name /myapp/production/api \
  --retention-in-days 30

# List log streams in a group
aws logs describe-log-streams \
  --log-group-name /myapp/production/api \
  --order-by LastEventTime \
  --descending

Envoyer des journaux depuis Lambda et EC2

AWS Lambda envoie automatiquement toutes les sorties stdout et stderr vers CloudWatch Logs — il suffit que le rôle d’exécution Lambda inclue logs:CreateLogGroup, logs:CreateLogStream et logs:PutLogEvents. Pour les instances EC2, vous installez l’agent CloudWatch et configurez les fichiers journaux à suivre (par exemple, /var/log/nginx/access.log), le groupe de journaux dans lequel écrire et le modèle qui identifie les entrées de journal individuelles.

# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
#   "logs": {
#     "logs_collected": {
#       "files": {
#         "collect_list": [{
#           "file_path": "/var/log/myapp/app.log",
#           "log_group_name": "/myapp/production/api",
#           "log_stream_name": "{instance_id}",
#           "timestamp_format": "%Y-%m-%dT%H:%M:%S"
#         }]
#       }
#     }
#   }
# }

CloudWatch Logs Insights

CloudWatch Logs Insights est un moteur d’interrogation interactif qui vous permet de rechercher et d’analyser des données de journal à l’aide d’un langage d’interrogation conçu à cet effet. Vous pouvez exécuter des requêtes sur un ou plusieurs groupes de journaux, filtrer selon une plage temporelle, extraire des champs de lignes de journal structurées ou non structurées, agréger les données et visualiser les résultats sous forme d’histogrammes ou de séries temporelles. Les requêtes sont exécutées à la demande et facturées par Go de données analysées — structurer les journaux au format JSON réduit considérablement le volume analysé.

# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
  --log-group-name /aws/lambda/my-function \
  --start-time $(date -d '1 hour ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'

Langage d’interrogation de Logs Insights

Le langage d’interrogation de Logs Insights utilise des commandes séparées par des barres verticales : fields sélectionne les champs à afficher, filter restreint les événements (et prend en charge les expressions régulières avec like et =~), stats agrège les données, sort trie les résultats et limit plafonne leur nombre. Le service détecte automatiquement les champs des lignes de journal au format JSON. Pour les journaux non structurés, vous pouvez analyser les valeurs avec parse à l’aide de modèles glob ou d’expressions régulières.

# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20

Filtres de métriques : des journaux aux métriques

Les filtres de métriques analysent en continu les événements de journal entrants à la recherche de modèles et incrémentent une métrique CloudWatch personnalisée chaque fois qu’une correspondance est trouvée. Par exemple, vous pouvez créer un filtre de métriques sur un groupe de journaux Lambda qui incrémente une métrique ErrorCount chaque fois qu’une ligne de journal contient ERROR. Vous créez ensuite une alarme CloudWatch sur cette métrique pour alerter votre équipe. Cela transforme vos journaux en métriques exploitables sans stocker les résultats dans une base de données distincte.

# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorCount \
  --filter-pattern 'ERROR' \
  --metric-transformations \
    metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0

# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorRate \
  --metric-name ApplicationErrors \
  --namespace MyApp \
  --statistic Sum \
  --period 60 \
  --evaluation-periods 1 \
  --threshold 10 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

Abonnements aux journaux et diffusion en continu

Un filtre d’abonnement diffuse les événements de journal presque en temps réel vers un autre service pour traitement ou stockage. Vous pouvez les diffuser vers AWS Lambda (pour transformer et acheminer les journaux), Amazon Kinesis Data Streams (pour traiter un volume élevé de journaux) ou Amazon Kinesis Firehose (pour les distribuer vers S3, OpenSearch ou Splunk). Chaque groupe de journaux prend en charge jusqu’à deux filtres d’abonnement. La diffusion de journaux entre comptes nécessite une destination dotée d’une politique de ressources appropriée.

# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorsToFirehose \
  --filter-pattern 'ERROR' \
  --destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
  --distribution 'ByLogStreamName'

Politiques de conservation et gestion des coûts

Par défaut, CloudWatch Logs conserve les données indéfiniment, ce qui peut devenir coûteux. Définissez des politiques de conservation sur chaque groupe de journaux afin de supprimer automatiquement les anciens événements. Les périodes de conservation courantes sont de 7 jours pour les journaux de débogage, de 30 jours pour les journaux d’application et de 1 à 5 ans pour les journaux d’audit. Vous pouvez exporter les groupes de journaux vers S3 pour un archivage à long terme peu coûteux à l’aide de l’API create-export-task, mais les exportations sont des opérations par lots et non en temps réel.

# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
  --query 'logGroups[?!retentionInDays].logGroupName' \
  --output text | tr '\t' '\n' | while read lg; do
    aws logs put-retention-policy \
      --log-group-name "$lg" \
      --retention-in-days 90
    echo "Set 90-day retention on $lg"
done

Journaux de flux VPC

VPC Flow Logs capturent les métadonnées du trafic IP circulant vers et depuis les interfaces réseau de votre VPC, de vos sous-réseaux ou de vos ENI individuels. Ils sont stockés dans CloudWatch Logs ou S3. Les journaux de flux incluent l’adresse IP source, l’adresse IP de destination, le port, le protocole, le nombre de paquets, le nombre d’octets, l’action (ACCEPT ou REJECT) et l’horodatage. Ils sont précieux pour le dépannage des règles des groupes de sécurité et des NACL, la détection des analyses de ports et l’audit des modèles de trafic — mais ils ne capturent PAS le contenu réel des paquets.

# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
  --resource-ids vpc-0abc1234def567890 \
  --resource-type VPC \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-group-name /aws/vpc/flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRole

Interroger les journaux de flux VPC avec Insights

CloudWatch Logs Insights est particulièrement puissant pour l’analyse des journaux de flux VPC. Vous pouvez rapidement identifier le trafic rejeté, trouver les principales sources de trafic selon le volume d’octets, détecter les connexions inhabituelles ou isoler le trafic vers une instance donnée. Par défaut, le format des journaux de flux utilise des champs séparés par des espaces, mais leur publication au format JSON dans CloudWatch Logs permet l’extraction automatique des champs dans les requêtes Insights.

# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10

Chiffrement des journaux avec KMS

CloudWatch Logs chiffre par défaut toutes les données au repos à l’aide de clés gérées par AWS. Pour renforcer la sécurité, notamment dans les environnements réglementés, vous pouvez associer une clé KMS gérée par le client à un groupe de journaux. Vous contrôlez ainsi la rotation et l’accès à la clé, et vous pouvez révoquer l’accès à toutes les données de journal en désactivant la clé. La clé KMS doit disposer d’une politique de clé accordant à CloudWatch Logs l’autorisation de l’utiliser pour le chiffrement et le déchiffrement.

# Associate a KMS key with a log group
aws logs associate-kms-key \
  --log-group-name /myapp/production/api \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Verify encryption is configured
aws logs describe-log-groups \
  --log-group-name-prefix /myapp/production \
  --query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'

Vérification rapide

Testez votre compréhension des concepts d’architecte de solutions AWS (SAA-C03) abordés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les groupes et flux de journaux organisent les journaux par source avec une durée de conservation configurable, que Logs Insights permet d’interroger et d’agréger les données de journaux à l’aide d’un puissant langage de requête fondé sur des canalisations, et que les filtres de métriques convertissent les modèles de journaux en métriques CloudWatch susceptibles de déclencher des alarmes. Nous allons maintenant découvrir les tableaux de bord CloudWatch et Container Insights pour obtenir une visibilité opérationnelle.

Questions Fréquemment Posées

La leçon « Journaux CloudWatch et Log Insights » est-elle gratuite ?

Oui — le texte complet de « Journaux CloudWatch et Log Insights » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Journaux CloudWatch et Log Insights » ?

Regroupez les journaux d’EC2, de Lambda et des conteneurs dans des groupes de journaux, puis exécutez des requêtes CloudWatch Logs Insights pour trouver les erreurs et les tendances. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?

Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Journaux CloudWatch et Log Insights » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?

Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Métriques, espaces de noms et dimensions CloudWatch
  2. Alarmes CloudWatch et alarmes composites
  3. Journaux CloudWatch et Log Insights
  4. Tableaux de bord CloudWatch et Container Insights
← Retour à Cloud & IT Cert Prep