MediaTailor イベントフローの問題のトラブルシューティング - AWS Elemental MediaTailor

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

MediaTailor イベントフローの問題のトラブルシューティング

AWS Elemental MediaTailor イベントフローを理解することは、広告挿入の問題をトラブルシューティングするための強力な基盤となります。イベントのシーケンス、タイミング、パターンを分析することで、問題が発生する場所をすばやく特定し、ターゲットを絞ったソリューションを実装できます。

このセクションでは、イベントフロー分析を使用して問題を診断するための実践的なガイダンスを提供します。基本的なイベントフローの概念については、「」を参照してください広告挿入イベントフロー

不完全なイベントフローの特定

不完全なイベントフローは、マニフェストのパーソナライゼーション (MediaTailor がパーソナライズされた広告情報をマニフェストに挿入するプロセス) を成功させる前に、予想される一連のイベントが停止したときに発生します。フローの中断箇所を特定すると、広告挿入の失敗の根本原因を特定するのに役立ちます。

不完全な一般的なフローパターン

イベントフローの障害ポイントが異なると、次のような特定のタイプの問題が示されます。

  • 広告機会の検出後にフローが停止する: MediaTailor が ADS リクエストを実行できないようにする広告マーカーまたはマニフェスト自体に関する問題を示します。ADS 接続、設定、またはタイムアウトの問題は、ADS リクエストの実行後に発生します。

  • ADS リクエスト後にフローが停止する: ADS レスポンスの問題、VAST 解析の問題、クリエイティブ処理の失敗、ADS タイムアウト、接続エラー、リクエストが行われたときにのみ検出された無効な ADS URLs などの設定の問題を提案します。

  • 追跡ビーコンがない: 追跡設定の問題、サーバー側のレポートの問題、またはクライアント側の実装ギャップを示している可能性があります。

不完全なフロー分析のための CloudWatch クエリ

これらの Amazon CloudWatch Logs Insights クエリを使用して、不完全なイベントフローを特定します。必要な分析のタイプに基づいて、適切なロググループに対してこれらのクエリを実行します。

ロググループの選択:

  • MediaTailor/AdDecisionServerInteractions - 広告決定サーバーのインタラクション、広告機会、ADS 関連の障害を分析するクエリに使用します。

  • MediaTailor/TranscodeService - トランスコード問題、クリエイティブ処理の失敗、またはその他の ADS 関連以外の問題が原因で広告が挿入されなかった問題を分析するために使用します。

例 マニフェストのパーソナライゼーションを成功させることなく広告機会を特定する

ロググループ: 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
例 イベントフローの完了率を分析する

ロググループ: 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
例 ビーコンイベントが欠落しているセッションを検索する

ロググループ: MediaTailor/AdDecisionServerInteractions

次のクエリは、avails を満たしているが、対応するビーコンイベントがないセッションを識別します。

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
例 トランスコード関連の広告挿入の失敗を特定する

ロググループ: 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

イベントタイミングの問題の分析

イベントタイミング分析は、パフォーマンスのボトルネックを特定し、広告挿入ワークフローを最適化するのに役立ちます。異常なタイミングパターンは、多くの場合、視聴者のエクスペリエンスに影響する根本的な問題を示します。

パフォーマンスタイミングのしきい値

これらのタイミングしきい値を使用して、潜在的なパフォーマンスの問題を特定します。

  • 合計フロー時間が 5 秒を超える: ビューワーエクスペリエンスに影響を与え、ADS パフォーマンスの問題、オリジンサーバーの問題 (マニフェスト取得タイムアウトなど)、または NAT Gateway、DynamoDB、EC2、またはその他のシステムコンポーネントのインフラストラクチャの問題を含む内部 MediaTailor の問題を示している可能性があります。

  • 2 秒を超える ADS 応答時間: ADS パフォーマンスの問題またはネットワークレイテンシーの問題を示します。

  • 1 秒を超えるマニフェストパーソナライゼーション: クリエイティブ処理の遅延、オリジンサーバーの問題 (マニフェスト取得タイムアウトなど)、または NAT Gateway、DynamoDB、EC2、またはその他のコンポーネントによるインフラストラクチャの制約を含む内部 MediaTailor システムの問題を示す可能性があります。

タイミング分析クエリ

これらのクエリを使用して、イベントタイミングパターンを分析します。

例 イベントフローの合計期間の測定

次のクエリは、イベントフローの合計期間を測定し、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
例 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
例 スローマニフェストのパーソナライゼーションを特定する

次のクエリは、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

一般的なイベントフローの問題と解決策

このセクションでは、頻繁に発生するイベントフローの問題の解決策を、問題のタイプと症状別に整理して提供します。

広告決定サーバーリクエストの失敗

症状: 広告機会の検出後にイベントフローが停止します。ADS リクエストイベントはログに記録されません。

一般的な原因と解決策

  • ADS URL 設定エラー: 再生設定の ADS URL が正しくアクセス可能であることを確認します。広告インタラクションログには、ADS リクエストイベント (MAKING_ADS_REQUEST) が表示されますが、対応する VAST レスポンスは表示されません。多くの場合、 ERROR_UNKNOWN または同様のエラーイベントが伴います。

  • ネットワーク接続の問題: ファイアウォールルールや DNS 解決など、MediaTailor と ADS 間のネットワーク接続を確認します。

  • SSL/TLS 証明書の問題: ADS が信頼できる認証機関からの有効な SSL 証明書を使用していることを確認します。特に Google 広告マネージャーの場合は、AWS サポートに連絡して、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

広告決定サーバーのレスポンスの失敗

症状: 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

マニフェストパーソナライゼーションの失敗

症状: VAST レスポンスは受信されましたが、マニフェストのパーソナライゼーションが失敗するか、広告がスキップされます。

一般的な原因と解決策:

  • クリエイティブトランスコーディングの問題: 広告が で NEW_CREATIVE、挿入前にトランスコーディングする必要があるかどうかを確認します。MediaTailor/TranscodeService ログで MISSING_VARIANTS,や などのエラーイベントを調べることでINTERNAL_ERROR、トランスコードエラーを確認することもできます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

次のクエリでは、各表示の最初の 2 つの広告について、理由やクリエイティブな一意の 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

ビーコンの失敗の追跡

症状: マニフェストのパーソナライゼーションは成功しましたが、追跡ビーコンが欠落または失敗しています。

一般的な原因と解決策

  • クライアント側の実装の問題: ほとんどの追跡ビーコンの問題は、クライアント側の追跡に十分な頻度で追跡 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

イベントフローモニタリングのベストプラクティス

これらのモニタリングプラクティスを実装して、イベントフローの問題をプロアクティブに特定して解決します。

CloudWatch アラームの設定

Amazon CloudWatch アラームを作成して、主要なイベントフローメトリクスをモニタリングします。

  • フロー完了率アラーム: 成功したマニフェストのパーソナライゼーションと広告機会の比率が許容可能なしきい値を下回った場合に警告します。

  • ADS 応答時間アラーム: 平均 ADS 応答時間をモニタリングし、パフォーマンスしきい値を超えたときに警告します。

  • エラー率アラーム: エラーイベントの頻度を追跡し、特定のエラータイプの異常なスパイクを警告します。

定期的なモニタリングクエリ

これらのクエリを定期的に実行して、イベントフローの状態を可視化します。

例 毎日のイベントフローの成功率

次のクエリは、イベントフローの成功率の毎日の概要をイベントタイプ別に示します。

fields @timestamp, eventType | filter @timestamp > datefloor(@timestamp, 1d) | stats count() as total_events by eventType | sort total_events desc
例 時間単位のエラー率の傾向

次のクエリは、エラー率を時間単位で追跡し、傾向のある問題を特定します。

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

パフォーマンス最適化ガイダンス

イベントフロー分析を使用して広告挿入のパフォーマンスを最適化します。

  • ADS 最適化: ADS プロバイダーと協力して応答時間を最適化し、レイテンシーを短縮します。

  • クリエイティブ準備: コンテンツプロファイルに合わせて広告クリエイティブを事前にトランスコードし、処理の遅延を軽減します。

  • 設定チューニング: イベントフロー分析に基づいて、タイムアウト設定、パーソナライゼーションしきい値、およびその他の設定パラメータを調整します。

その他のトラブルシューティングリソース

イベントフロー分析以外のトラブルシューティングガイダンスについては、以下を参照してください。