ログ記録 - Amazon Managed Streaming for Apache Kafka

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ログ記録

Apache Kafka ブローカーログは、Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehose の 1 つ以上の送信先タイプに配信できます。を使用して Amazon MSKAPIコールを記録することもできます AWS CloudTrail。

ブローカーログ

ブローカーログを使用すると、Apache Kafka アプリケーションのトラブルシューティングやMSK、クラスターとの通信の分析を行うことができます。ロググループ、S3 バケット、Firehose 配信ストリームの 1 つ以上のタイプの送信先リソースに INFOレベルのブローカー CloudWatch ログを配信するように、新規または既存のMSKクラスターを設定できます。Firehose を通じて、配信ストリームから OpenSearch サービスにログデータを配信できます。ブローカーログをクラスターに配信するようにクラスターを設定する前に、宛先リソースを作成する必要があります。これらの送信先リソースがまだ存在しない場合、Amazon MSKはそれらの送信先リソースを作成しません。これらの 3 種類の宛先リソースとその作成方法については、次のドキュメントを参照してください。

必要なアクセス許可

Amazon MSKブローカーログの送信先を設定するには、Amazon MSKアクションに使用する IAM ID に、AWS マネージドポリシー: mazonMSKFullアクセスポリシーで説明されているアクセス許可が必要です。

ブローカーログを S3 バケットにストリーミングするには、s3:PutBucketPolicy アクセス許可も必要です。S3 バケットポリシーについては、「Amazon S3 ユーザーガイド」の「S3 バケットポリシーを追加する方法」を参照してください。IAM ポリシー全般の詳細については、「 ユーザーガイド」の「アクセス管理IAM」を参照してください。

で使用するために必要なKMSキーポリシー SSE-KMS バケット

カスタマー AWS KMSマネージドキーで マネージドキー (SSE-KMS) を使用して S3 バケットのサーバー側の暗号化を有効にした場合は、Amazon がバケットにブローカーファイルをMSK書き込めるように、キーのKMSキーポリシーに以下を追加します。

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

を使用したブローカーログの設定 AWS Management Console

新しいクラスターを作成する場合は、Monitoring (モニタリング) セクションで ブローカーログ配信 の見出しを探します。Amazon がブローカーログを配信MSKする送信先を指定できます。

既存のクラスターの場合は、クラスターのリストから当該クラスターを選択し、[プロパティ] タブを選択します。[ログ配信] セクションまで下にスクロールして、[編集] ボタンを選択します。Amazon がブローカーログを配信MSKする送信先を指定できます。

を使用したブローカーログの設定 AWS CLI

create-cluster または update-monitoring コマンドを使用する場合、オプションで logging-infoパラメータを指定し、次の例のようなJSON構造を渡すことができます。この ではJSON、3 つの送信先タイプはすべてオプションです。

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

API を使用したブローカーログの設定

CreateCluster または UpdateMonitoringオペレーションに渡す JSON でオプションのloggingInfo構造を指定できます。

注記

デフォルトでは、ブローカーログ記録が有効になっている場合、Amazon は指定された送信先にMSKINFOレベルのログを記録します。ただし、Apache Kafka 2.4.X 以降のユーザーは、ブローカーのログレベルを任意のlog4j ログレベルに動的に設定できます。ブローカーログレベルを動的に設定する方法については、KIP「-412: 動的アプリケーションログレベルをサポートするAPIように管理者を拡張する」を参照してください。ログレベルを DEBUGまたは に動的に設定する場合はTRACE、ログの送信先として Amazon S3 または Firehose を使用することをお勧めします。 CloudWatch Logs をログの送信先として使用し、ログ記録を動的に有効化DEBUGまたはTRACEレベル設定する場合、Amazon はログのサンプルを継続的に配信MSKすることがあります。これはブローカーのパフォーマンスに大きな影響を与える可能性があるため、INFO ログレベルが問題の根本原因を特定するのに十分なほど詳細でない場合にのみ使用する必要があります。

を使用したAPI通話のログ記録 AWS CloudTrail

注記

AWS CloudTrail ログは、 を使用するMSK場合にのみ Amazon で使用できますIAM アクセスコントロール

Amazon MSKは AWS CloudTrail、Amazon . CloudTrail captures のユーザー、ロール、または サービスによって実行されたアクションを記録する AWS サービスである と統合されていますMSK。 は をイベントとしてAPI呼び出します。キャプチャされた呼び出しには、Amazon MSKコンソールからの呼び出しと、Amazon MSKAPIオペレーションへのコード呼び出しが含まれます。また、トピックやグループの作成や変更などの Apache Kafka アクションもキャプチャします。

証跡を作成する場合は、Amazon の CloudTrail イベントなど、Amazon S3 バケットへのイベントの継続的な配信を有効にすることができますMSK。 Amazon S3 証跡を設定しない場合でも、 CloudTrail コンソールのイベント履歴 で最新のイベントを表示できます。で収集された情報を使用して CloudTrail、Amazon MSKまたは Apache Kafka アクションに対して行われたリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。

の設定と有効化の方法など CloudTrail、 の詳細については、AWS CloudTrail 「 ユーザーガイド」を参照してください。

の Amazon MSK情報 CloudTrail

CloudTrail アカウントを作成すると、 が Amazon Web Services アカウントで有効になります。MSK クラスターでサポートされているイベントアクティビティが発生すると、そのアクティビティは CloudTrail イベント履歴 の他の AWS サービスイベントとともにイベントに記録されます。AWS アカウントでの最近のイベントを表示、検索、ダウンロードできます。詳細については、「イベント履歴を使用した CloudTrailイベントの表示」を参照してください。

Amazon のイベントなど、Amazon Web Services アカウントのイベントの継続的な記録についてはMSK、証跡を作成します。証跡により CloudTrail 、 はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成すると、すべての リージョンに証跡が適用されます。証跡は、 AWS パーティションのすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、他の Amazon サービスを設定して、 CloudTrail ログで収集されたイベントデータをさらに分析し、それに基づく対応を行うことができます。詳細については、次を参照してください:

Amazon MSK は、すべての Amazon MSKオペレーションをイベントとして CloudTrail ログファイルに記録します。さらに、次の Apache Kafka アクションをログに記録します。

  • kafka-cluster:DescribeClusterDynamicConfiguration

  • kafka-cluster:AlterClusterDynamicConfiguration

  • kafka-cluster:CreateTopic

  • kafka-cluster:DescribeTopicDynamicConfiguration

  • kafka-cluster:AlterTopic

  • kafka-cluster:AlterTopicDynamicConfiguration

  • kafka-cluster:DeleteTopic

各イベントまたはログエントリには、誰がリクエストを生成したかという情報が含まれます。アイデンティティ情報は、以下を判別するのに役立ちます:

  • リクエストがルートユーザーまたは AWS Identity and Access Management (IAM) ユーザーの認証情報を使用して行われたかどうか。

  • リクエストがロールまたはフェデレーションユーザーのテンポラリなセキュリティ認証情報を使用して行われたかどうか。

  • リクエストが別の AWS サービスによって行われたかどうか。

詳細については、「 CloudTrail userIdentity要素」を参照してください。

例: Amazon MSK ログファイルエントリ

証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できるようにする設定です。 CloudTrail ログファイルには 1 つ以上のログエントリが含まれます。イベントは任意ソースからの単一リクエストを表し、リクエストされたアクション、アクションの日時、リクエストパラメータなどの情報を含みます。 CloudTrail ログファイルは、パブリックAPIコールと Apache Kafka アクションの順序付けられたスタックトレースではないため、特定の順序では表示されません。

次の例は、 DescribeClusterおよび DeleteCluster Amazon MSKアクションを示す CloudTrail ログエントリを示しています。

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

次の例は、 kafka-cluster:CreateTopicアクションを示す CloudTrail ログエントリを示しています。

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