

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

# MediaTailor 이벤트 흐름 문제 해결
<a name="troubleshooting-event-flow"></a>

 AWS Elemental MediaTailor 이벤트 흐름을 이해하면 광고 삽입 문제를 해결할 수 있는 강력한 기반을 제공합니다. 이벤트의 시퀀스, 타이밍 및 패턴을 분석하면 문제가 발생하는 위치를 빠르게 식별하고 대상 지정된 솔루션을 구현할 수 있습니다.

이 섹션에서는 이벤트 흐름 분석을 사용하여 문제를 진단하기 위한 실제 지침을 제공합니다. 기본 이벤트 흐름 개념을 이해하려면 섹션을 참조하세요[광고 삽입 이벤트 흐름](mediatailor-event-flow.md).

## 불완전한 이벤트 흐름 식별
<a name="identifying-incomplete-flows"></a>

불완전한 이벤트 흐름은 성공적인 매니페스트 개인화(매니페스트에 개인화된 광고 정보를 삽입하는 MediaTailor 프로세스)에 도달하기 전에 예상 이벤트 시퀀스가 중지될 때 발생합니다. 흐름이 중단되는 위치를 식별하면 광고 삽입 실패의 근본 원인을 정확히 파악하는 데 도움이 됩니다.

### 일반적인 불완전한 흐름 패턴
<a name="common-incomplete-flow-patterns"></a>

이벤트 흐름의 여러 장애 지점은 다음과 같은 특정 유형의 문제를 나타냅니다.
+ **광고 기회 감지 후 흐름 중지:** MediaTailor가 ADS 요청을 하지 못하게 하는 광고 마커 또는 매니페스트 자체의 문제를 나타냅니다. ADS 연결, 구성 또는 제한 시간 문제는 ADS 요청이 이루어진 후에 발생합니다.
+ **ADS 요청 후 흐름 중지:** ADS 응답 문제, VAST 구문 분석 문제, 크리에이티브 처리 실패, ADS 제한 시간, 연결 오류 또는 요청 시에만 검색되는 잘못된 ADS URLs과 같은 구성 문제를 제안합니다.
+ **추적 비컨 누락:** 구성 문제 추적, 서버 측 보고 문제 또는 클라이언트 측 구현 격차를 나타낼 수 있습니다.

### 불완전한 흐름 분석을 위한 CloudWatch 쿼리
<a name="cloudwatch-queries-incomplete-flows"></a>

이러한 Amazon CloudWatch Logs Insights 쿼리를 사용하여 불완전한 이벤트 흐름을 식별합니다. 필요한 분석 유형에 따라 적절한 로그 그룹에 대해 이러한 쿼리를 실행합니다.

**로그 그룹 선택:**
+ **MediaTailor/AdDecisionServerInteractions** - 광고 결정 서버 상호 작용, 광고 기회 및 ADS 관련 실패를 분석하는 쿼리에 사용합니다.
+ **MediaTailor/TranscodeService** - 트랜스코딩 문제, 크리에이티브 처리 실패 또는 기타 비 ADS 관련 문제로 인해 광고가 삽입되지 않은 문제를 분석하는 데 사용합니다.

**Example 성공적인 매니페스트 개인화 없이 광고 기회 식별**  
**로그 그룹:** MediaTailor/AdDecisionServerInteractions  
다음 쿼리는 성공적인 매니페스트 개인 맞춤으로 이어지지 않은 광고 기회를 식별합니다.  

```
fields @timestamp, eventType, avail.availId, sessionId
| filter eventType = "AD_MARKER_FOUND"
| stats count() as total_opportunities by avail.availId
| join (
    fields @timestamp, eventType, avail.availId
    | filter eventType = "FILLED_AVAIL"
    | stats count() as successful_fills by avail.availId
) on avail.availId
| where ispresent(total_opportunities) and not ispresent(successful_fills)
| sort total_opportunities desc
```

**Example 이벤트 흐름 완료율 분석**  
**로그 그룹:** MediaTailor/AdDecisionServerInteractions  
다음 쿼리는 다양한 이벤트 유형에서 완료율을 분석합니다.  

```
fields @timestamp, eventType, avail.availId
| filter eventType in ["AD_MARKER_FOUND", "MAKING_ADS_REQUEST", "VAST_RESPONSE", "FILLED_AVAIL", "BEACON_FIRED"]
| stats count() by eventType, avail.availId
| sort avail.availId, eventType
```

**Example 비컨 이벤트가 누락된 세션 찾기**  
**로그 그룹:** MediaTailor/AdDecisionServerInteractions  
다음 쿼리는 가용 시간을 채웠지만 해당 비컨 이벤트가 없는 세션을 식별합니다.  

```
fields @timestamp, eventType, sessionId, avail.availId
| filter eventType = "FILLED_AVAIL"
| stats count() as filled_avails by sessionId
| join (
    fields @timestamp, eventType, sessionId
    | filter eventType = "BEACON_FIRED"
    | stats count() as beacon_events by sessionId
) on sessionId
| where filled_avails > 0 and (not ispresent(beacon_events) or beacon_events = 0)
| sort filled_avails desc
```

**Example 트랜스코딩 관련 광고 삽입 실패 식별**  
**로그 그룹:** MediaTailor/TranscodeService  
다음 쿼리는 성공적인 광고 삽입을 방해하는 트랜스코딩 문제를 식별합니다.  

```
fields @timestamp, eventType, sessionId, requestId
| filter eventType in ["TRANSCODE_IN_PROGRESS", "INTERNAL_ERROR", "MISSING_VARIANTS", "PROFILE_NOT_FOUND"]
| stats count() as transcode_issues by eventType, sessionId
| sort transcode_issues desc
```

## 이벤트 타이밍 문제 분석
<a name="timing-analysis-troubleshooting"></a>

이벤트 타이밍 분석은 성능 병목 현상을 식별하고 광고 삽입 워크플로를 최적화하는 데 도움이 됩니다. 비정상적인 타이밍 패턴은 최종 사용자 경험에 영향을 미치는 근본적인 문제를 나타내는 경우가 많습니다.

### 성능 타이밍 임계값
<a name="timing-thresholds"></a>

이러한 타이밍 임계값을 사용하여 잠재적 성능 문제를 식별합니다.
+ **5초를 초과하는 총 흐름 기간:** 최종 사용자 경험에 영향을 미칠 수 있으며 ADS 성능 문제, 오리진 서버 문제(예: 매니페스트 검색 제한 시간) 또는 NAT 게이트웨이, DynamoDB, EC2 또는 기타 시스템 구성 요소의 인프라 문제를 포함한 내부 MediaTailor 문제를 나타낼 수 있습니다.
+ **2초를 초과하는 ADS 응답 시간:** ADS 성능 문제 또는 네트워크 지연 시간 문제를 제안합니다.
+ **1초를 초과하는 매니페스트 개인화:** NAT Gateway, DynamoDB, EC2 또는 기타 구성 요소의 인프라 제약을 포함한 크리에이티브 처리 지연, 오리진 서버 문제(매니페스트 검색 제한 시간 등) 또는 내부 MediaTailor 시스템 문제를 나타낼 수 있습니다.

### 타이밍 분석 쿼리
<a name="timing-analysis-queries"></a>

이러한 쿼리를 사용하여 이벤트 타이밍 패턴을 분석합니다.

**Example 총 이벤트 흐름 기간 측정**  
다음 쿼리는 이벤트 흐름의 총 지속 시간을 측정하고 5초를 초과하는 시간을 식별합니다.  

```
fields @timestamp, eventType, avail.availId
| filter avail.availId = "your-avail-id"
| filter eventType in ["AD_MARKER_FOUND", "FILLED_AVAIL"]
| sort @timestamp asc
| stats min(@timestamp) as start_time, max(@timestamp) as end_time by avail.availId
| eval duration_seconds = (end_time - start_time) / 1000
| where duration_seconds > 5
```

**Example ADS 응답 타이밍 분석**  
다음 쿼리는 ADS 응답 시간을 분석하고 2초를 초과하는 시간을 식별합니다.  

```
fields @timestamp, eventType, avail.availId
| filter avail.availId = "your-avail-id"
| filter eventType in ["MAKING_ADS_REQUEST", "VAST_RESPONSE"]
| sort @timestamp asc
| stats min(@timestamp) as request_time, max(@timestamp) as response_time by avail.availId
| eval ads_response_seconds = (response_time - request_time) / 1000
| where ads_response_seconds > 2
```

**Example 느린 매니페스트 개인화 식별**  
다음 쿼리는 1초 이상 걸리는 매니페스트 개인화 프로세스를 식별합니다.  

```
fields @timestamp, eventType, avail.availId
| filter avail.availId = "your-avail-id"
| filter eventType in ["VAST_RESPONSE", "FILLED_AVAIL"]
| sort @timestamp asc
| stats min(@timestamp) as response_time, max(@timestamp) as filled_time by avail.availId
| eval personalization_seconds = (filled_time - response_time) / 1000
| where personalization_seconds > 1
```

## 일반적인 이벤트 흐름 문제 및 해결 방법
<a name="common-flow-problems"></a>

이 섹션에서는 자주 발생하는 이벤트 흐름 문제에 대한 솔루션을 문제 유형 및 증상별로 정리하여 제공합니다.

### 광고 결정 서버 요청 실패
<a name="ads-request-failures"></a>

**증상:** 광고 기회 감지 후 이벤트 흐름이 중지됩니다. ADS 요청 이벤트가 로깅되지 않았습니다.

**일반적인 원인 및 해결 방법**
+ **ADS URL 구성 오류:** 재생 구성의 ADS URL이 올바르고 액세스 가능한지 확인합니다. 광고 상호 작용 로그에는 ADS 요청 이벤트(`MAKING_ADS_REQUEST`)가 표시되지만 해당하는 VAST 응답은 표시되지 않으며, 종종 ` ERROR_UNKNOWN `또는 유사한 오류 이벤트가 수반됩니다.
+ **네트워크 연결 문제:** 방화벽 규칙 및 DNS 해결을 포함하여 MediaTailor와 ADS 간의 네트워크 연결을 확인합니다.
+ **SSL/TLS 인증서 문제:** ADS가 신뢰할 수 있는 인증 기관의 유효한 SSL 인증서를 사용하는지 확인합니다. 특히 Google Ad Manager의 경우 [AWS Support](https://aws.amazon.com/premiumsupport/)에 문의하여 Google의 SSL 인증서를 수락하는 구성 플래그를 활성화해야 할 수 있습니다.

**진단 쿼리**

다음 쿼리는 이벤트 시퀀스를 추적하여 ADS 요청 실패를 진단하는 데 도움이 됩니다.

```
fields @timestamp, eventType, sessionId
| filter sessionId = "your-session-id"
| filter eventType in ["AD_MARKER_FOUND", "MAKING_ADS_REQUEST", "ERROR_ADS_IO", "ERROR_UNKNOWN_HOST"]
| sort @timestamp asc
```

### 광고 결정 서버 응답 실패
<a name="ads-response-failures"></a>

**증상:** ADS 요청이 성공했지만 MediaTailor가 응답을 받지 못하거나 구문 분석 오류가 발생합니다.

**일반적인 원인 및 해결 방법**
+ **잘못된 VAST 형식:** VAST 사양 표준에 따라 ADS VAST 응답을 검증합니다.
+ **ADS 제한 시간 문제:** ADS 제한 시간 설정을 늘리거나 ADS 응답 시간을 최적화합니다.
+ **빈 광고 인벤토리:** ADS 구성에서 광고 인벤토리 가용성 및 대상 지정 기준을 확인합니다.

**진단 쿼리**

다음 쿼리는 요청 및 응답 이벤트를 검사하여 ADS 응답 실패를 진단하는 데 도움이 됩니다.

```
fields @timestamp, eventType, sessionId
| filter sessionId = "your-session-id"
| filter eventType in ["MAKING_ADS_REQUEST", "VAST_RESPONSE", "EMPTY_VAST_RESPONSE", "ERROR_ADS_RESPONSE_PARSE", "ERROR_ADS_TIMEOUT"]
| sort @timestamp asc
```

### 매니페스트 개인화 실패
<a name="manifest-personalization-failures"></a>

**증상:** VAST 응답을 수신했지만 매니페스트 개인 맞춤이 실패하거나 광고를 건너뜁니다.

**일반적인 원인 및 해결 방법:**
+ **크리에이티브 트랜스코딩 문제:** 광고가 삽입 전에 ` NEW_CREATIVE`트랜스코딩이 필요한 인지 확인합니다. MediaTailor/TranscodeService 로그에서 `INTERNAL_ERROR` `MISSING_VARIANTS,` 또는와 같은 오류 이벤트를 검사하여 트랜스코딩 오류를 확인할 수도 있습니다`PROFILE_NOT_FOUND`.
+ **기간 불일치 문제:** 광고 기간이 사용 가능한 광고 중단 기간 내에 맞는지 확인합니다.
+ **개인화 임계값 문제:** 재생 구성에서 개인화 임계값 설정을 검토합니다.

**진단 쿼리**

다음 쿼리는 VAST 응답과 채워진 공간을 검사하여 매니페스트 개인화 실패를 진단하는 데 도움이 됩니다.

```
fields @timestamp, eventType, sessionId, skippedAds
| filter sessionId = "your-session-id"
| filter eventType in ["VAST_RESPONSE", "FILLED_AVAIL", "WARNING_NO_ADVERTISEMENTS"]
| sort @timestamp asc
```

**건너뛴 광고 이유에 대한 쿼리**

다음 쿼리는 광고를 건너뛰는 이유에 대한 자세한 정보를 제공합니다.

```
fields @timestamp, eventType, sessionId, skippedAds.reason, skippedAds.creativeUniqueId
| filter sessionId = "your-session-id"
| filter eventType = "WARNING_NO_ADVERTISEMENTS" or ispresent(skippedAds)
| sort @timestamp asc
```

**건너뛴 광고 이유 및 창의적인 고유 IDs 대한 쿼리**

다음 쿼리는 각 가용 구간의 처음 두 광고에 대한 이유와 창의적인 고유 IDs를 포함하여 건너뛴 자세한 광고 정보를 제공합니다.

```
fields @timestamp, eventType
| filter sessionId = "your-session-id"
| filter eventType = "FILLED_AVAIL"
| fields avail.skippedAds.0.vastDuration as SkippedDur_Ad0, avail.skippedAds.0.skippedReason as Ad0_SkipReason, avail.skippedAds.0.creativeUniqueId as SkippedCreative0_UID
| fields avail.skippedAds.1.vastDuration as SkippedDur_Ad1, avail.skippedAds.1.skippedReason as Ad1_SkipReason, avail.skippedAds.1.creativeUniqueId as SkippedCreative1_UID
| sort @timestamp desc
```

### 비컨 실패 추적
<a name="tracking-beacon-failures"></a>

**증상:** 매니페스트 개인화는 성공했지만 비컨 추적은 누락되거나 실패했습니다.

**일반적인 원인 및 해결 방법**
+ **클라이언트 측 구현 문제:** 대부분의 추적 비컨 문제는 클라이언트 측 추적에 충분한 빈도로 추적 URLs 폴링하지 않는 것과 같은 클라이언트 측 구현 문제 또는 플레이어별 비컨 실행 로직 문제에서 비롯됩니다.
+ **URL 접근성 문제 추적:** VAST 응답의 추적 URLs에 액세스할 수 있는지 확인하고 적절한 응답을 반환합니다. URLs 연결할 수 없거나 MediaTailor에서 성공적인 추적 응답 전송을 방해하는 내부 문제가 발생할 때 문제가 발생할 수 있습니다.
+ **플레이어 세그먼트 요청 문제:** 클라이언트 플레이어가 실제로 세그먼트를 요청하지 않으면 명백한 추적 비컨 오류가 발생할 수 있습니다. 이로 인해 비컨이 전송되지 않고 추적 실패로 표시되지만 실제로는 비컨 문제가 아닌 플레이어 구현 문제입니다.

**진단 쿼리**

다음 쿼리는 채워진 가용 시간 및 비컨 이벤트를 검사하여 비컨 실패 추적을 진단하는 데 도움이 됩니다.

```
fields @timestamp, eventType, sessionId
| filter sessionId = "your-session-id"
| filter eventType in ["FILLED_AVAIL", "BEACON_FIRED", "ERROR_FIRING_BEACON_FAILED"]
| sort @timestamp asc
```

## 이벤트 흐름 모니터링 모범 사례
<a name="event-flow-monitoring-best-practices"></a>

이러한 모니터링 관행을 구현하여 이벤트 흐름 문제를 사전에 식별하고 해결합니다.

### CloudWatch 경보 설정
<a name="cloudwatch-alarms-setup"></a>

Amazon CloudWatch 경보를 생성하여 주요 이벤트 흐름 지표를 모니터링합니다.
+ **흐름 완료율 경보:** 광고 기회 대비 성공적인 매니페스트 개인화 비율이 허용 가능한 임계값 아래로 떨어지면 경고합니다.
+ **ADS 응답 시간 경보:** 평균 ADS 응답 시간을 모니터링하고 성능 임계값을 초과할 때 알립니다.
+ **오류율 경보:** 오류 이벤트 빈도를 추적하고 특정 오류 유형의 비정상적인 스파이크에 대해 경고합니다.

### 정기 모니터링 쿼리
<a name="regular-monitoring-queries"></a>

이러한 쿼리를 정기적으로 실행하여 이벤트 흐름 상태에 대한 가시성을 유지합니다.

**Example 일일 이벤트 흐름 성공률**  
다음 쿼리는 이벤트 유형별 이벤트 흐름 성공률에 대한 일일 개요를 제공합니다.  

```
fields @timestamp, eventType
| filter @timestamp > datefloor(@timestamp, 1d)
| stats count() as total_events by eventType
| sort total_events desc
```

**Example 시간당 오류율 추세**  
다음 쿼리는 시간별 오류율을 추적하여 유행하는 문제를 식별합니다.  

```
fields @timestamp, eventType
| filter eventType like /ERROR_/
| stats count() as error_count by datefloor(@timestamp, 1h) as hour
| sort hour desc
```

### 성능 최적화 지침
<a name="performance-optimization-guidance"></a>

이벤트 흐름 분석을 사용하여 광고 삽입 성능을 최적화합니다.
+ **ADS 최적화:** ADS 공급자와 협력하여 응답 시간을 최적화하고 지연 시간을 줄입니다.
+ **크리에이티브 준비:** 콘텐츠 프로필과 일치하고 처리 지연을 줄이기 위해 광고 크리에이티브를 사전 트랜스코딩합니다.
+ **구성 튜닝:** 이벤트 흐름 분석을 기반으로 제한 시간 설정, 개인화 임계값 및 기타 구성 파라미터를 조정합니다.

## 추가 문제 해결 리소스
<a name="event-flow-troubleshooting-next-steps"></a>

이벤트 흐름 분석 이외의 추가 문제 해결 지침:
+ 자세한 로그 형식 정보 및 기술 사양은 섹션을 참조하세요[로그 보기](monitoring-through-logs.md).
+ 일반적인 광고 삽입 문제의 포괄적인 문제 해결은 섹션을 참조하세요[일반적인 문제 해결](monitoring-and-troubleshooting.md#troubleshooting-common-issues).
+ 설정 지침 모니터링 및 알림은 섹션을 참조하세요[Amazon CloudWatch 지표 AWS Elemental MediaTailor 를 사용한 모니터링](monitoring-cloudwatch-metrics.md).
+ 디버그 로깅 절차는 섹션을 참조하세요[디버그 로그 생성](debug-log-mode.md).