Protokollierung - Amazon Managed Streaming für Apache Kafka

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Protokollierung

Sie können Apache Kafka-Broker-Protokolle an einen oder mehrere der folgenden Zieltypen senden: Amazon CloudWatch Logs, Amazon S3, Amazon Data Firehose. Sie können MSK API Amazon-Anrufe auch mit protokollieren AWS CloudTrail.

Broker-Protokolle

Mit Broker-Protokollen können Sie Fehler bei Ihren Apache Kafka-Anwendungen beheben und deren Kommunikation mit Ihrem MSK Cluster analysieren. Sie können Ihren neuen oder vorhandenen MSK Cluster so konfigurieren, dass er Broker-Protokolle INFO auf -Ebene an eine oder mehrere der folgenden Arten von Zielressourcen übermittelt: eine CloudWatch Protokollgruppe, einen S3-Bucket, einen Firehose-Lieferstream. Über Firehose können Sie dann die Protokolldaten aus Ihrem Lieferstream an den OpenSearch Service übermitteln. Sie müssen eine Zielressource erstellen, bevor Sie Ihren Cluster so konfigurieren, dass er Broker-Protokolle dahin übermittelt. Amazon erstellt diese Zielressourcen MSK nicht für Sie, wenn sie nicht bereits existieren. Informationen zu diesen drei Arten von Zielressourcen und deren Erstellung finden Sie in der folgenden Dokumentation:

Erforderliche Berechtigungen

Um ein Ziel für MSK Amazon-Broker-Logs zu konfigurieren, muss die IAM Identität, die Sie für MSK Amazon-Aktionen verwenden, über die in der AWS verwaltete Richtlinie: Ein mazonMSKFull Zugriff Richtlinie beschriebenen Berechtigungen verfügen.

Um Broker-Protokolle an einen S3-Bucket zu streamen, benötigen Sie auch die Berechtigung s3:PutBucketPolicy. Informationen zu S3-Bucket-Richtlinien finden Sie unter Wie füge ich eine S3-Bucket-Richtlinie hinzu? im Amazon-S3-Benutzerhandbuch. Allgemeine Informationen zu IAM Richtlinien finden Sie unter Access Management im IAM Benutzerhandbuch.

Erforderliche KMS Schlüsselrichtlinie für die Verwendung mit SSE - KMS Buckets

Wenn Sie die serverseitige Verschlüsselung für Ihren S3-Bucket mithilfe von AWS KMS-managed Keys (SSE-KMS) mit einem vom Kunden verwalteten Schlüssel aktiviert haben, fügen Sie der Schlüsselrichtlinie für Ihren KMS Schlüssel Folgendes hinzu, damit Amazon Broker-Dateien in den Bucket schreiben MSK kann.

{ "Sid": "Allow Amazon MSK to use the key.", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Konfiguration von Broker-Logs mit dem AWS Management Console

Wenn Sie einen neuen Cluster erstellen, suchen Sie im Abschnitt Überwachung nach der Überschrift Bereitstellung von Broker-Protokollen. Sie können die Ziele angeben, an die Amazon Ihre Brokerprotokolle liefern MSK soll.

Wählen Sie für einen vorhandenen Cluster den Cluster aus der Cluster-Liste aus und wählen Sie dann die Registerkarte Eigenschaften. Scrollen Sie nach unten zum Abschnitt Protokoll-Bereitstellung und wählen Sie dann die Schaltfläche Bearbeiten. Sie können die Ziele angeben, an die Amazon Ihre Brokerprotokolle liefern MSK soll.

Konfiguration von Broker-Protokollen mit dem AWS CLI

Wenn Sie die update-monitoring Befehle create-cluster oder verwenden, können Sie optional den logging-info Parameter angeben und ihm eine JSON Struktur wie im folgenden Beispiel übergeben. In diesem JSON Fall sind alle drei Zieltypen optional.

{ "BrokerLogs": { "S3": { "Bucket": "ExampleBucketName", "Prefix": "ExamplePrefix", "Enabled": true }, "Firehose": { "DeliveryStream": "ExampleDeliveryStreamName", "Enabled": true }, "CloudWatchLogs": { "Enabled": true, "LogGroup": "ExampleLogGroupName" } } }

Konfigurieren von Broker-Protokollen mithilfe der API

Sie können die optionale loggingInfo Struktur in den Operationen angebenJSON, die Sie an die CreateClusterUpdateMonitoringOR-Operationen übergeben.

Anmerkung

Wenn die Broker-Protokollierung aktiviert ist, MSK protokolliert Amazon standardmäßig INFO Level-Logs an die angegebenen Ziele. Benutzer von Apache Kafka 2.4.X und höher können jedoch die Broker-Protokollierungsebene jedoch dynamisch auf eine der log4j-Protokollierungsebenen festlegen. Informationen zur dynamischen Einstellung der Broker-Protokollebene finden Sie unter KIP-412: Extend Admin API to support dynamic application log levels. Wenn Sie die Protokollebene dynamisch auf DEBUG oder setzenTRACE, empfehlen wir, Amazon S3 oder Firehose als Protokollziel zu verwenden. Wenn Sie CloudWatch Logs als Protokollziel verwenden und die Protokollierung dynamisch aktivieren DEBUG oder TRACE nivellieren, MSK kann Amazon kontinuierlich eine Stichprobe von Protokollen bereitstellen. Dies kann die Leistung des Brokers erheblich beeinträchtigen und sollte nur verwendet werden, wenn die INFO-Protokollierungsebene nicht ausführlich genug ist, um die Grundursache eines Problems zu ermitteln.

APIAnrufe protokollieren mit AWS CloudTrail

Anmerkung

AWS CloudTrail Protokolle sind für Amazon MSK nur verfügbar, wenn Sie sie verwendenIAMZugriffskontrolle.

Amazon MSK ist in einen Service integriert AWS CloudTrail, der eine Aufzeichnung der Aktionen bereitstellt, die von einem Benutzer, einer Rolle oder einem AWS Service bei Amazon ausgeführt wurdenMSK. CloudTrail erfasst API Aufrufe als Ereignisse. Zu den erfassten Anrufen gehören Anrufe von der MSK Amazon-Konsole und Code-Aufrufe an den MSK API Amazon-Betrieb. Es werden auch Apache-Kafka-Aktionen wie das Erstellen und Ändern von Themen und Gruppen erfasst.

Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Übermittlung von CloudTrail Ereignissen an einen Amazon S3 S3-Bucket aktivieren, einschließlich Ereignissen für AmazonMSK. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse trotzdem in der CloudTrail Konsole im Ereignisverlauf anzeigen. Anhand der von gesammelten Informationen können Sie die Anfrage CloudTrail, die an Amazon gestellt wurde, MSK oder die Apache Kafka-Aktion, die IP-Adresse, von der aus die Anfrage gestellt wurde, wer die Anfrage gestellt hat, wann sie gestellt wurde, und weitere Details ermitteln.

Weitere Informationen darüber CloudTrail, einschließlich der Konfiguration und Aktivierung, finden Sie im AWS CloudTrail Benutzerhandbuch.

MSKAmazon-Informationen in CloudTrail

CloudTrail ist in Ihrem Amazon Web Services Services-Konto aktiviert, wenn Sie das Konto erstellen. Wenn unterstützte Ereignisaktivitäten in einem MSK Cluster auftreten, wird diese Aktivität zusammen mit anderen AWS Serviceereignissen in der CloudTrail Ereignishistorie in einem Ereignis aufgezeichnet. Sie können die neusten Ereignisse in Ihrem Amazon Web Services-Konto anzeigen, suchen und herunterladen. Weitere Informationen finden Sie unter Ereignisse mit CloudTrail Ereignisverlauf anzeigen.

Für eine fortlaufende Aufzeichnung von Ereignissen in Ihrem Amazon Web Services Services-Konto, einschließlich Ereignissen für AmazonMSK, erstellen Sie einen Trail. Ein Trail ermöglicht CloudTrail die Übermittlung von Protokolldateien an einen Amazon S3 S3-Bucket. Wenn Sie einen Trail in der Konsole anlegen, gilt dieser für alle -Regionen. Der Trail protokolliert Ereignisse aus allen Regionen in der AWS -Partition und stellt die Protokolldateien in dem von Ihnen angegebenen Amazon-S3-Bucket bereit. Darüber hinaus können Sie andere Amazon-Dienste so konfigurieren, dass sie die in den CloudTrail Protokollen gesammelten Ereignisdaten weiter analysieren und darauf reagieren. Weitere Informationen finden Sie hier:

Amazon MSK protokolliert alle MSKAmazon-Operationen als Ereignisse in CloudTrail Protokolldateien. Darüber hinaus protokolliert es die folgenden Apache-Kafka-Aktionen.

  • Kafka-Cluster: DescribeClusterDynamicConfiguration

  • Kafka-Cluster: AlterClusterDynamicConfiguration

  • Kafka-Cluster: CreateTopic

  • Kafka-Cluster: DescribeTopicDynamicConfiguration

  • Kafka-Cluster: AlterTopic

  • Kafka-Cluster: AlterTopicDynamicConfiguration

  • Kafka-Cluster: DeleteTopic

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte:

  • Ob die Anfrage mit Root-Benutzeranmeldedaten oder AWS Identity and Access Management (IAM) Benutzeranmeldedaten gestellt wurde.

  • Gibt an, ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen Verbundbenutzer gesendet wurde.

  • Ob die Anfrage von einem anderen AWS Dienst gestellt wurde.

Weitere Informationen finden Sie im CloudTrail userIdentityElement.

Beispiel: MSK Amazon-Protokolldateieinträge

Ein Trail ist eine Konfiguration, die die Übertragung von Ereignissen als Protokolldateien an einen von Ihnen angegebenen Amazon S3 S3-Bucket ermöglicht. CloudTrail Protokolldateien enthalten einen oder mehrere Protokolleinträge. Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar und enthält unter anderem Informationen über die angeforderte Aktion, das Datum und die Uhrzeit der Aktion sowie über die Anforderungsparameter. CloudTrail Protokolldateien sind kein geordneter Stack-Trace der öffentlichen API Aufrufe und Apache Kafka-Aktionen, sie erscheinen also nicht in einer bestimmten Reihenfolge.

Das folgende Beispiel zeigt CloudTrail Protokolleinträge, die die Aktionen DescribeCluster und die MSK Aktionen von DeleteCluster Amazon demonstrieren.

{ "Records": [ { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:24Z", "eventSource": "kafka.amazonaws.com", "eventName": "DescribeCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" }, "responseElements": null, "requestID": "bd83f636-fdb5-abcd-0123-157e2fbf2bde", "eventID": "60052aba-0123-4511-bcde-3e18dbd42aa4", "readOnly": true, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEF0123456789ABCDE", "arn": "arn:aws:iam::012345678901:user/Joe", "accountId": "012345678901", "accessKeyId": "AIDACKCEVSQ6C2EXAMPLE", "userName": "Joe" }, "eventTime": "2018-12-12T02:29:40Z", "eventSource": "kafka.amazonaws.com", "eventName": "DeleteCluster", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.14.67 Python/3.6.0 Windows/10 botocore/1.9.20", "requestParameters": { "clusterArn": "arn%3Aaws%3Akafka%3Aus-east-1%3A012345678901%3Acluster%2Fexamplecluster%2F01234567-abcd-0123-abcd-abcd0123efa-2" }, "responseElements": { "clusterArn": "arn:aws:kafka:us-east-1:012345678901:cluster/examplecluster/01234567-abcd-0123-abcd-abcd0123efa-2", "state": "DELETING" }, "requestID": "c6bfb3f7-abcd-0123-afa5-293519897703", "eventID": "8a7f1fcf-0123-abcd-9bdb-1ebf0663a75c", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "012345678901" } ] }

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag, der die kafka-cluster:CreateTopic Aktion demonstriert.

{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "ABCDEFGH1IJKLMN2P34Q5", "arn": "arn:aws:iam::111122223333:user/Admin", "accountId": "111122223333", "accessKeyId": "CDEFAB1C2UUUUU3AB4TT", "userName": "Admin" }, "eventTime": "2021-03-01T12:51:19Z", "eventSource": "kafka-cluster.amazonaws.com", "eventName": "CreateTopic", "awsRegion": "us-east-1", "sourceIPAddress": "198.51.100.0/24", "userAgent": "aws-msk-iam-auth/unknown-version/aws-internal/3 aws-sdk-java/1.11.970 Linux/4.14.214-160.339.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/25.272-b10 java/1.8.0_272 scala/2.12.8 vendor/Red_Hat,_Inc.", "requestParameters": { "kafkaAPI": "CreateTopics", "resourceARN": "arn:aws:kafka:us-east-1:111122223333:topic/IamAuthCluster/3ebafd8e-dae9-440d-85db-4ef52679674d-1/Topic9" }, "responseElements": null, "requestID": "e7c5e49f-6aac-4c9a-a1d1-c2c46599f5e4", "eventID": "be1f93fd-4f14-4634-ab02-b5a79cb833d2", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }