액세스 로깅 - AWS Elemental MediaPackage

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

액세스 로깅

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

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

액세스 로그를 CloudWatch에 게시하기 위한 권한

액세스 로깅을 활성화하면 MediaPackage가 AWS 계정에 IAM 서비스 연결 역할인 AWSServiceRoleForMediaPackage를 생성합니다. 이 역할을 통해 MediaPackage가 액세스 로그를 CloudWatch에 게시할 수 있습니다. MediaPackage가 서비스 연결 역할을 사용하는 방법에 대한 자세한 내용은 MediaPackage에 서비스 연결 역할 사용 단원을 참조하세요.

액세스 로그 활성화

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

콘솔을 사용하여 기존 채널에 대한 액세스 로그를 활성화하려면
  1. https://console.aws.amazon.com/mediapackage/에서 MediaPackage 콘솔을 엽니다.

  2. 채널을 선택합니다.

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

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

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

콘솔을 사용하여 기존 패키징 그룹에 대한 액세스 로그를 활성화하려면
  1. https://console.aws.amazon.com/mediapackage/에서 MediaPackage 콘솔을 엽니다.

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

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

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

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

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

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

AWS CLI를 사용하여 채널에 대한 액세스 로그를 활성화하려면

configure-logs 명령과 함께 --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 명령과 함께 --egress-access-logs 파라미터를 사용하여 액세스 로깅을 활성화합니다. --egress-access-logs 파라미터에 CloudWatch 로그 그룹 이름을 포함시킬 수 있습니다. 로그 그룹 이름을 지정하지 않으면 MediaPackage 기본 로그 그룹이 사용됩니다. 수신 로그의 기본 로그 그룹은 /aws/MediaPackage/IngressAccessLogs이고 송신 로그의 기본 로그 그룹은 /aws/MediaPackage/EgressAccessLogs입니다.

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

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

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

액세스 로그 비활성화

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

콘솔을 이용하여 액세스 로그를 비활성화하려면
  1. https://console.aws.amazon.com/mediapackage/에서 MediaPackage 콘솔을 엽니다.

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

  2. 편집(Edit)을 선택합니다.

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

  4. 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

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

액세스 로그 형식

액세스 로그 파일은 일련의 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" }

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

타임스탬프

요청이 수신된 시간입니다. 이 값은 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)입니다.

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

액세스 로그 읽기

MediaPackage는 액세스 로그를 Amazon CloudWatch Logs에 씁니다. 일반적인 CloudWatch Logs 요금이 적용됩니다. CloudWatch 로그 인사이트를 사용하여 액세스 로그를 읽습니다. CloudWatch 로그 인사이트 사용 방법에 대한 자세한 내용은 AWS CloudWatch Logs 사용 설명서에서 CloudWatch 로그 인사이트를 사용하여 로그 데이터 분석을 참조하세요.

참고

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

예시

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

예 채널의 HTTP 상태 코드 응답을 표시합니다.

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

fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by statusCode
예 채널의 엔드포인트당 요청 수를 가져옵니다.
fields @timestamp, @message | filter channelId like 'my-channel' | stats count() by endpointId
예 자산별 상태 코드를 표시합니다.
fields @timestamp, @message | filter assetArnlike 'my-asset-id' | stats count() by statusCode
예 시간 경과에 따른 패키징 구성의 P99 응답 시간을 가져옵니다.
fields @timestamp, @message | filter packagingConfigArn like 'my-dash-config' | stats pct(processingTime, 99) by bin(5m)