Wie behebe ich kontenübergreifende Protokollierprobleme in CloudWatch?

Letzte Aktualisierung: 2022-05-12

Ich möchte Probleme mit der kontenübergreifenden Protokollierung mithilfe meines Amazon CloudWatch-Kontos beheben. Wie kann ich vorgehen?

Kurzbeschreibung

Sie können CloudWatch-Protokolle innerhalb Ihres Kontos oder an ein anderes AWS-Konto nahezu in Echtzeit senden. Das Teilen Ihrer Protokolle mit einem anderen AWS-Konto oder das Empfangen von deren Protokollen wird kontenübergreifende Protokollierung genannt. Sie können die kontenübergreifende Protokollierung mithilfe eines Amazon Kinesis- oder Amazon Kinesis Data Firehose-Datenstroms einrichten. Oder Sie können die Daten mithilfe eines Abonnementfilters an Amazon OpenSearch streamen. Die CloudWatch-Konsole unterstützt all diese Optionen. Weitere Informationen zur Verwendung der kontenübergreifenden Protokollierung finden Sie in diesen Artikeln:

Auflösung

Problembehandlung bei Kinesis Data Stream/Kinesis Data Firehose-Bereitstellungsdatenstrom als Ziel

1.    Stellen Sie sicher, dass sich Ihr Kinesis-Datenstrom oder Kinesis Data Firehose in einem aktiven Zustand befindet. Sie können den Status auf der Kinesis-Konsole anzeigen oder die DescribeStream- oder DescribeDeliveryStream-API-Aufrufe verwenden.

2.    Vergewissern Sie sich, dass die CloudWatch-Protokollgruppen-Region und die Kinesis Data Stream-Region übereinstimmen.

3.    Vergewissern Sie sich, dass Sie eine AWS Identity and Access Management (IAM)-Rolle mit den richtigen Vertrauensberechtigungen erstellt haben. Die IAM-Rolle muss es Ihren CloudWatch-Protokollen ermöglichen, Protokollereignisse an Kinesis Data Stream oder Kinesis Data Firehose zu senden.

In diesem Beispiel hat das Protokolldaten-Empfängerkonto eine AWS-Konto-ID von 999999999999. Die AWS-Konto-ID des Absenders der Protokolldaten lautet 111111111111. Stellen Sie sicher, dass das Konto 111111111111 in der Vertrauensrichtlinie für das Empfängerkonto für Kinesis Data Streams oder Kinesis Data Firehose-Datenströme zulässig ist. Dies ist ein Beispiel für eine IAM-Vertrauensrichtlinie für Kinesis Data Streams oder Kinesis Data Firehose-Bereitstellungsdatenströme:

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Condition": {
      "StringLike": {
        "aws:SourceArn": [
          "arn:aws:logs:region:sourceAccountId:*",
          "arn:aws:logs:region:recipientAccountId:*"
        ]
      }
    },
    "Action": "sts:AssumeRole"
  }
}

Dieses Beispiel zeigt eine IAM-Rollenrichtlinie für Kinesis Data Streams:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kinesis:PutRecord",
      "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream"
    }
  ]
}
 
IAM role policy for kinesis Firehose stream.
 
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "firehose:*"
      ],
      "Resource": [
        "arn:aws:firehose:region:999999999999:*"
      ]
    }
  ]
}

4.    Stellen Sie sicher, dass die Regionen und Ressourcen-ARNs in Ihrer IAM-Richtlinie korrekt sind.

5.    Stellen Sie sicher, dass Sie Kinesis Firehose nicht ausgewählt haben, wenn Sie einen Abonnementfilter für Kinesis Data Streams konfigurieren.

6.    Überprüfen Sie nach dem Start des Streamings die Metriken für den Abonnementfilter. Vergewissern Sie sich, dass das Filtermuster gültig ist und mit den eingehenden Protokollereignissen übereinstimmt. Weitere Informationen finden Sie unter Überwachung mit CloudWatch-Metriken. Verwenden Sie diese Metriken:

  • ForwardedBytes – Das Volumen der Protokollereignisse in komprimierten Bytes, die an das Abonnementziel weitergeleitet werden.
  • ForwardedLogEvents – Die Anzahl der Protokollereignisse, die an das Abonnementziel weitergeleitet wurden.

7.    Überprüfen Sie diese Metriken auf Zielfehler, um sicherzustellen, dass beim Streaming von Protokollereignissen zum Ziel keine Fehler auftreten. Möglicherweise finden Sie einen Datenpunkt, der bestätigt, dass das Protokollereignis beim Streaming von Protokollereignissen an das Ziel einen Fehler erhalten hat.

  • DeliveryErrors – Die Anzahl der Protokollereignisse, für die CloudWatch-Protokolle beim Weiterleiten von Daten an das Abonnementziel einen Fehler erhalten haben.
  • DeliveryThrottling – Die Anzahl der Protokollereignisse, die CloudWatch beim Weiterleiten von Daten an das Abonnementziel gedrosselt protokolliert.

8.    Wenn Sie über einen dedizierten Datenstrom verfügen, der Einblicke in Ihre Kinesis Data Streams-Funktionalität bietet, überprüfen Sie die Metriken für Ihren Kinesis Data Stream oder Kinesis Firehose. Weitere Informationen finden Sie unter Überwachung des Amazon Kinesis Data Streams-Service mit Amazon CloudWatch und Überwachung von Kinesis Data Firehose mit CloudWatch Metriken.

Problembehandlung bei OpenSearch als Ziel

1.    Vergewissern Sie sich, dass die OpenSearch-Domain entweder öffentlichen Zugriff oder VPC-Zugriff zulässt. Weitere Informationen zum Erstellen einer Domäne finden Sie unter Erstellen und Verwalten von Amazon OpenSearch Service-Domänen.

2.    Stellen Sie sicher, dass die AWS Lambda-Funktion über eine IAM-Ausführungsrolle verfügt, die eine Vertrauensbeziehung für lambda.amazonaws.com mit dieser Rollenrichtlinie hat:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "es:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:es:region:account-id:domain/target-domain-name/*"
    }
  ]
}

3.    Wenn die OpenSearch-Zieldomäne einen VPC-Zugriff verwendet, überprüfen Sie, ob der Rolle die AWSLambdaVPCAccessExecutionRole-Richtlinie beigefügt ist.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?