Wie erstelle, konfiguriere und behebe ich Fehler mithilfe der CloudWatch-Konsole einen Abonnementfilter nach Kinesis?

Lesedauer: 7 Minute
0

Ich möchte einen Abonnementfilter erstellen, um meine Amazon CloudWatch Logs mithilfe der CloudWatch-Konsole zu Amazon Kinesis zu streamen. Wie mache ich das?

Kurzbeschreibung

CloudWatch-Protokolle können nahezu in Echtzeit an dasselbe Konto oder an kontoübergreifende Ziele von Kinesis oder Amazon Kinesis Data Firehose gesendet werden. Sie können dies tun, indem Sie einen Abonnementfilter verwenden. Die Protokollkonsole von CloudWatch unterstützt die Ziel- und Setup-Konfiguration.

Informationen zum Konfigurieren eines Abonnementfilters mithilfe der Filtermustersyntax finden Sie unter Filter- und Mustersyntax.

Lösung

Abonnementkonfiguration für einen Kinesis-Datenstrom im selben oder dem laufenden Konto

Hinweis: Die Region der CloudWatch-Protokollgruppe und die Kinesis-Zielregion müssen identisch sein.

Bevor Sie Ihr Abonnement erstellen, gehen Sie wie folgt vor:

Gehen Sie wie folgt vor, um eine benutzerdefinierte IAM-Rolle und Rollenrichtlinie zu erstellen:

1.    Öffnen Sie die IAM-Konsole mit Ihrem Benutzer, der über Administratorberechtigungen verfügt.

2.    Wählen Sie Richtlinien im Navigationsbereich aus.

3.    Wählen Sie im Inhaltsbereich Richtlinie erstellen aus.

4.    Kopieren Sie das folgende JSON-Richtliniendokument und fügen Sie es in die JSON-Registerkarte ein.

Berechtigung für Rollen

{
  "Statement": [{
    "Effect": "Allow",
    "Action": "kinesis:PutRecord",
    "Resource": "arn:aws:kinesis:<REGION>:<ACCOUNT_ID>:stream/<STREAM_NAME>"
  }]
}

5.    Öffnen Sie die IAM-Konsole.

6.    Wählen Sie im Navigationsbereich der Konsole Rollen und dann Rolle erstellen.

7.    Wählen Sie den Rollentyp Benutzerdefinierte Vertrauensrichtlinie.

8.    Geben Sie im Abschnitt Benutzerdefinierte Vertrauensrichtlinie die benutzerdefinierte Vertrauensrichtlinie für die Rolle ein oder fügen Sie sie ein. Weitere Informationen finden Sie unter Erstellen von IAM-Richtlinien.

9.    Wählen Sie Weiter.

10.    Wählen Sie die benutzerdefinierte IAM-Richtlinie aus, die im vorherigen Schritt erstellt wurde.

11.    Wählen Sie Weiter, Eine Rolle erstellen

Vertrauensrichtlinie

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
      }
    }
  }
}

Nachdem Sie einen Kinesis-Stream und eine IAM-Rolle erstellt haben, können Sie einen Abonnementfilter erstellen:

1.    Öffnen Sie die CloudWatch-Konsole.

2.    Wählen Sie Protokollgruppe aus.

3.    Wählen Sie Aktion, Abonnementfilter aus.

4.    Um das Ziel zu konfigurieren, wählen Sie Kinesis-Abonnementfilter erstellen aus.

5.    Wählen Sie Laufendes Kontoaus.

6.    Wählen Sie Ihren Kinesis-Datenstrom aus der Dropdown-Liste aus.

7.    Wählen Sie die IAM-Rolle aus, die Sie zuvor erstellt haben.

8.    Prüfen Sie die Verteilungsmethode:

Nach Protokollstream — Überprüft, ob nachgeschaltete Verbraucher Protokollereignisse nach Protokollstream aggregieren können, aber möglicherweise weniger effizient sind. Diese Methode kann auch höhere Streaming-Kosten verursachen, da mehr Shards erforderlich sind.

Zufällig – Verteilt die Last über Kinesis-Stream-Shards, aber nachgeschaltete Verbraucher können Protokollereignisse nicht nach Protokollstream aggregieren.

9.    Konfigurieren des Protokollformats und der Filter:

Wählen Sie das Protokollformat. Das Format kann Amazon VPC Flow Logs, AWS CloudTrail oder AWS Lambda für Protokolle sein, die von Amazon VPC, CloudTrail oder Lambda veröffentlicht wurden. Oder Sie können JSON, durch Leerzeichen getrennt oder Andereauswählen, abhängig von Ihren eingehenden Protokollereignissen.

Definieren Sie das Filtermuster im Abschnitt Abonnementfiltermuster.

Geben Sie einen Namen für Ihren Abonnementfilter ein.

10.    Verifizieren Sie Ihr Muster mit den vorhandenen Protokollereignisdaten

11.    Wählen Sie nach der Überprüfung Streaming starten aus.

12.    (Optional) Stellen Sie sicher, dass Ihr Datenstrom funktioniert, indem Sie den Fluss der Protokollereignisse überprüfen.

Konfiguration eines kontenübergreifenden Kinesis-Datenstromziels

Hinweis: Wenn Sie beim Ausführen von Befehlen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Sie können Protokollereignisse von CloudWatch an Kinesis-Datenströme in verschiedenen AWS-Konten und -Regionen bereitstellen. Richten Sie dazu kontenübergreifende Protokolldatenfreigabe mit Abonnements ein, während Sie die AWS-Region angeben, wie im folgenden Beispiel gezeigt.

Hinweis: In diesem Beispiel werden CloudWatch-Protokolle in der us-east-1-Region an den Kinesis-Datenstrom eines anderen AWS-Benutzers in us-west-2 geliefert. Die AWS-Konto-ID des Empfängers der Protokolldaten lautet 222222222222, und die AWS-Konto-ID des Absenders der Protokolldaten lautet 111111111111.

Erstellen Sie einen Zieldatenstrom im Empfängerkonto 222222222222

1.    Erstellen Sie einen Zieldatenstrom in Kinesis im Datenempfängerkonto mit einer IAM-Rolle und einer Vertrauensrichtlinie.

2.    Erstellen Sie mit dem Befehl create-stream den Datenstrom. Stellen Sie sicher, dass Sie die —region angeben. Mit diesem Befehl wird zum Beispiel der Datenstrom YourStreamName in us-west-2 erstellt:

aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2

3.    Überprüfen Sie mit dem Befehl describe-stream die Eigenschaft StreamDescription.StreamStatus. Stellen Sie sicher, dass Sie die —region angeben. Dieser Befehl überprüft zum Beispiel den Stream YourStreamName in us-west-2:

aws kinesis describe-stream --stream-name "YourStreamName" --region us-west-2

4.    Erstellen Sie mit dem Befehl put-destination das Protokollziel von CloudWatch. Legen Sie die —region für den —role-arn auf dieselbe Region wie die CloudWatch-Quellprotokolle fest. Der folgende Befehl muss beispielsweise im Empfänger-/Zielkonto 222222222222 ausgeführt werden, das das Protokollziel im Empfängerkonto 222222222222 in us-east-1 erstellt:

aws logs put-destination \
  --destination-name "testDestination" \
  --target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \
  --role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1

Erstellen Sie einen Abonnementfilter im Quellkonto 111111111111

Gehen Sie wie folgt vor, um den Abonnementfilter zu erstellen:

1.    Wählen Sie die Protokollgruppe aus.

2.    Wählen Sie Aktion, Abonnementfilteraus.

3.    Um das Ziel auszuwählen, wählen Sie eine der folgenden Optionen:

Kinesis-Abonnementfilter erstellen: Erstellt einen Abonnementfilter für ein Kinesis-Datenstrom-Ziel

4.    Wählen Sie Ein anderes Konto aus, da das Ziel kontenübergreifend ist.

5.    Geben Sie für ein kontenübergreifendes Kinesis- oder Kinesis-Firehose-Ziel den Ziel-ARN an.

6.    Wählen Sie die Verteilungsmethode aus:

Nach Protokollstream — Überprüft, ob nachgeschaltete Verbraucher Protokollereignisse nach Protokollstream aggregieren können, aber möglicherweise weniger effizient sind. Diese Methode kann auch höhere Streaming-Kosten verursachen, da mehr Shards erforderlich sind.

Zufällig – Verteilt die Last über Kinesis-Stream-Shards, aber nachgeschaltete Verbraucher können Protokollereignisse nicht nach Protokollstream aggregieren.

7.    Konfigurieren des Protokollformats und der Filter:

Wählen Sie das Protokollformat. Das Format kann Amazon VPC Flow Logs, CloudTrail oder AWS Lambda für Protokolle sein, die von Amazon VPC, CloudTrail oder Lambda veröffentlicht wurden. Oder Sie können JSON, durch Leerzeichen getrennt oder Andere auswählen, abhängig von Ihren eingehenden Protokollereignissen.

Definieren Sie das Filtermuster im Abschnitt Abonnementfiltermuster.

Geben Sie einen Namen für Ihren Abonnementfilter ein.

8.    Verifizieren Sie Ihr Muster mit den vorhandenen Protokollereignisdaten

9.    Wählen Sie nach der Überprüfung Streaming starten aus.

10.    (Optional) Stellen Sie sicher, dass Ihr Datenstrom funktioniert, indem Sie den Fluss der Protokollereignisse überprüfen.

Fehlerbehebung

  • Stellen Sie sicher, dass sich Ihr Kinesis-Stream im aktiven Zustand befindet und dass Sie ihn auf der Kinesis-Konsole anzeigen können. Oder Sie können den DescribeStream-API-Aufruf verwenden.
  • Stellen Sie sicher, dass die CloudWatch-Protokollgruppe und die Kinesis-Datenstrom-Region identisch sind.
  • Stellen Sie sicher, dass es eine IAM-Rolle gibt, die Vertrauensberechtigungen für logs.yourregion.amazonaws.com hat und die Berechtigung kinesis:putrecords zulässt.
  • Stellen Sie sicher, dass die Regionen und Ressourcen in der IAM-Richtlinie korrekt sind.
  • Stellen Sie sicher, dass Sie Kinesis Firehose nicht ausgewählt haben, wenn Sie einen Abonnementfilter für Kinesis-Datenstrom konfigurieren.
  • Stellen Sie nach dem Streaming sicher, dass die Metriken für den Abonnementfilter bestätigen, dass das Filtermuster gültig ist und mit den eingehenden Protokollereignissen übereinstimmt. Überprüfen Sie dazu die folgenden 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.
  • Um sicherzustellen, dass beim Streaming von Protokollereignissen an Ihr Ziel keine Fehler auftreten, überprüfen Sie die folgenden Metriken: DeliveryErrors: Die Anzahl der Protokollereignisse, für die CloudWatch Logs beim Weiterleiten von Daten an das Abonnementziel, einen Fehler erhalten hat. DeliveryThrottling: Die Anzahl der Protokollereignisse, die darauf hinweist, dass CloudWatch Logs beim Weiterleiten von Daten an das Abonnementziel gedrosselt wurde.
  • Wenn Sie einen dedizierten Kinesis-Stream haben, überprüfen Sie die Metriken des Streams, um die Funktionalität zu überprüfen.
  • Informationen zur Fehlerbehebung bei der kontenübergreifenden Protokollierung finden Sie unter Fehlerbehebung bei der kontoübergreifenden CloudWatch-Einrichtung.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr