View a markdown version of this page

Créer des alertes sur les journaux - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créer des alertes sur les journaux

Vous pouvez créer des CloudWatch alarmes qui surveillent les données de votre journal de deux manières :

  • Approche Log Alarm  : créez une Log Alarm qui exécute une requête CloudWatch Logs Insights selon un calendrier et évalue les résultats agrégés directement par rapport à un seuil.

  • Approche du filtre métrique  : créez un filtre métrique sur un groupe de journaux, puis créez une alarme métrique standard sur la métrique résultante.

Créer une alarme de journal

Créer une alarme de journal

Vous pouvez créer une CloudWatch alarme qui utilise une requête CloudWatch Logs Insights pour surveiller directement les données du journal. La requête est exécutée selon un calendrier à l'aide d'une requête planifiée, et l'alarme évalue les résultats agrégés par rapport à un seuil. Pour plus d'informations sur le fonctionnement des Log Alarms, consultezEnregistrer les alarmes.

Conditions préalables

Avant de créer une alarme de journal, vous devez créer un rôle IAM qui accorde à CloudWatch Logs l'autorisation d'exécuter la requête planifiée. Si vous souhaitez également inclure des lignes de journal dans les notifications Amazon SNS, vous devez créer un deuxième rôle.

Note

Si vous créez une alarme de journal à partir de la CloudWatch console, celle-ci vous aide à créer ces rôles.

Rôle d'exécution des requêtes planifiées

Le rôle d'exécution planifiée des requêtes permet à CloudWatch Logs d'exécuter la requête en votre nom. Ce rôle est obligatoire pour que toutes les alarmes de journal puissent exécuter la requête planifiée. Le rôle doit faire confiance au logs.amazonaws.com responsable du service.

L'exemple suivant montre la politique de confiance pour le rôle d'exécution de requêtes planifiée.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

L'exemple suivant montre la politique d'autorisations. ResourceÉtendez les ARN du groupe de journaux que la requête cible.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }

Rôle des lignes de journal (facultatif)

Le rôle de lignes de journal permet CloudWatch de récupérer les lignes de journal pour les notifications par e-mail d'Amazon SNS. Ce rôle n'est requis que si vous définissez une valeur supérieure ActionLogLineCount à 0. Le rôle doit faire confiance au cloudwatch.amazonaws.com responsable du service.

L'exemple suivant montre la politique de confiance pour le rôle des lignes de journal.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

L'exemple suivant montre la politique d'autorisations pour le rôle des lignes de journal. L'logs:GetQueryResultsautorisation est requise pour récupérer les lignes de journal. ResourceÉtendez les ARN du groupe de journaux que la requête cible.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:GetQueryResults" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }
Note

Pour afficher les résultats des requêtes Log Alarm dans la CloudWatch console, l'utilisateur ou le rôle IAM accédant à la console doit disposer de l'logs:GetScheduledQueryDataautorisation requise. Il s'agit d'une API réservée à la console et n'est pas disponible via le SDK AWS CLI or. CloudTrailenregistre cette API en tant qu'événement de données. Vous devez donc configurer un journal avec enregistrement des événements de données pour le capturer.

Création d'une alarme de journal à l'aide de la console

Les étapes de cette section expliquent comment utiliser la CloudWatch console pour créer une alarme de journal. Vous pouvez également utiliser le AWS CLI pour créer une alarme de journal. Pour de plus amples informations, veuillez consulter Création d'une alarme de journal à l'aide du AWS CLI.

Pour créer une alarme de journal
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, cliquez sur Alarms (Alarmes).

  3. Sélectionnez Créer une alarme.

  4. Pour Source de données, choisissez Journaux.

  5. Dans Logs Query  :

    1. Choisissez Créer une requête dans Log Analytics. Cela ouvre la page Log Analytics sur laquelle vous pouvez créer votre requête.

    2. Sur la page Log Analytics, rédigez votre requête. Lorsque vous avez terminé, choisissez Continuer vers les alarmes en haut à droite pour revenir à la console d'alarme.

    3. Pour Expression d'agrégation, indiquez comment agréger les résultats de la requête afin de renvoyer une valeur numérique pour l'évaluation des alarmes (par exemple, count(*) ouavg(latency) by endpoint).

  6. En cas d'alarme  :

    1. Pour chaque fois que le résultat agrégé est... , choisissez un opérateur de comparaison.

    2. Pour plus de... , entrez la valeur de seuil.

    3. (Facultatif) Dans Configuration supplémentaire  :

      1. Modifiez Datapoints en alarme pour spécifier le nombre de résultats de violation requis pour déclencher ALARM les N dernières requêtes.

      2. Modifiez le traitement des données manquantes pour spécifier comment traiter les données manquantes.

  7. Selon le calendrier  :

    1. Pour Fréquence d'évaluation, choisissez la fréquence d'exécution de la requête (par exemple, toutes les 5 minutes).

    2. Pour Start time offset, la fenêtre rétrospective de chaque exécution de requête.

    3. Pour Décalage horaire de fin (facultatif), la fin de la plage de temps de requête sous forme de décalage en secondes par rapport à l'heure actuelle.

  8. Avec l'autorisation de l'IAM :

    1. Spécifiez le rôle requis pour exécuter la requête planifiée. Vous pouvez choisir de créer un nouveau rôle ou d'utiliser un rôle existant.

  9. Choisissez Suivant.

  10. Sous Configurer les actions, configurez les actions et les notifications selon vos besoins.

    1. Pour inclure les lignes de journal déclenchant la transition d'alarme dans les notifications par e-mail d'Amazon SNS, sous Inclure les résultats de la requête, dans les actions suivantes :

      1. Ajoutez le nombre de résultats de requête pour spécifier le nombre de lignes de journal à inclure.

      2. Créez ou choisissez un rôle existant qui est utilisé pour obtenir les résultats de requête requis.

  11. Choisissez Suivant.

  12. Entrez un nom et une description facultative (compatible avec Markdown).

  13. (Facultatif) Ajoutez des balises.

  14. Choisissez Suivant.

  15. Sous Aperçu et création, passez en revue votre configuration, puis choisissez Créer une alarme.

Création d'une alarme de journal à l'aide du AWS CLI

Vous pouvez utiliser la AWS CLI put-log-alarm commande pour créer une alarme de journal.

L'exemple suivant crée une alarme de journal qui surveille le nombre d'erreurs dans un groupe de journaux et passe à ALARM l'état lorsque ce nombre dépasse 100 dans 3 exécutions de requêtes sur 5.

aws cloudwatch put-log-alarm \ --alarm-name "HighErrorCount" \ --alarm-description "Alarm when error count exceeds 100" \ --comparison-operator GreaterThanThreshold \ --threshold 100 \ --query-results-to-evaluate 5 \ --query-results-to-alarm 3 \ --treat-missing-data missing \ --alarm-actions "arn:aws:sns:region:account-id:topic-name" \ --scheduled-query-configuration '{ "QueryString": "fields @timestamp, @message | filter @message like /ERROR/", "LogGroupIdentifiers": ["/aws/lambda/my-function"], "ScheduledQueryRoleARN": "arn:aws:iam::account-id:role/ScheduledQueryRole", "AggregationExpression": "count(*)", "ScheduleConfiguration": { "ScheduleExpression": "rate(10 minutes)", "StartTimeOffset": 600 } }' \ --action-log-line-count 5 \ --action-log-line-role-arn "arn:aws:iam::account-id:role/LogLineRole"

Le tableau suivant décrit les principaux paramètres de la put-log-alarm commande.

Paramètre Obligatoire Description
--alarm-name Oui Le nom de l'alarme. Ne doit contenir que UTF-8 des caractères.
--comparison-operator Oui L'opérateur de comparaison pour l'évaluation des seuils. Valeurs valides: GreaterThanThreshold, GreaterThanOrEqualToThreshold, LessThanThreshold, LessThanOrEqualToThreshold.
--threshold Oui La valeur de seuil numérique à comparer.
--query-results-to-evaluate Oui Le nombre d'exécutions de requêtes récentes à évaluer (N entrées M-out-of-N).
--query-results-to-alarm Oui Le nombre de résultats de violation nécessaires pour déclencher ALARM (M in M-out-of-N).
--treat-missing-data Non Comment traiter les données manquantes. Valeurs valides : missing (par défaut),notBreaching,breaching,ignore.
--scheduled-query-configuration Oui La configuration de la requête, y compris la chaîne de requête, les identificateurs de groupe de journaux, l'ARN du rôle de requête planifié, l'expression d'agrégation et la configuration de la planification.
--action-log-line-count Non Nombre de lignes de journal à inclure dans les notifications par e-mail d'Amazon SNS (0 à 50). La valeur par défaut est 0.
--action-log-line-role-arn Non L'ARN du rôle IAM qui fait confiancecloudwatch.amazonaws.com. Obligatoire si cette valeur action-log-line-count est supérieure à 0.

Création d'une alarme de journal à l'aide de AWS CloudFormation

Vous pouvez utiliser le type de AWS::CloudWatch::LogAlarm ressource pour créer une alarme de journal dans un AWS CloudFormation modèle.

L'exemple de modèle suivant crée une alarme de journal qui surveille le nombre d'erreurs.

AWSTemplateFormatVersion: '2010-09-09' Resources: HighErrorCountAlarm: Type: AWS::CloudWatch::LogAlarm Properties: AlarmName: HighErrorCount AlarmDescription: Alarm when error count exceeds 100 ComparisonOperator: GreaterThanThreshold Threshold: 100 QueryResultsToEvaluate: 5 QueryResultsToAlarm: 3 TreatMissingData: missing ActionLogLineCount: 5 ActionLogLineRoleArn: !GetAtt LogLineRole.Arn ScheduledQueryConfiguration: QueryString: "fields @timestamp, @message | filter @message like /ERROR/" LogGroupIdentifiers: - /aws/lambda/my-function ScheduledQueryRoleARN: !GetAtt ScheduledQueryRole.Arn AggregationExpression: "count(*)" ScheduleConfiguration: ScheduleExpression: "rate(10 minutes)" StartTimeOffset: 600 AlarmActions: - !Ref AlarmSNSTopic

Création d'une CloudWatch alarme basée sur un filtre métrique de groupe de journaux

Cette section décrit comment créer une alarme basée sur un filtre de métrique d'un groupe de journaux. Les filtres métriques vous permettent de rechercher des termes et des modèles dans les données du journal au fur et à mesure de leur envoi CloudWatch. Pour plus d'informations, voir Créer des métriques à partir des événements du journal à l'aide de filtres dans le guide de l'utilisateur Amazon CloudWatch Logs. Avant de créer une alarme basée sur un filtre de métrique d'un groupe de journaux, vous devez effectuer les actions suivantes :

Pour créer une alarme basée sur un filtre de métrique d'un groupe de journaux
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, choisissez Logs (Journaux), puis Log groups (Groupes de journaux).

  3. Sélectionnez le groupe de journaux qui comprend votre filtre de métrique.

  4. Sélectionnez Metric filters (Filtres de métrique).

  5. Dans l'onglet Metric filters (Filtres de métrique), cochez la case du filtre de métrique sur lequel vous voulez baser votre alarme.

  6. Sélectionnez Créer une alerte.

  7. (Facultatif) Sous Metric (Métrique), modifiez le champ Metric name (Nom de la métrique), Statistic (Statistique) et Period (Période).

  8. Sous Conditions, spécifiez les éléments suivants :

    1. Pour Threshold type (Type de seuil), choisissez Static (Statique) ou Anomaly detection (Détection des anomalies).

    2. Pour chaque fois que your-metric-name c'est... , choisissez Plus grand Greater/Equal Lower/Equal, ou Plus bas.

    3. Pour than . . . (à . . .), spécifiez un nombre pour votre valeur de seuil.

  9. Sélectionnez Additional configuration (Configuration supplémentaire).

    1. Pour Data points to alarm (Points de données pour l'alarme), indiquez combien de points de données déclenchent le passage de votre alarme à l'état ALARM. Si vous spécifiez des valeurs correspondantes, votre alarme passe à l'état ALARM si ce nombre de périodes consécutives est dépassé. Pour créer une M-out-of-N alarme, spécifiez un nombre pour la première valeur inférieur à celui que vous spécifiez pour la deuxième valeur. Pour de plus amples informations, veuillez consulter Évaluation des alarmes.

    2. Pour Missing data treatment (Traitement des données manquantes), sélectionnez une option pour spécifier comment traiter les données manquantes lors de l'évaluation de votre alarme.

  10. Choisissez Suivant.

  11. Sous Notification, spécifiez une rubrique Amazon SNS qui doit recevoir une notification lorsque l'alarme passe à l'état ALARM, OK ou INSUFFICIENT_DATA.

    1. (Facultatif) Pour envoyer plusieurs notifications pour le même état d'alarme ou pour les différents états de l'alarme, sélectionnez Add notification (Ajouter une notification).

    2. (Facultatif) Pour ne pas envoyer de notifications, choisissez Remove (Supprimer).

  12. Pour que l’alarme exécute des actions Auto Scaling, EC2, Lambda ou Systems Manager, cliquez sur le bouton approprié, puis choisissez l’état de l’alerte et l’action à effectuer. Si vous choisissez une fonction Lambda comme action d’alarme, vous spécifiez le nom de la fonction ou l’ARN, et vous pouvez éventuellement choisir une version spécifique de la fonction.

    Les alertes peuvent effectuer des actions du Systems Manager uniquement lorsqu'elles passent à l'état ALARM. Pour plus d'informations sur les actions de Systems Manager, consultez les sections Configuration CloudWatch pour créer à OpsItems partir d'alarmes et Création d'incidents.

    Note

    Pour créer une alerte qui exécute une action SSM Incident Manager, vous devez disposer de certaines autorisations. Pour plus d'informations, consultez des exemples Identity-based de politiques pour AWS Systems Manager Incident Manager.

  13. Choisissez Suivant.

  14. Pour Name and description (Nom et description), saisissez un nom et une description pour votre alarme. Le nom ne doit contenir que des UTF-8 caractères et ne peut pas contenir de caractères de contrôle ASCII. La description peut inclure un formatage simplifié, qui s'affiche uniquement dans l'onglet Détails de l'alarme de la CloudWatch console. Le markdown peut être utile pour ajouter des liens vers des runbooks ou d'autres ressources internes.

  15. Pour Preview and create (Prévisualiser et créer), vérifiez que votre configuration est correcte, puis sélectionnez Create alarm (Créer l'alarme).