

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

# 문제 해결 및 모니터링
<a name="yield-optimization-troubleshooting"></a>

이 페이지에서는 수율 최적화 성능을 모니터링하고, 일반적인 문제를 진단하고, 구성이 올바르게 작동하는지 확인할 수 있습니다.

## Metrics
<a name="yield-optimization-troubleshooting-metrics"></a>

MediaTailor는 수율 최적화에 대해 다음과 같은 CloudWatch 지표를 게시합니다. 달리 명시되지 않는 한 모든 지표는 `configurationName`차원과 함께 내보내집니다.

### 입찰 요청 지표
<a name="yield-optimization-troubleshooting-metrics-bidrequest"></a>


| 지표 | 설명 | 
| --- | --- | 
| YieldOptimization.BidRequest | 입찰 요청 기회가 식별되면 1로 내보내집니다. | 
| YieldOptimization.BidResponse | 성공적인 입찰 응답이 수신되면 1로 내보내집니다. | 
| YieldOptimization.BidDuration | 입찰에서 요청된 중단 기간(초)으로, 가용 기간에서 기본 광고 기간을 뺀 값에서 계산됩니다. | 
| YieldOptimization.Latency | APS까지의 왕복 지연 시간을 밀리초 단위로 표시합니다. | 
| YieldOptimization.NoBid | APS가 HTTP 204(일치하는 수요 없음)를 반환할 때 1로 내보내집니다. 요청 자체가 유효했습니다. | 
| YieldOptimization.BidRequestThrottled | APS가 HTTP 429(제한됨)를 반환할 때 1로 내보내집니다. APS가 역압을 적용하고 있습니다. 다시 시도하기 전에 다시 시작합니다. | 

### 광고 삽입 지표
<a name="yield-optimization-troubleshooting-metrics-adinsertion"></a>


| 지표 | 설명 | 
| --- | --- | 
| YieldOptimization.AdsInserted | 가용 영역에 삽입된 YO 광고 수입니다. | 
| YieldOptimization.AdsReturned | BidResponse에서 반환된 광고 수(필터링 전). 0보다 큰 경우에만 내보내집니다. | 
| YieldOptimization.FilledDuration | YO 광고로 채워진 기간(ms)입니다. | 
| YieldOptimization.UnfilledDuration | 입찰 요청에서 APS로 전송된 기간(ms)(기회 차이). | 
| YieldOptimization.FillRate | 가용 시간당 채우기 속도: 트랜스코딩된 YO 기간을 미리 채워지지 않은 기간으로 나눈 값입니다. 분자는 트랜스코딩되고 분모는 VAST 기반(범퍼를 빼지 않음)이므로 값이 1.0을 초과할 수 있습니다. | 

### 수익 및 요금 지표
<a name="yield-optimization-troubleshooting-metrics-revenue"></a>


| 지표 | 설명 | 
| --- | --- | 
| YieldOptimization.Revenue | oRTB 입찰 응답의 price 속성에서 얻은 고객의 총 수익입니다. 삽입된 광고의 가격 합계입니다. | 
| YieldOptimization.IndicativeBidRevenue | 모든 RETURNED 입찰(노출당 입찰 가격, 삽입당 입찰 가격 아님)의 압축당 표시 값 합계입니다. 사용 중단 기간 Revenue 동안와 함께 이중 방출되며 대시보드가 전환되면 제거됩니다. 새 대시보드Revenue에를 사용합니다. | 
| YieldOptimization.BidPriceAdsInserted | Yield Optimization에서 삽입한 각 광고의 CPM 가격입니다. 입찰 응답cur(통화) 속성으로 측정됩니다. 고객당 방출되지 않으므로 계정 전체에 적용됩니다. | 
| YieldOptimization.BidPriceAdsReturned | BidResponse에 반환된 각 입찰의 CPM 가격(삽입으로 필터링하기 전). 로 측정됩니다cur. 고객당 방출되지 않으므로 계정 전체에 적용됩니다. | 

### 오류 및 지표 건너뛰기
<a name="yield-optimization-troubleshooting-metrics-error"></a>


| 지표 | 설명 | 
| --- | --- | 
| YieldOptimization.Errors | 연결 오류, 응답 처리 오류 또는 예상치 못한 예외의 경우 1로 내보내집니다. 또한 성공 시 0으로 내보내집니다(SampleCount가 아닌 Sum 사용). | 
| YieldOptimization.Timeouts | APS 요청 시간이 초과되면 1로 내보내집니다. 또한 성공 시 0으로 내보내집니다(SampleCount가 아닌 Sum 사용). | 
| YieldOptimization.BidRequestConfigurationError | 템플릿 또는 입찰 구성이 실패하면(필드 누락, 잘못된 JSON) 1로 내보내집니다. | 
| YieldOptimization.SkipMinUnfilledDurationNotExceeded | 채워지지 않은 기간이 임계값 미만이어서 YO를 건너뛰면 1로 내보내집니다. | 
| YieldOptimization.SkipPersonalizationTimeoutExceeded | 개인화 시간이 충분하지 않아 YO를 건너뛰면 1로 내보내집니다. | 

**중요**  
`YieldOptimization.Errors` 및 `YieldOptimization.Timeouts`는 요청이 성공할 때마다 0으로 내보내집니다. CloudWatch에서 **Sum**(SampleCount 아님)을 사용하여 실제 오류 또는 제한 시간 수를 가져옵니다. `NoBid` 및 `BidRequestThrottled`는에서 계산되지 않습니다`Errors`. 이는 합법적인 비수요 및 역압 조건에 대한 별도의 신호입니다.

## 로그 이벤트
<a name="yield-optimization-troubleshooting-log-events"></a>

수율 최적화는 `MidasMMSService/ads_interaction_log` 로그 그룹에서 이벤트를 생성합니다.


| 이벤트 유형 | 설명 | 
| --- | --- | 
| RAW\_BID\_REQUEST | APS로 전송된 전체 OpenRTB 입찰 요청 JSON입니다. 이를 사용하여 템플릿 보간을 확인합니다. | 
| RAW\_BID\_RESPONSE | 입찰 요금 및 VAST XML을 포함하여 APS의 원시 OpenRTB 입찰 응답입니다. | 
| FILLED\_AVAIL | 모든 광고가 포함된 전체 가용 시간입니다. YO 광고에는 bidId, , bidPrice, 및이 fillMode: "YIELD\_OPTIMIZATION" 포함되어 currency impressionId있습니다seatId. | 

오류 이벤트는 `YieldOptimizationSupport`, `OrtbBidRequestBuilder`, `HttpOrtbRequestSubmitter`및와 같은 로거와 `MidasMMSService/application.log` 함께에서 발생합니다`OrtbResponseProcessor`.

## CloudWatch Insights 쿼리 예제
<a name="yield-optimization-troubleshooting-insights"></a>

### YO 오류 확인
<a name="yield-optimization-troubleshooting-insights-errors"></a>

```
fields @timestamp, message.sessionId, message.message, log.logger, log.level
| filter message.awsAccountId = 'YOUR_ACCOUNT_ID'
  and (log.level = 'ERROR' or log.level = 'WARN')
  and (log.logger like /YieldOptimization/
    or log.logger like /OrtbResponseProcessor/
    or log.logger like /HttpOrtbRequestSubmitter/
    or log.logger like /OrtbBidRequestBuilder/)
| sort @timestamp desc
| limit 100
```

**로그 그룹**: `MidasMMSService/application.log`

### 입찰 요청 수와 응답 수 비교
<a name="yield-optimization-troubleshooting-insights-count"></a>

```
fields @timestamp, sessionId, eventType
| filter awsAccountId = 'YOUR_ACCOUNT_ID'
  and (eventType = 'RAW_BID_REQUEST' or eventType = 'RAW_BID_RESPONSE')
| stats count(*) by eventType
```

**로그 그룹**: `MidasMMSService/ads_interaction_log`

### 채워진 가능 구간에서 YO 광고 찾기
<a name="yield-optimization-troubleshooting-insights-filled"></a>

각 `FILLED_AVAIL` 이벤트에는 `creativeAds` 배열이 포함됩니다. 해당 배열 내의 YO 광고에는 `fillMode: "YIELD_OPTIMIZATION"` , `bidId`, `impressionId`, 및 추가 입찰 메타데이터`bidPrice``seatId`가 포함됩니다`currency`. 이를 사용하여 YO로 채워진 가용 시간, 가용 시간당 삽입된 YO 광고 수, 입찰당 수익 어트리뷰션을 확인할 수 있습니다.

```
fields @timestamp, sessionId, avail.availId, avail.numAds, avail.fillRate, avail.filledDuration
| filter awsAccountId = 'YOUR_ACCOUNT_ID'
  and eventType = 'FILLED_AVAIL'
  and @message like /YIELD_OPTIMIZATION/
| sort @timestamp desc
| limit 50
```

특정 세션에 대한 개별 YO 광고 항목(입찰 ID 및 가격)을 가져오려면:

```
fields @timestamp, sessionId, avail.availId, avail.creativeAds
| filter awsAccountId = 'YOUR_ACCOUNT_ID'
  and eventType = 'FILLED_AVAIL'
  and sessionId = 'YOUR_SESSION_ID'
| sort @timestamp desc
| limit 20
```

결과 `creativeAds` 배열 클라이언트 측에서가 있는 항목을 필터링합니다`fillMode == "YIELD_OPTIMIZATION"`.

**로그 그룹**: `MidasMMSService/ads_interaction_log`

### 해결되지 않은 템플릿 변수 확인
<a name="yield-optimization-troubleshooting-insights-unresolved"></a>

```
fields @timestamp, sessionId, @message
| filter awsAccountId = 'YOUR_ACCOUNT_ID'
  and eventType = 'RAW_BID_REQUEST'
  and @message like /\{[A-Z_]+\}/
| sort @timestamp desc
| limit 20
```

**로그 그룹**: `MidasMMSService/ads_interaction_log`

### YO 지연 시간 및 성공률 측정
<a name="yield-optimization-troubleshooting-insights-latency"></a>

```
fields @timestamp, @message
| filter customerId = 'YOUR_ACCOUNT_ID'
  and (@message like /YieldOptimization/ or @message like /ortb_/)
| limit 10000
```

**로그 그룹**: `MidasMMSService/service_log`

**참고**  
`service_log`는 계정 ID 필드에 `customerId` (가 아님`awsAccountId`)를 사용합니다.

## 수율 리프트 계산
<a name="yield-optimization-troubleshooting-yield-lift"></a>

수율 최적화의 수익 영향을 측정하려면 다음을 사용하여 CloudWatch 대시보드를 생성합니다.

1. **증분 채우기 속도:** 삽입된 광고로 이어지는 YO 기회의 비율을 `Sum(YieldOptimization.AdsInserted) / Sum(YieldOptimization.BidRequest)` 보여줍니다. 또는 가용성별 네이티브 지표`Average(YieldOptimization.FillRate)`에를 사용합니다.

1. **시간당 수익:** 시간 `Sum(YieldOptimization.Revenue)` 경과에 따른는 YO의 총 고객당 수익을 보여줍니다.는 계정 전체의 평균 CPM을 `Sum(YieldOptimization.BidPriceAdsInserted)` 제공합니다.

1. **채워진 기간:**에 `Sum(YieldOptimization.FilledDuration)` 대해 요청된 기간이 실제로 채워진 정도를 `Sum(YieldOptimization.BidDuration)` 보여줍니다.

## 일반적인 문제
<a name="yield-optimization-troubleshooting-common-issues"></a>

### 수율 최적화가 트리거되지 않음
<a name="yield-optimization-troubleshooting-not-triggering"></a>


| 증상 | Check]를 선택합니다 | 해결 방법 | 
| --- | --- | --- | 
| YO 지표가 전혀 없음 | 재생 구성에 YO가 구성되어 있습니까? | 콘솔 또는 API에서 YO를 활성화합니다. | 
| SkipMinUnfilledDurationNotExceeded 방출 | 기본 ADS가 대부분의 휴식 시간을 채우고 있음 | 기본 채우기면 충분함을 낮추MinimumUnfilledDuration거나 수락합니다. | 
| SkipPersonalizationTimeoutExceeded 방출 | 기본 ADS가 너무 느려 YO에 대한 시간이 없습니다. | 기본 ADS 지연 시간을 최적화하거나 개인화 제한 시간 SDC 구성을 확인합니다. | 

### 입찰 요청 실패
<a name="yield-optimization-troubleshooting-bidrequests-failing"></a>


| 증상 | Check]를 선택합니다 | 해결 방법 | 
| --- | --- | --- | 
| BidRequestConfigurationError 지표 | 템플릿에 필수 필드가 누락되었거나 비어 있음 | 특정 오류(예: app.bundle is required)가 application.log 있는지 확인합니다. 템플릿을 수정하거나 플레이어 파라미터가 전송되었는지 확인합니다. | 
| APS의 HTTP 204 | YieldOptimization.NoBid 증분 | APS가 no-bid를 반환했습니다. 오류가 아닙니다. 자리 표시자 값({UPPER\_CASE} 패턴)RAW\_BID\_REQUEST이 있는지 검사하고 번들 및 저장소가 실제 하위 bidfloor인지 확인합니다. | 
| APS의 HTTP 429 | YieldOptimization.BidRequestThrottled 증분 | APS가 제한되고 있습니다. 요청 속도를 취소합니다. 영구적일 경우 APS 지원팀에 문의하여 TPS 한도를 높이세요. | 
| APS의 HTTP 400 | 잘못된 요청 JSON | 에서 APS 오류 메시지를 확인합니다RAW\_BID\_RESPONSE. JSON 구조가 OpenRTB 사양과 일치하는지 확인합니다. | 
| APS의 HTTP 500/503 | APS 서버 오류 또는 오버로드 | 일시적인 문제입니다. YieldOptimization.Errors 모니터링. 영구적일 경우 APS 지원팀에 문의하십시오. | 

### 반환되었지만 삽입되지 않은 광고
<a name="yield-optimization-troubleshooting-not-inserted"></a>


| 증상 | Check]를 선택합니다 | 해결 방법 | 
| --- | --- | --- | 
| AdsReturned > 0이지만 AdsInserted = 0 | 삽입 중 필터링된 광고 | 로그FILLED\_AVAIL에 중복된 크리에이티브, 남은 임계값 초과 또는 광고 변형을 찾을 수 없음(트랜스코딩이 완료되지 않음)이 있는지 확인합니다. | 

## APS 오류 코드 참조
<a name="yield-optimization-troubleshooting-error-codes"></a>


| 코드 | 의미 | 일반적인 원인 | 
| --- | --- | --- | 
| 200 | 입찰 성공 | 올바르게 작동합니다. | 
| 204 | 입찰 없음 | 요청이 유효하지만 사용 가능한 입찰이 없습니다. 이는 템플릿의 오류를 나타내지 않습니다. | 
| 400 | 잘못된 요청 | 잘못된 JSON, OpenRTB 사양당 필수 필드 누락. | 
| 500 | 서버 오류 | APS 내부 문제, 서비스 제한, 제한 시간. | 
| 503 | 서비스 오버로드됨 | APS 역압. 적극적으로 재시도하지 마십시오. | 
| 429 | 병목 현상 발생 | APS가 요청을 수동으로 제한하기 시작했습니다. 영구적일 경우 APS 지원팀에 문의하십시오. | 