Comment puis-je résoudre les problèmes liés à l'échec de diffusion d'un journal par un filtre d'abonnement dans CloudWatch ?

Lecture de 7 minute(s)
0

Je souhaite résoudre les problèmes liés à l'échec de diffusion d'un journal par un filtre d'abonnement dans Amazon CloudWatch.

Brève description

Lorsque vous lancez la diffusion, vérifiez les métriques de CloudWatch Logs pour vous assurer que le modèle de filtre est correct et qu'il correspond aux événements de journaux entrants. Les métriques les plus courantes à examiner pour résoudre les problèmes sont présentées ci-dessous :

  • ForwardedBytes : Volume d'événements de journaux en octets compressés transmis à la destination de l'abonnement.
  • ForwardedLogEvents : Nombre d'événements de journaux transmis à la destination de l'abonnement.
  • DeliveryErrors : Nombre d'événements de journaux pour lesquels CloudWatch Logs a reçu une erreur lors du transfert de données vers la destination de l'abonnement.
  • DeliveryThrottling : Nombre d'événements de journaux indiquant que CloudWatch Logs a été limité lors du transfert de données vers la destination de l'abonnement.

Remarque : Si le service de destination reçoit une erreur récupérable, telle qu'une erreur de limitation ou de service, CloudWatch Logs essaie d'envoyer les données pendant 24 heures. Si l'erreur n'est pas récupérable, comme les erreurs AccessDenied ou ResourceNotFound, CloudWatch Logs n'essaie pas de procéder à une nouvelle diffusion.

Résolution

Résolvez l'échec de livraison de votre journal à l'aide d'un filtre d'abonnement basé sur le service de destination que vous utilisez.

Flux de données Amazon Kinesis

Pour résoudre les problèmes liés à l'échec de livraison d'un journal par un filtre d'abonnement à Amazon Kinesis Data Streams, effectuez les tâches suivantes :

  • Vérifiez que votre flux de données Kinesis est dans un état actif. Pour consulter le statut, utilisez la console Kinesis ou l'appel d'API DescribeStream.

  • Vérifiez que le groupe de journaux CloudWatch et le flux de données Kinesis se trouvent dans la même région AWS.

  • Vérifiez le rôle AWS Identity and Access Management (IAM) lié au filtre d'abonnement. Assurez-vous que CloudWatch Logs dispose des autorisations nécessaires pour déposer des données dans votre flux. Un exemple de politique d'autorisations de rôle est fourni ci-dessous :
    Remarque : Remplacez example-region par votre région, example-account-id par votre ID de compte AWS et example-stream-name par le nom de votre flux.

    {  
      "Statement": [{  
        "Effect": "Allow",  
        "Action": "kinesis:PutRecord",  
        "Resource": "arn:aws:kinesis:example-region:example-account-id:stream/example-stream-name"  
      }]  
    }
  • Vérifiez que le rôle IAM est configuré avec la stratégie d’approbation appropriée. Un exemple de stratégie d’approbation est fourni ci-dessous :
    Remarque : Remplacez example-region par votre région et example-account-id par votre ID de compte.

    {  
      "Statement": {  
        "Effect": "Allow",  
        "Principal": {  
          "Service": "logs.region.amazonaws.com"  
        },  
        "Action": "sts:AssumeRole",  
        "Condition": {  
          "StringLike": {  
            "aws:SourceArn": "arn:aws:logs:example-region:example-account-id:*"  
          }  
        }  
      }  
    }
  • Si vous disposez d'un flux de données Kinesis dédié, vérifiez les métriques du flux pour vous assurer qu'il fonctionne. Pour plus d'informations, consultez la section Surveillance du service Amazon Kinesis Data Streams avec Amazon CloudWatch.

  • Si vous rencontrez des problèmes liés à la journalisation entre comptes, consultez la section Comment puis-je résoudre les problèmes de journalisation entre comptes dans CloudWatch ?

Amazon Data Firehose

Pour résoudre les problèmes liés à l'échec de livraison d'un journal par un filtre d'abonnement à Amazon Data Firehose, effectuez les tâches suivantes :

  • Vérifiez que votre flux Firehose est dans un état actif. Pour consulter le statut, utilisez la console Kinesis ou l'appel d'API DescribeDeliveryStream. Si vous utilisez la fonction transformation de données, assurez-vous que la fonction AWS Lambda spécifiée existe.

  • Vérifiez les métriques Firehose pour confirmer que les données sont diffusées dans Firehose. Vérifiez des métriques telles que IncomingBytes, IncomingRecords, DataReadFromKinesisStream.Bytes et DataReadFromKinesisStream.Records.

  • Si Firehose ne reçoit pas de données, vérifiez les métriques CloudWatch au niveau de l’API. Le problème peut provenir de l'amont. Les API, telles que PutRecord et PutRecordBatch, envoient des données à Firehose et doivent être appelées correctement.

  • Consultez les journaux d'erreurs pour connaître les raisons de l'échec de livraison. Assurez-vous que la politique IAM associée inclut l'autorisation logs:PutLogEvents. Un exemple de politique IAM avec l'autorisation logs:PutLogEvents est fourni ci-dessous :
    Remarque : Remplacez example-region par votre région et example-account-id par votre ID de compte.

    {  
        "Sid": "",  
        "Effect": "Allow",  
        "Action": [  
            "logs:PutLogEvents"  
        ],  
        "Resource": [  
            "arn:aws:logs:example-region:example-account-id:log-group:/aws/kinesisfirehose/Delivery_Stream:log-stream:*",  
            "arn:aws:logs:example-region:example-account-id:log-group:%FIREHOSE_POLICY_TEMPLATE_PLACEHOLDER%:log-stream:*"  
        ]  
    }
  • Vérifiez que le rôle IAM lié à votre flux Firehose dispose des autorisations appropriées pour permettre à CloudWatch Logs de déposer des données. Un exemple de politique d'autorisations est fourni ci-dessous :
    Remarque : Remplacez example-region par votre région, example-account-id par votre ID de compte et example-stream-name par le nom de votre flux.

    {  
      "Statement": [{  
        "Effect": "Allow",  
        "Action": "firehose:PutRecord",  
        "Resource": "arn:aws:firehose:example-region:example-account-id:deliverystream/example-stream-name"  
      }]  
    }
  • Vérifiez que le rôle IAM est configuré avec la stratégie d’approbation appropriée. Un exemple de stratégie d’approbation est fourni ci-dessous :
    Remarque : Remplacez example-region par votre région et example-account-id par votre ID de compte.

    {  
      "Statement": {  
        "Effect": "Allow",  
        "Principal": { "Service": "logs.amazonaws.com" },  
        "Action": "sts:AssumeRole",  
        "Condition": {   
             "StringLike": {   
                 "aws:SourceArn": "arn:aws:example-region:example-account-id:*"  
             }   
         }  
      }  
    }
  • Si vous rencontrez des problèmes liés à la journalisation entre comptes, consultez la section Comment puis-je résoudre les problèmes de journalisation entre comptes dans CloudWatch ?

  • Pour les problèmes liés à différentes destinations, consultez la section Résolution des problèmes liés à Amazon Data Firehose.

Lambda

Pour résoudre les problèmes liés à l'échec de livraison d'un journal par un filtre d'abonnement à Lambda, effectuez les tâches suivantes :

  • Vérifiez que la fonction Lambda utilise la stratégie basée sur les ressources requise pour accorder à CloudWatch Logs l'autorisation d'exécuter votre fonction. Un exemple de déclaration de politique est fourni ci-dessous :
    Remarque : Remplacez example-region, example-account-id, example-lambda-function et example-log-name par votre région, ID de compte, fonction Lambda et nom de journal.

    "Statement": [  
        {  
          "Sid": "",  
          "Effect": "Allow",  
          "Principal": {  
            "Service": "logs.amazonaws.com"  
          },  
          "Action": "lambda:InvokeFunction",  
          "Resource": "arn:aws:lambda:example-region:example-account-id:function:example-lambda-function",  
          "Condition": {  
            "StringEquals": {  
              "AWS:SourceAccount": "example-account-id"  
            },  
            "ArnLike": {  
              "AWS:SourceArn": "arn:aws:logs:example-region:example-account-id:log-group:example-log-name:*"  
            }  
          }  
        }  
      ]
  • Vérifiez que la fonction Lambda utilise un rôle IAM qui entretient une relation de confiance pour lambda.amazonaws.com avec la stratégie de rôle suivante :

    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
            "Service": "lambda.amazonaws.com"  
            },  
            "Action": "sts:AssumeRole"  
        }  
    ]

Service OpenSearch

Pour résoudre les problèmes liés à l'échec de livraison d'un journal par un filtre d'abonnement à Amazon OpenSearch Service, effectuez les tâches suivantes :

Informations connexes

Comment puis-je créer, configurer et dépanner un filtre d'abonnement dans Kinesis à l'aide de la console CloudWatch ?

Comment puis-je résoudre un échec de livraison de données entre Amazon Data Firehose et Amazon S3 ?

Comment puis-je configurer un filtre d'abonnement CloudWatch pour invoquer ma fonction Lambda ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an