Registrazione - Amazon Managed Streaming per Apache Kafka

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione

Puoi inviare i log del broker Apache Kafka a uno o più dei seguenti tipi di destinazione: AmazonCloudWatchRegistri, Amazon S3, Amazon Kinesis Data Firehose. Puoi anche registrare le chiamate API Amazon MSK conAWS CloudTrail.

Log di broker

I log dei broker consentono di risolvere i problemi delle applicazioni Apache Kafka e di analizzarne le comunicazioni con il cluster MSK. È possibile configurare il cluster MSK nuovo o esistente per fornire i log dei broker a livello di informazioni a uno o più dei seguenti tipi di risorse di destinazione: aCloudWatchgruppo di log, un bucket S3, un flusso di distribuzione di Kinesis Data Firehose. Tramite Kinesis Data Firehose, puoi quindi inviare i dati di registro dal tuo flusso di distribuzione aOpenSearchServizio. È necessario creare una risorsa di destinazione prima di configurare il cluster per inviargli i log del broker. Amazon MSK non crea queste risorse di destinazione per te se non esistono già. Per informazioni su questi tre tipi di risorse di destinazione e su come crearle, consultare la documentazione seguente:

Nota

Amazon MSK non supporta la consegna dei log dei broker a Kinesis Data Firehose nelle regioni Asia Pacifico (Hyderabad), Asia Pacifico (Melbourne), Asia Pacifico (Osaka) ed Europa (Zurigo).

Autorizzazioni richieste

Per configurare una destinazione per i log del broker Amazon MSK, l'identità IAM che utilizzi per le azioni Amazon MSK deve avere le autorizzazioni descritte nelAWSpolitica gestita: AmazonMSKFullAccesspolitica.

Per trasmettere i log del broker su un bucket S3, è necessario anche ils3:PutBucketPolicypermesso. Per informazioni sulle policy dei bucket S3, consultaCome posso aggiungere una politica S3 Bucket?nella Guida per l'utente di Amazon S3. Per informazioni sulle politiche IAM in generale, consultaGestione degli accessinella Guida per l'utente IAM.

Politica delle chiavi KMS richiesta per l'uso con i bucket SSE-KMS

Se hai abilitato la crittografia lato server per il tuo bucket S3 utilizzandoAWS KMS-chiavi gestite (SSE-KMS) con una chiave gestita dal cliente, aggiungi quanto segue alla policy chiave per la tua chiave KMS in modo che Amazon MSK possa scrivere i file del broker nel bucket.

{ "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": "*" }

Configurazione dei log del broker mediante la AWS Management Console

Se stai creando un nuovo cluster, cerca l'intestazione Broker log delivery (Recapito del log del broker) nella sezione Monitoring (Monitoraggio) . Puoi specificare le destinazioni a cui desideri che Amazon MSK invii i log del tuo broker.

Per un cluster esistente, scegli il cluster dall'elenco dei cluster, quindi scegli ilProprietàlinguetta. Scorri verso il basso fino alConsegna dei registrisezione e poi scegli la suaModificapulsante. Puoi specificare le destinazioni a cui desideri che Amazon MSK invii i log del tuo broker.

Configurazione dei log del broker mediante la AWS CLI

Quando utilizzi i comandi create-cluster o update-monitoring, puoi specificare facoltativamente il parametro logging-info e passarlo a una struttura JSON come nell'esempio seguente. In questo JSON, tutti e tre i tipi di destinazione sono facoltativi.

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

Configurazione dei log del broker mediante l'API

È possibile specificare l'opzioneloggingInfostruttura nel JSON che passi alCreateClusteroUpdateMonitoringoperazioni.

Nota

Per impostazione predefinita, quando la registrazione del broker è abilitata, Amazon MSK registraINFOregistri di livello per le destinazioni specificate. Tuttavia, gli utenti di Apache Kafka 2.4.X e versioni successive possono impostare dinamicamente il livello di registro del broker su uno qualsiasi deilivelli di registro log4j. Per informazioni sull'impostazione dinamica del livello di registro del broker, consultaKIP-412: Estendi l'API di amministrazione per supportare i livelli di registro dinamici delle applicazioni. Se si imposta dinamicamente il livello di registro suDEBUGoTRACE, consigliamo di utilizzare Amazon S3 o Kinesis Data Firehose come destinazione del registro. Se si utilizzaCloudWatchEsegue i log come destinazione del registro e l'utente abilita dinamicamenteDEBUGoTRACEregistrazione a livello, Amazon MSK può fornire continuamente un campione di log. Ciò può influire in modo significativo sulle prestazioni del broker e deve essere utilizzato solo quandoINFOil livello di registro non è sufficientemente dettagliato per determinare la causa principale di un problema.

Registrazione delle chiamate API con AWS CloudTrail

Nota

AWS CloudTraili log sono disponibili per Amazon MSK solo quando usiControllo degli accessi IAM.

Amazon MSK è integrato conAWS CloudTrail, un servizio che fornisce una registrazione delle azioni intraprese da un utente, da un ruolo o da unAWSservizio in Amazon MSK. CloudTrailacquisisce le chiamate API come eventi. Le chiamate acquisite includono chiamate dalla console Amazon MSK e chiamate in codice alle operazioni dell'API Amazon MSK. Inoltre, cattura le azioni di Apache Kafka, come la creazione e la modifica di argomenti e gruppi.

Se crei un percorso, puoi abilitare la consegna continua diCloudTraileventi in un bucket Amazon S3, inclusi eventi per Amazon MSK. Se non configuri un trail, è comunque possibile visualizzare gli eventi più recenti nella console di CloudTrail in Event history (Cronologia eventi). Utilizzo delle informazioni raccolte daCloudTrail, puoi determinare la richiesta effettuata ad Amazon MSK o l'azione Apache Kafka, l'indirizzo IP da cui è stata effettuata la richiesta, chi ha effettuato la richiesta, quando è stata effettuata e ulteriori dettagli.

Per ulteriori informazioni su CloudTrail, incluse le modalità di configurazione e abilitazione, consulta la Guida per l'utente di AWS CloudTrail.

Informazioni su Amazon MSK inCloudTrail

CloudTrailè abilitato sul tuo account Amazon Web Services quando crei l'account. Quando l'attività degli eventi supportata si verifica in un cluster MSK, tale attività viene registrata in unCloudTrailevento insieme ad altriAWSeventi di servizio inCronologia degli eventi. Puoi visualizzare, cercare e scaricare gli eventi recenti nell'account Amazon Web Services. Per ulteriori informazioni, consulta Visualizzazione di eventi mediante la cronologia eventi di CloudTrail.

Per una registrazione continua degli eventi nel tuo account Amazon Web Services, inclusi gli eventi per Amazon MSK, crea un percorso. UNpistaabilitaCloudTrailper inviare file di registro a un bucket Amazon S3. Per impostazione predefinita, quando si crea un trail nella console, il trail sarà valido in tutte le Regioni . Il trail registra gli eventi di tutte le Regioni nella partizione AWS e distribuisce i file di log nel bucket Amazon S3 specificato. Inoltre, puoi configurare altri servizi Amazon per analizzare ulteriormente e agire in base ai dati degli eventi raccolti inCloudTrailtronchi. Per ulteriori informazioni, consulta gli argomenti seguenti:

Amazon MSK registra tuttoOperazioni Amazon MSKcome eventi inCloudTrailfile di registro. Inoltre, registra le seguenti azioni di Apache Kafka.

  • grappolo kafka:DescribeClusterDynamicConfiguration

  • grappolo kafka:AlterClusterDynamicConfiguration

  • grappolo kafka:CreateTopic

  • grappolo kafka:DescribeTopicDynamicConfiguration

  • grappolo kafka:AlterTopic

  • grappolo kafka:AlterTopicDynamicConfiguration

  • grappolo kafka:DeleteTopic

Ogni evento o voce di log contiene informazioni sull'utente che ha generato la richiesta. Le informazioni di identità consentono di determinare quanto segue:

  • Se la richiesta è stata effettuata con le credenziali utente root o AWS Identity and Access Management (utente IAM).

  • Se la richiesta è stata effettuata con le credenziali di sicurezza temporanee per un ruolo o un utente federato.

  • Se la richiesta è stata effettuata da un altro servizio AWS.

Per ulteriori informazioni, consulta Elemento CloudTrail userIdentity.

Esempio: voci dei file di registro Amazon MSK

Un percorso è una configurazione che consente la distribuzione di eventi come i file di log in un bucket Amazon S3 specificato. I file di log di CloudTrail contengono una o più voci di log. Un evento rappresenta una singola richiesta da un'fonte e include informazioni sul operazione richiesta, data e ora dell'operazione, parametri richiesti e così via. CloudTraili file di registro non sono una traccia ordinata dello stack delle chiamate API pubbliche e delle azioni di Apache Kafka, quindi non vengono visualizzati in un ordine specifico.

L'esempio seguente mostraCloudTrailvoci di registro che dimostrano ilDescribeClustereDeleteClusterAzioni Amazon MSK.

{ "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" } ] }

L'esempio seguente mostra una voce di log di CloudTrail che illustra l'operazione kafka-cluster:CreateTopic.

{ "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" }