

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon MSK 로깅
<a name="msk-logging"></a>

Apache Kafka 브로커 로그를 Amazon CloudWatch Logs, Amazon S3, Amazon Data Firehose 등의 대상 유형 중 하나 이상에 전달할 수 있습니다. 를 사용하여 Amazon MSK API 호출을 로깅할 수도 있습니다 AWS CloudTrail.

**참고**  
브로커 로그는 MSK Standard 브로커와 Express 브로커 모두에서 사용할 수 있습니다.

## 브로커 로그
<a name="broker-logs"></a>

브로커 로그를 통해 Apache Kafka 애플리케이션의 문제를 해결하고 MSK 클러스터와의 통신을 분석할 수 있습니다. INFO 수준 브로커 로그를 CloudWatch 로그 그룹, S3 버킷, Firehose 전송 스트림 등의 대상 리소스 유형 중 하나 이상에 전송하도록 신규 또는 기존 MSK 클러스터를 구성할 수 있습니다. 그런 다음 Firehose를 통해 전송 스트림의 로그 데이터를 OpenSearch Service로 전송할 수 있습니다.

클러스터에 브로커 로그를 전달하도록 클러스터를 구성하기 전에 대상 리소스를 생성해야 합니다. Amazon MSK는 이러한 대상 리소스가 아직 존재하지 않는 경우 이를 생성하지 않습니다. 이러한 세 가지 유형의 대상 리소스와 이를 생성하는 방법에 대한 자세한 내용은 다음 설명서를 참조하십시오.
+ [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>

고객 관리형 키와 함께 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
<a name="broker-logs-console"></a>

새 클러스터를 생성하는 경우 **모니터링** 섹션에서 **브로커 로그 전달** 제목을 찾습니다. Amazon MSK에서 브로커 로그를 전달할 대상을 지정할 수 있습니다.

기존 클러스터의 경우 클러스터 목록에서 클러스터를 선택한 다음 **속성** 탭을 선택합니다. **모니터링** 섹션까지 아래로 스크롤한 다음 **편집** 버튼을 선택합니다. Amazon MSK에서 브로커 로그를 전달할 대상을 지정할 수 있습니다.

### 를 사용하여 브로커 로그 구성 AWS CLI
<a name="broker-logs-cli"></a>

`create-cluster` 또는 `update-monitoring` 명령을 사용하면 선택적으로 `logging-info` 파라미터를 지정하고 다음 예제와 같이 JSON 구조를 전달할 수 있습니다. 이 JSON에서 세 가지 대상 유형은 모두 선택 사항입니다.

**참고**  
로그 전송을 설정하려면 Firehose 스트림에서 `LogDeliveryEnabled` 태그를 `true`로 설정해야 합니다. CloudWatch 로그에 대해가 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` 로그 수준이 문제의 근본 원인을 파악하기에 충분히 상세하지 않은 경우에만 사용해야 합니다.