

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

# Amazon MSK ログ記録
<a name="msk-logging"></a>

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

**注記**  
ブローカーログは、MSK Standard ブローカーと Express ブローカーの両方で使用できます。

## ブローカーログ
<a name="broker-logs"></a>

ブローカーログを使用すると、Apache Kafka アプリケーションのトラブルシューティングを行い、MSK クラスターとの通信を分析できます。新規または既存の MSK クラスターを設定して、INFO レベルのブローカーログを CloudWatch ロググループ、S3 バケット、Firehose 配信ストリームの 1 つまたは複数の配信先リソースのタイプに配信できます。その後、Firehose を使用して、配信ストリームから OpenSearch Service にログデータを配信できます。

ブローカーログをクラスターに配信するようにクラスターを設定する前に、宛先リソースを作成する必要があります。Amazon MSK は、これらの宛先リソースがまだ存在しない場合、それらを作成しません。これらの 3 種類の宛先リソースとその作成方法については、次のドキュメントを参照してください。
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)

### 必要なアクセス許可
<a name="broker-logs-perms"></a>

Amazon MSK ブローカーログの送信先を設定するには、Amazon MSK アクションに使用する IAM ID に、[AWS マネージドポリシー: AmazonMSKFullAccess](security-iam-awsmanpol-AmazonMSKFullAccess.md) ポリシーに記載されているアクセス許可が必要です。

ブローカーログを S3 バケットにストリーミングするには、`s3:PutBucketPolicy` アクセス許可も必要です。S3 バケットポリシーについては、「Amazon S3 ユーザーガイド」の「[S3 バケットポリシーを追加する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)」を参照してください。一般的な IAM ポリシーの詳細については、 「IAM ユーザーガイド」の[アクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)を参照してください。

### SSE-KMS バケットで使用するために必要な KMS キーポリシー
<a name="sse-kms-buckets"></a>

カスタマーマネージドキーで マネージドキー (SSE-KMS) AWS 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 マネジメントコンソール
<a name="broker-logs-console"></a>

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

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

### を使用してブローカーログを設定する AWS CLI
<a name="broker-logs-cli"></a>

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

**注記**  
ログ配信を設定するには、Firehose ストリームで `LogDeliveryEnabled` タグを`true`に設定する必要があります。が CloudWatch Logs 用に AWS 作成するサービスにリンクされたロールは、このタグを使用して、すべての Firehose 配信ストリームにアクセス許可を付与します。このタグを削除すると、サービスにリンクされたロールは Firehose ストリームにログを配信できなくなります。サービスにリンクされたロールに含まれるアクセス許可を示す IAM ポリシーの例については、*Amazon CloudWatch ユーザーガイド*の[「リソースアクセス許可に使用される IAM ロール」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-infrastructure-V2-Firehose.html)を参照してください。

```
{
  "BrokerLogs": {
    "S3": {
      "Bucket": "amzn-s3-demo-bucket",
      "Prefix": "ExamplePrefix",
      "Enabled": true
    },
    "Firehose": {
      "DeliveryStream": "ExampleDeliveryStreamName",
      "Enabled": true
    },
    "CloudWatchLogs": {
      "Enabled": true,
      "LogGroup": "ExampleLogGroupName"
    }
  }
}
```

### API を使用してブローカーログを設定する
<a name="broker-logs-api"></a>

[CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)または[UpdateMonitoring](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-monitoring.html#UpdateMonitoring)オペレーションに渡す JSON でオプションの `loggingInfo` 構造を指定できます。

**注記**  
デフォルトでは、ブローカーロギングが有効になっている場合、Amazon MSK は `INFO` レベルのログを指定された宛先に記録します。ただし、スタンダードブローカーの場合、Apache Kafka 2.4.X 以降のユーザーはブローカーログレベルを任意の [log4j ログレベル](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html)に動的に設定できます。ブローカーのログレベルを動的に設定する方法については、[KIP-412: 動的なアプリケーションログレベルをサポートするように管理者 API を拡張する](https://cwiki.apache.org/confluence/display/KAFKA/KIP-412%3A+Extend+Admin+API+to+support+dynamic+application+log+levels)を参照してください。ログレベルを `DEBUG` または `TRACE` に動的に設定する場合は、ログの送信先として Amazon S3 または Firehose を使用することをお勧めします。CloudWatch Logs をログの宛先として使用し、`DEBUG` または `TRACE` レベルのロギングを動的に有効にした場合、Amazon MSK はログのサンプルを継続的に配信する場合があります。これはブローカーのパフォーマンスに大きな影響を与える可能性があるため、`INFO` ログレベルが問題の根本原因を特定するのに十分なほど詳細でない場合にのみ使用する必要があります。

# を使用した API コールのログ記録 AWS CloudTrail
<a name="logging-API-using-cloudtrail"></a>



**注記**  
AWS CloudTrail ログは、 を使用する場合にのみ Amazon MSK で使用できます[IAM アクセスコントロール](iam-access-control.md)。

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

追跡を作成すると、Amazon MSK のイベントを含め、CloudTrail イベントを Amazon S3 バケットに継続的に配信できるようになります。追跡を設定しない場合でも、CloudTrail コンソールの **Event history ** (イベント履歴) で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、Amazon MSK または Apache Kafka アクションに対して行われた要求、要求が行われた IP アドレス、要求を行った人、要求が行われた日時、および追加の詳細を判別できます。

CloudTrail の設定や有効化の方法など、CloudTrail の詳細については、「[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)」を参照してください。

## CloudTrail の Amazon MSK 情報
<a name="msk-info-in-cloudtrail"></a>

アカウントを作成すると、Amazon Web Services アカウントで CloudTrail が有効になります。MSK クラスターでサポートされているイベントアクティビティが発生すると、そのアクティビティはイベント**履歴**の他の AWS サービスイベントとともに CloudTrail イベントに記録されます。AWS アカウントでの最近のイベントを表示、検索、ダウンロードできます。詳細については、[CloudTrail イベント履歴を使用したイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)を参照してください。

Amazon MSK のイベントを含む、Amazon Web Services アカウントのイベントの継続的なレコードについては、追跡を作成してください。*追跡*により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成すると、すべての リージョンに証跡が適用されます。追跡は AWS パーティション内のすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail ログに収集されたイベントデータをさらに分析して処理するように他の Amazon サービスを設定できます。詳細については、次を参照してください: 
+ [証跡の作成のための概要](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail がサポートするサービスと統合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail 用 Amazon SNS 通知の構成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [複数のリージョンから CloudTrail ログファイルを受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)および[複数のアカウントから CloudTrail ログファイルを受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Amazon MSK は、すべての [Amazon MSK オペレーション](https://docs.aws.amazon.com/MSK/2.0/APIReference/operations.html)をイベントとして 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 要素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)」を参照してください。

## 例 : Amazon MSK ログ ファイルエントリ
<a name="understanding-msk-entries"></a>

「トレイル」は、指定した Amazon S3 バケットにイベントをログファイルとして配信するように設定できます。CloudTrail のログファイルは、単一か複数のログエントリを含みます。イベントは、任意のソースからの単一の要求を表し、要求されたアクション、アクションの日時、要求パラメーターなどに関する情報が含まれます。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"
}
```