

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

# 액세스 로깅
<a name="access-logging"></a>

MediaPackage는 MediaPackage 채널 또는 패키징 그룹으로 전송된 요청에 대한 자세한 정보를 캡처하는 액세스 로그를 제공합니다. MediaPackage는 채널의 입력 엔드포인트로 전송된 요청에 대한 *수신 액세스 로그*와 채널의 엔드포인트 또는 패키징 그룹 자산으로 전송된 요청에 대한 *송신 액세스 로그*를 생성합니다. 각 로그에는 요청을 받은 시간, 클라이언트의 IP 주소, 지연 시간, 요청 경로 및 서버 응답과 같은 정보가 포함되어 있습니다. 이러한 액세스 로그를 사용하여 서비스 성능을 분석하고 문제를 해결할 수 있습니다. 또한 고객층을 파악하고 MediaPackage 결제 요금을 확인할 수 있습니다.

 액세스 로그는 MediaPackage의 옵션 기능으로, 기본적으로 비활성화됩니다. 액세스 로깅을 활성화하면 MediaPackage에서 로그를 캡처하여 액세스 로깅을 생성하거나 관리할 때 지정하는 CloudWatch 로그 그룹에 저장합니다. 일반적인 CloudWatch Logs 요금이 적용됩니다.

**Topics**
+ [액세스 로그를 CloudWatch에 게시하기 위한 권한](#permissions)
+ [액세스 로그 활성화](#enable-access-logging)
+ [액세스 로그 비활성화](#disable-access-logging)
+ [액세스 로그 형식](#access-log-format)
+ [액세스 로그 읽기](#read-access-logs)

## 액세스 로그를 CloudWatch에 게시하기 위한 권한
<a name="permissions"></a>

액세스 로깅을 활성화하면 MediaPackage는 AWS 계정에 IAM 서비스 연결 역할 `AWSServiceRoleForMediaPackage`를 생성합니다. 이 역할을 통해 MediaPackage가 액세스 로그를 CloudWatch에 게시할 수 있습니다. MediaPackage가 서비스 연결 역할을 사용하는 방법에 대한 자세한 내용은 [MediaPackage에 서비스 연결 역할 사용](using-service-linked-roles.md) 단원을 참조하십시오.

## 액세스 로그 활성화
<a name="enable-access-logging"></a>

 AWS Management Console 또는를 사용하여 액세스 로그를 활성화할 수 있습니다 AWS CLI.

**콘솔을 사용하여 기존 채널에 대한 액세스 로그를 활성화하려면**

1. [https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)에서 MediaPackage 콘솔을 엽니다.

1. 채널을 선택합니다.

1. **액세스 로그 구성** 섹션에서 다음을 수행합니다.

   1. **수신 액세스 로그 활성화**나 **송신 액세스 로그 활성화** 또는 둘 다를 선택합니다.

   1. 사용자 지정 CloudWatch **로그 그룹 이름**을 지정할 수 있습니다. 비워 두면 기본 그룹이 사용됩니다.

**콘솔을 사용하여 기존 패키징 그룹에 대한 액세스 로그를 활성화하려면**

1. [https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)에서 MediaPackage 콘솔을 엽니다.

1. 탐색 섹션에서 **패키징 그룹**을 선택합니다.

1. 사용 중인 패키징 그룹을 선택합니다.

   1. 탐색 모음에서 **편집**을 선택합니다.

   1. **액세스 로깅** 섹션에서 **송신 액세스 로그 활성화**를 선택합니다.

   1. 사용자 지정 CloudWatch **로그 그룹 이름**을 지정할 수 있습니다. 비워 두면 기본 그룹이 사용됩니다.

1. **Save changes**(변경 사항 저장)를 선택합니다.

**를 사용하여 채널에 대한 액세스 로그를 활성화하려면 AWS CLI**  
[configure-logs](https://docs.aws.amazon.com/cli/latest/reference/mediapackage/configure-logs.html) 명령과 함께 `--ingress-access-logs` 파라미터나 `--egress-access-logs` 파라미터 또는 둘 다를 사용하여 액세스 로깅을 활성화합니다. `--ingress-access-logs` 및 `--egress-access-logs` 파라미터에 CloudWatch 로그 그룹 이름을 포함시킬 수 있습니다. 로그 그룹 이름을 지정하지 않으면 MediaPackage 기본 로그 그룹이 사용됩니다. 수신 로그의 기본 로그 그룹은 `/aws/MediaPackage/IngressAccessLogs`이고 송신 로그의 기본 로그 그룹은 `/aws/MediaPackage/EgressAccessLogs`입니다.

다음 명령을 사용하면 기본 로그 그룹을 사용하여 수신 로그와 액세스 로그를 모두 활성화할 수 있습니다.

```
aws mediapackage configure-logs --id channel-name --ingress-access-logs {} --egress-access-logs {}
```

이 명령은 반환 값이 없습니다.

**를 사용하여 패키징 그룹에 대한 액세스 로그를 활성화하려면 AWS CLI**  
[configure-logs](https://docs.aws.amazon.com/cli/latest/reference/mediapackage-vod/configure-logs.html) 명령과 함께 `--egress-access-logs` 파라미터를 사용하여 액세스 로깅을 활성화합니다. `--egress-access-logs` 파라미터에 CloudWatch 로그 그룹 이름을 포함시킬 수 있습니다. 로그 그룹 이름을 지정하지 않으면 MediaPackage 기본 로그 그룹이 사용됩니다. 수신 로그의 기본 로그 그룹은 `/aws/MediaPackage/IngressAccessLogs`이고 송신 로그의 기본 로그 그룹은 `/aws/MediaPackage/EgressAccessLogs`입니다.

다음 명령을 사용하면 기본 로그 그룹을 사용하여 송신 로그를 활성화할 수 있습니다.

```
aws mediapackage configure-logs --id package-name --egress-access-logs {}
```

이 명령은 반환 값이 없습니다.

## 액세스 로그 비활성화
<a name="disable-access-logging"></a>

언제든지 MediaPackage 채널 또는 패키징 그룹에 대한 액세스 로그를 비활성화할 수 있습니다.

**콘솔을 이용하여 액세스 로그를 비활성화하려면**

1. [https://console.aws.amazon.com/mediapackage/](https://console.aws.amazon.com/mediapackage/)에서 MediaPackage 콘솔을 엽니다.

   사용 중인 채널 또는 패키지 그룹을 선택합니다.

1. **편집**을 선택합니다.

1. **액세스 로깅** 섹션에서 **수신 액세스 로깅**이나 **송신 액세스 로깅** 또는 둘 다를 선택 취소합니다.

1. **Save changes**(변경 사항 저장)를 선택합니다.

**를 사용하여 채널에 대한 액세스 로깅을 비활성화하려면 AWS CLI**  
`configure-logs`를 사용하여 액세스 로깅을 비활성화합니다. `configure-logs` 명령에 액세스 로그 파라미터 중 하나 이상이 선언되어 있지 않으면 해당 액세스 로그가 비활성화됩니다. 예를 들어 다음 명령에서는 채널에 대한 송신 액세스 로그는 활성화되고 수신 액세스 로그는 비활성화됩니다.

```
aws mediapackage configure-logs --id channel-name --egress-access-logs {}
```

이 명령은 반환 값이 없습니다.

**를 사용하여 패키징 그룹에 대한 액세스 로깅을 비활성화하려면 AWS CLI**  
`configure-logs`를 사용하여 액세스 로깅을 비활성화합니다. `configure-logs` 명령에 액세스 로그 파라미터 중 하나 이상이 선언되어 있지 않으면 해당 액세스 로그가 비활성화됩니다. 예를 들어, 다음 명령에서는 `configure-logs`에 `--egress-access-logs`가 포함되어 있지 않으므로 송신 로그가 비활성화됩니다.

```
aws mediapackage configure-logs --id package-group-name
```

이 명령은 반환 값이 없습니다.

## 액세스 로그 형식
<a name="access-log-format"></a>

액세스 로그 파일은 일련의 JSON 형식 로그 레코드로 구성되며, 각 로그 레코드마다 한 요청이 표시됩니다. 로그 안의 필드 순서는 다를 수 있습니다. 다음은 채널 송신 액세스 로그 예제입니다.

```
{
    "timestamp": "2020-07-13T18:59:56.293656Z",
    "clientIp": "192.0.2.0/24",
    "processingTime": 0.445,
    "statusCode": "200",
    "receivedBytes": 468,
    "sentBytes": 2587370,
    "method": "GET",
    "request": "https://aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com:443/out/v1/75ee4f20e5df43e5821e5cb17ea19238/hls_7_145095.ts?m=1538005779",
    "protocol": "HTTP/1.1",
    "userAgent": "sabr/3.0 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Safari/528.17",
    "account": "111122223333",
    "channelId": "my_channel",
    "channelArn": "arn:aws:mediapackage:us-west-2:111122223333:channels/ExampleChannelID",
    "domainName": "aaabbbcccdddee.mediapackage.us-east-1.amazonaws.com",
    "requestId": "aaaAAA111bbbBBB222cccCCC333dddDDD",
    "endpointId": "my_endpoint",
    "endpointArn": "arn:aws:mediapackage:us-west-2:111122223333:origin_endpoints/ExampleEndpointID"
}
```

다음은 로그 레코드 필드에 대해 순서대로 설명하는 목록입니다.

*timestamp*  
요청이 수신된 시간입니다. 이 값은 `ISO-8601` 날짜 시간이며 요청을 처리하는 호스트의 시스템 클록을 기준으로 합니다.

*clientIp*  
요청을 하는 클라이언트의 IP 주소입니다.

*processingTime*  
MediaPackage가 요청을 처리하는 데 소비한 시간(초)입니다. 이 값은 요청의 마지막 바이트가 수신된 시간부터 응답의 첫 바이트가 전송된 시간까지 측정됩니다.

*statusCode*  
응답의 숫자 HTTP 상태 코드.

*receivedBytes*  
MediaPackage 서버가 수신한 요청 본문의 크기(바이트)입니다.

*sentBytes*  
MediaPackage 서버가 송신한 응답 본문의 크기(바이트)입니다. 이 값은 서버 응답에 포함되는 `Content-Length` 헤더의 값과 동일한 경우가 많습니다.

*method*  
요청에 사용된 HTTP 요청 메서드입니다(DELETE, GET, HEAD, OPTIONS, PATCH, POST 또는 PUT).

*request*  
요청 URL입니다.

*protocol*  
요청에 사용된 프로토콜의 유형입니다(예: HTTP).

*userAgent*  
요청을 보낸 클라이언트를 식별하는 사용자 에이전트 문자열입니다(큰 따옴표로 묶임). 이 문자열은 하나 이상의 제품 식별자, 제품/버전으로 이루어져 있습니다. 문자열이 8 KB보다 길면 잘리게 됩니다.

*account*  
요청에 사용된 AWS 계정의 계정 ID입니다.

*channelId*  
요청을 받은 채널의 ID입니다.

*channelArn*  
요청을 받은 채널의 Amazon 리소스 이름(ARN)입니다.

*domainName*  
TLS 핸드셰이크 중에 클라이언트가 제공한 서버 이름 표시(SNI) 도메인입니다(큰 따옴표로 묶임). 클라이언트가 SNI를 지원하지 않거나, 도메인이 인증서와 일치하지 않으면 이 값이 `-`로 설정되고 클라이언트에 기본 인증서가 제공됩니다.

*requestId*  
각 요청을 고유하게 식별하기 위해 MediaPackage에서 생성한 문자열입니다.

*endpointId*  
요청을 받은 엔드포인트의 ID입니다.

*endpointArn*  
요청을 받은 엔드포인트의 Amazon 리소스 이름(ARN)입니다.

로그 안의 필드 순서는 다를 수 있습니다.

## 액세스 로그 읽기
<a name="read-access-logs"></a>

MediaPackage는 액세스 로그를 Amazon CloudWatch Logs에 씁니다. 일반적인 CloudWatch Logs 요금이 적용됩니다. CloudWatch 로그 인사이트를 사용하여 액세스 로그를 읽습니다. CloudWatch 로그 인사이트 사용 방법에 대한 자세한 내용은 *AWS CloudWatch Logs 사용 설명서*에서 [CloudWatch 로그 인사이트를 사용하여 로그 데이터 분석](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)을 참조하십시오.

**참고**  
액세스 로그가 CloudWatch에 나타나는 데 몇 분 정도 걸릴 수 있습니다. 로그가 나타나지 않으면 몇 분 정도 기다렸다가 다시 시도하십시오.

### 예시
<a name="query-examples"></a>

 이 섹션에는 MediaPackage 디버그 로그 데이터를 읽는 데 사용할 수 있는 예제 쿼리가 포함되어 있습니다.

**Example 채널의 HTTP 상태 코드 응답을 표시합니다.**  
 이 쿼리를 사용하여 채널의 HTTP 상태 코드별로 응답을 표시합니다. 이를 사용하여 문제 해결에 도움이 되는 HTTP 오류 코드 응답을 확인할 수 있습니다.  

```
fields @timestamp, @message
| filter channelId like 'my-channel'
| stats count() by statusCode
```

**Example 채널의 엔드포인트당 요청 수를 가져옵니다.**  

```
fields @timestamp, @message
| filter channelId like 'my-channel'
| stats count() by endpointId
```

**Example 자산별 상태 코드를 표시합니다.**  

```
fields @timestamp, @message
| filter assetArnlike 'my-asset-id'
| stats count() by statusCode
```

**Example 시간 경과에 따른 패키징 구성의 P99 응답 시간을 가져옵니다.**  

```
fields @timestamp, @message
| filter packagingConfigArn like 'my-dash-config'
| stats pct(processingTime, 99) by bin(5m)
```